[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『worksheetのformにフォルダをdragdropでファイル名取得』(itomic)
wroksheetに貼り付けた、Microsoft Listview Controlに、エクスプローラから該当フォルダをdragdropしてフォルダ以下のファイルパスを取得したいのですが。
ネットで調べ下記のコードを該当シートのモジュールに貼り付けてみたのですが、ステップイン(F8)は全く無反応で、実行(F5)でもマクロのリストに表示されません。
(下記コードはやりたいこととはずれていますが、dragdropの反応を確認する為)
Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, _
Effect As Long, Button As Integer, _
Shift As Integer, x As Single, y As Single)
Dim i As Long With Me AppActivate Me.Caption .ListView1.ListItems.Clear If Data.Files.Count < 1 Then Exit Sub For i = 1 To Data.Files.Count If InStrRev(Data.Files(i), "xls") > 0 Then Workbooks.Open (Data.Files(i)) Else MsgBox "Excelの標準ファイルではありません。", vbCritical End If Next i End With End Sub
詳しくは忘れてしまったのですが...エクセル2003だったか2007で作動していたものが2013で実行したら動かないという話から、スタートした話なのですがそれが関係しているのでしょうか?
もうひとつ気になるのが、dragdropを調べているときに、Microsoft Listview Control6.0(SP4)を使用すると記載されているページが多くあったのですが、私の環境では Microsoft Listview Control6.0 なのですが(SP4ではない)、関係あるのでしょうか?
よろしくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
Windows7、Excel2013、Microsoft Listview Control6.0 の環境で 上記のコードで動きましたが(もちろんオブジェクト名は異なりますが)、 オブジェクトをダブルクリックしたところで、VBE のイベント選択(下のサイトの2、4 のステップ)の部分にコードを書いても動かないでしょうか。 http://excelvba.pc-users.net/fol4/4_5.html (Mook) 2014/08/10(日) 18:12
ListViewコントロールのOleDropmodeというプロパティは、1(ccOLEDropManual)に設定されていますか?
これ、既定値が0なので、ご自分で設定しなければ ドロップ操作が拾えませんよ!!
(ichinose@明日、晴れるかなあ) 2014/08/12(火) 08:49
あら、そうなんですか? 何もいじらないで動いたのですけれど、なぜかなぁ・・・。 環境によって異なるのでしょうか。 (Mook) 2014/08/12(火) 09:19
Excel2010 Win7で確認しました。
シートに貼り付けた場合、ユーザーフォームでの場合、共に OleDropmodeというプロパティが、1(ccOLEDropManual)に設定されていないと OLEDragDropイベントが発生しませんでした。
尚、itomicさんが提示されたコードで OleDropmodeというプロパティが、0でも
Excel本体にExcelブックがドロップされたと解釈して、対象ブックは、開きます。 しかし、コードの制御を受けていないので拡張子がtxtでもxlsmでもcsvでも開いてしまいます。
私は、以前どなたかのご質問でこのListViewコントロールを使ったドラッグ&ドロップの操作を 拾う投稿があった際に試してみた程度(その時は ユーザーフォームでした)で仕事では使ったことがないのですが、今回試してみて気になったのは、シートに貼り付けた場合、 ListViewコントロールのオブジェクト名の既定名がListView41と命名されることです (ユーザーフォームでは、ListView1と命名されるのに・・・)。
いづれもSP4とは、記述されていません。
気が付いたことを記述しました。
(ichinose@明日、晴れるかなあ) 2014/08/13(水) 09:08
Excel上のListViewにデジカメ写真ファイルをフォルダからドラッグ&ドロップしてシートに貼り付けることができています。さらに応用して、Outlookのメールの添付写真を直接ドラッグ&ドロップしてみたのですが、
「Data.Files.Count」を含む行が黄色くなって、ダイアログのデバッグボタンを押すと、
「実行時エラー 461
Specified format doesn't match for of data」
というメッセージが表示されてしまいます。
通常のフォルダからドロップされた写真だけでなく、業務で使用するメール(当方の場合Outlook)に添付された写真も同様に貼り付け処理できるようにしたいのですが、どうしたら可能でしょうか?
現在出来ているのは、下記のサイトの「回答No.5」のコードをそのまま使っています。
http://oshiete.goo.ne.jp/qa/7167712.html
よろしくお願いします。
(pyon-yon) 2015/06/28(日) 07:30
一旦添付ファイルを保存してから保存したものをドラッグ&ドロップではだめですか?
http://outlookvba.blogspot.jp/2011/11/step4.html
なお、質問は他人のスレッドに書き込むのではなく自分でスレッドを立ち下げるようにしましょう。 そして、関係あるスレッドはリンクを張るようにしましょう。 (カリーニン) 2015/06/28(日) 08:03
再掲します。
>なお、質問は他人のスレッドに書き込むのではなく自分でスレッドを立ち下げるようにしましょう。 >そして、関係あるスレッドはリンクを張るようにしましょう。 (カリーニン) 2015/06/28(日) 23:38
エラーが出るのは、No.5の方のレスの
>対応していないファイルをD&Dしたりするとエラーになりますがあしからず。
のとおりだと思います。 「ごみ箱」や「コンピュータ」のアイコンをListViewにドラッグ&ドロップした 場合と同じく、見た目はファイルやフォルダに見えるけど、内部的にはそうでない、 ということなのだと思います。
これを無理やりListViewで受け付けさせる方法はわかりません。 Outlookの添付ファイルは、いったんフォルダ等に保存してエクセルに挿入する、 ワード上にドラッグ&ドロップし、更にワードからエクセル上にドラッグ&ドロップ する、などの方法でエクセルに取り込むことができます。
Outlookから直接エクセルにドラッグ&ドロップしてエクセルに取り込む、という 方法はあるのかもしれませんが、今まで見たことがありません。
なぜOutlookから直接エクセルにドラッグ&ドロップしてエクセルに取り込むことに 拘るのか理由がわかりません。 (カリーニン) 2015/06/29(月) 01:02
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.