昔誰かが作ったExcelでファイルを選択するダイアログをdll読み込んで表示してるコードをメンテしたんだけど…VBAにあるメソッドでできるよね?って思って…そら、できるわなという結論に。
他にオプションとかあるかもだけど、ポイントはシンプルにこんな感じ。
- Application.GetOpenFilename()メソッドを使用する
で、コードはこんな感じ。
' 変数を定義する
Dim location As String
Dim types As String
' フィルターを決めとく
types = "Microsoft Excelブック(*.xlsx),*.xlsx,すべて(*.*),*.*"
' ファイル選択ダイアログを表示する
location = Application.GetOpenFilename(types)
If location <> "False" Then
' 開くボタンをクリックしたとき("False"以外)は選択したファイルのパスを表示する
MsgBox location
Else
' キャンセルボタンをクリックしたときは素直にキャンセルしたって表示する
MsgBox "キャンセルしました"
End If
実行したらこんな感じでファイル選択ダイアログが開く。
開くボタンをクリックしたら、ファイルのパスを表示するようなダイアログが出てきた。
キャンセルボタンをクリックしたら、キャンセルしたって表示するようなダイアログが出てきた。
ちなみに今回フィルターはExcelファイルと全部のファイルを表示するような設定をしたけど、Excelファイル(選択肢は”Microsoft Excelブック(*.xlsx)”)から全部のファイル(選択肢は”すべて(*.*)”)へ変更してみると…
ファイル選択ダイアログの真ん中にあるファイルの表示欄がフィルターどおり全部のファイルが表示された。
んまま、明日への自分へのメモってことで。




