@ポケじゃらし

音楽ゲームとかボーカロイドとか

【ExcelVBA】FileDialogを活用してファイル操作をもっと便利に

どうも、じゃらしです。

今回もExcelVBAネタです。

以前取り上げた「FileSystemObject」に関連する内容です。
twitpokej.hatenablog.com
twitpokej.hatenablog.com

ファイルのパスを指定する際、変数にパスを直接コーディングしていました。
ですが、ファイルダイアログで指定できたらいいのに、と思う場面ありませんか。(こんなの↓)
f:id:twitpokej:20200205003150p:plain

そんな時は、ExcelVBAの「FileDialog」を使うことで実現できます。

以下サンプルコード

Sub test()
  Dim fso As New FileSystemObject
  
  'ファイルダイアログを表示する
  With Application.FileDialog(msoFileDialogFilePicker)
  
    If .Show Then
      Dim hoge As Variant
      
      '選択したファイル1つ1つに対して処理を行う
      For Each hoge In .SelectedItems
        Debug.Print fso.GetFile(hoge).Name
      Next
    End If
  End With
  
End Sub

ファイル選択中
f:id:twitpokej:20200205003439p:plain

実行結果
f:id:twitpokej:20200205003529p:plain

選択したファイル名を表示してくれます。

ちなみに、ファイルダイアログ上で複数選択した場合にも対応しています。
「FileDialog」で選択したアイテムのパスが配列「SelectedItems」に格納されているので、For Each文を使えば1つ1つに対して処理を行うこともできます。

複数ファイル選択中
f:id:twitpokej:20200205004227p:plain

実行結果
f:id:twitpokej:20200205004245p:plain

以上、それではまた。