【本日のミッション】
エクセル VBAのListView の OLEDropMode の機能を解明せよ。
ミッションの概要
エクセル VBAのListView の OLEDropMode の機能を解明せよ、というのが今回のミッションです。
プロシージャ
今回のサンプル UserForm と ListView に下記コードを設定し、OLEDropMode の動作を確認します。
(その他のコードの内容につきましては、エクセル VBA ListViewにドラッグ&ドロップでファイルパスを取得(Excel VBA)をご参照ください。
Private Sub UserForm_Initialize() With ListView1 '■プロパティ設定 .FullRowSelect = True '行全体の選択 .Gridlines = True '行列グリッド線の表示 .LabelEdit = lvwManual 'ラベル編集不可 .OLEDropMode = ccOLEDropManual 'ファイルドロップ処理を行う ’ .OLEDropMode = ccOLEDropNone 'ファイルドロップ処理を行わない .View = lvwReport '表示形式 '■列見出しの名前・列幅の設定 .ColumnHeaders.Add , "key1", "ファイルパス", 350, lvwColumnLeft End With End Sub 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 'カウンター Dim fileCount As Long 'ファイル数 With ListView1 '■既存ファイル名のクリア If .ListItems.Count > 0 Then .ListItems.Clear End If '■ファイル数の取得 fileCount = Data.Files.Count '■ドラッグ&ドロップしたファイルパスを順にリスト化 For i = 1 To fileCount .ListItems.Add = Data.Files(i) 'ファイルパス Next i End With End Sub
OLEDropModeプロパティ
ファイルドロップ処理を行うか、行わないかを指定します。
ccOLEDropManual
ファイルをドロップするとListViewオブジェクトの「Private Sub ListView1_OLEDragDrop」に記述した処理を行います。
今回「Private Sub ListView1_OLEDragDrop」では、既存ファイル名のクリアとファイルパスのリスト化の処理を行っています。
ccOLEDropNone
ファイルをドロップしても「Private Sub ListView1_OLEDragDrop」に記述した処理は行われず、ファイルが開きます。
プロパティウィンドウでの設定方法
OLEDropModeプロパティはプロシージャに記述する以外に、プロパティウィンドウでも設定が可能です。
対象となるListViewを選択した状態で、プロパティウィンドウ(表示されていない場合は、[F4]キーで表示できます。)で OLEDropMode を「ccOLEDropManual」または「ccOLEDropNone」にします。
【参考】
VBA(マクロ)作成の前、リボンに開発タブを表示させる(Excel VBA)
ユーザーフォームの作成方法 準備(Excel VBA)
ユーザーフォームのオブジェクトの名前を「UserForm1」から変更する方法(Excel VBA)
ユーザーフォームの上のバー(タイトルバー)の名前を「UserForm1」から変更する(Excel VBA)
ユーザーフォームのオブジェクトウィンドウとコードウィンドウを表示切替させる方法(Excel VBA)
「オブジェクト名が不正です」を出さないようにユーザーフォームオブジェクト名を命名規則に従って変更(Excel VBA)
エクセルファイルが開いた時にユーザーフォームを表示させる方法(Excel VBA)
エクセル フォームのラベルのテキストを縦書きにする方法(Excel VBA)
エクセル VBA フォーム ツールボックスにListViewコントロールを追加(Excel VBA)
エクセル VBA フォーム「Microsoft ListView Control」が出てこない原因 (Excel VBA)
エクセル VBA ListViewにドラッグ&ドロップでファイルパスを取得(Excel VBA)
エクセル VBA ListViewにスクロールバーを表示させる(Excel VBA)
エクセル VBA ListView の FullRowSelect プロパティとは(Excel VBA)
エクセル VBA ListView の Gridlines プロパティとは(Excel VBA)
エクセル VBA ListView の LabelEdit プロパティとは(Excel VBA)
エクセル VBA ListView の OLEDropMode プロパティとは(Excel VBA)