はじめての質問です。
過不足あるかも知れず恐縮ですが、よろしくお願いしますm(_ _)m
前提
Excel VBA で、Listview を使って DragDrop で csvファイルのパスを取得するマクロを組んでいます。
Listview にファイルをドロップすると、こちらで定義した OLEDragDrop の処理終了後に、ドロップした csvファイルがExcelで開かれてしまいます。
実現したいこと
いちいち手で閉じればいいと言えばそうなのですが、可能であれば開かないようにしたいです。
該当のソースコード
ThisWorkBookのマクロ
VBA
1Private Sub Workbook_Open() 2 3 UserForm1.Show vbModeless 4 5End Sub
UserForm1のマクロ(処理順に並べ替えています)
VBA
1Private Sub UserForm_Initialize() 2 Application.Visible = False 3 lblProgress.Width = 0 4End Sub 5 6Private Sub LV1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single) 7 8 Dim i As Long 9 Dim ii As Long 10 Dim FPath As String 11 Dim ret As String 12 Dim ShtNM As String 13 Dim ShtCnt As Long 14 15 'ドロップされたファイルパスの取得 16 For i = 1 To Data.Files.Count 17 FPath = Data.Files(i) 18 Next 19 20 '拡張子確認 21 ii = InStr(FPath, ".") 22 23 If Mid(FPath, ii + 1, Len(FPath) - ii) <> "csv" Then 24 ret = MsgBox("CSVファイルのみ選択可能です。", vbOKOnly, "ファイル選択エラー") 25 Else 26 '取込用シート作成 27 ShtCnt = ThisWorkbook.Sheets("count").Cells(1, 1).Value 28 29 ThisWorkbook.Sheets("雛形").Copy After:=Sheets(Sheets.Count) 30 ShtNM = Format(Now(), "yy年m月") & "_" & ShtCnt 31 ActiveSheet.Name = ShtNM 32 33 If setCSVdata(FPath) Then 34 35 Application.Visible = True 36 Me.Hide 37 Sheets(ShtNM).PrintOut Preview:=True 38 39 ret = MsgBox("シートを保存しますか?", vbYesNo, "保存確認") 40 41 Application.DisplayAlerts = False 42 43 If ret = vbNo Then 44 ActiveSheet.Delete 45 End If 46 47 Application.DisplayAlerts = True 48 End If 49 End If 50 51 Unload Me 52 53End Sub 54 55Function setCSVdata(pass As String) As Boolean 56 57 setCSVdata = False 58 59 ' 指定されたファイルからCSVデータを読込み、転記する処理です。 60 ' Line Input で読込み処理します。 61 ' この処理中はCSVファイルは開かないので、コードは省略。 62 63 setCSVdata = True 64 65End Function 66 67Private Sub UserForm_Terminate() 68 Application.Visible = True 69End Sub
試したこと
1.
ListView のプロパティを確認しました。
・OLEDragMode …0 - ccOLEDragManual
・OLEDropMode …0 - ccOLEDropManual
通常はこれで、イベントに記述した以外の動作はしないという認識でいます。
2.
CSVファイルが開いてしまうタイミングを調査しました。ユーザーフォームのTerminate後でした(以降は何の処理も記述していません)。
どちらかというと根本的な Excel の仕様の問題かと思い、「VBA ListView ファイルが開いてしまう」などで検索しましたが、求める情報が見つけられませんでした。
補足情報(FW/ツールのバージョンなど)
Excel 2019(32bit, ver.2204) / Windows 10(64bit)

回答1件
あなたの回答
tips
プレビュー