ドラッグ&ドロップでファイルパスを取得

f:id:Infoment:20190428211418p:plain

先日、使用したListViewコントロールには、一つ面白い使い方がある。
プロパティにあるOLEDropModeを

1-ccOLEDropManual

にすることで、ここにファイルをドロップできるようになるのだ。

f:id:Infoment:20190428210134p:plain

これを利用すれば、ダイアログボックスを開いてファイルを選択するのではなく、ファイルをドラッグ&ドロップして処理させることも可能だ。
例えば、このようなユーザーフォームを準備する。
f:id:Infoment:20190428210526p:plain

次いで、ListViewコントロールのOLEDragDropイベントを設定する。
今回は単純に、ドラッグ&ドロップしたファイルのフルパスを、イミディエイト
ウィンドウに表示させている。

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
        For i = 1 To Data.Files.Count
            Debug.Print Data.Files(i)
        Next
End Sub

f:id:Infoment:20190428211116p:plain

f:id:Infoment:20190428211706p:plain

この「摘まんで放り込むだけ」という動作は、直感的な理解が容易であるため、
一度実演すれば大抵の人が理解してくれる。
ということで、個人的には結構お世話になっています。

参考まで。