FileDialogに関する情報が少ないので、健忘録のために。
設定が必要そうなのは、ほぼInitialFileNameとFiltersの2つ。
InitialViewと、ButtonNameは私の環境では無視されました。
Sub TestFileDialog() Dim myStr As String With Application.FileDialog(msoFileDialogFilePicker) '複数選択可能かを設定 .AllowMultiSelect = False 'ファイル ダイアログ ボックスのタイトル設定 .Title = "FileDialogTest" '表示される初期パスまたはファイル名を設定 .InitialFileName = ActiveWorkbook.Path '初期ビューを設定(バージョンによって無視される) .InitialView = msoFileDialogViewWebView 'ファイル フィルタのコレクション追加 With .Filters .Clear .Add "Excel Files", "*.xls;*.xlsx;*.xlsm" .Add "All Files", "*.*" End With 'Showを宣言した所でダイアログが開かれる。戻り値は以下の通り 'ファイル、フォルダが選択 → True 'キャンセルを押された → False If .Show = True Then myStr = .SelectedItems(1) '選択されたファイルの数をカウント Debug.Print .SelectedItems.Count Else myStr = "" End If End With Debug.Print myStr End Sub
ややこしいのは、Filtersの設定。
自分の設定したフィルタを表示させたい場合は、いったんclearを使ってから、addで足していけばいい。
showメソッドでダイアログが表示されるので、設定はその前に行う。
Office TANAKA - Excel VBA Tips[フォルダを選択するダイアログ]
FileDialogを使う方法の他、SHellやAPIを使う方法が紹介。FileDialogが一番シンプルでいいが、Excel2000までは使えない。Excel2002以降は、FileDialogがベストチョイスか。
FileDialog オブジェクトの使用
OfficeXPから導入されたFileDialogのリファレンス
MsoFileDialogView 列挙型 (Microsoft.Office.Core)
FileDialog.InitialViewのメンバについて説明あり。
Office TANAKA - Excel VBA Tips[3種類の[ファイルを開く]ダイアログボックス]
FileDialogについての丁寧な説明