読者です 読者をやめる 読者になる 読者になる

FileDialogの設定方法

VBA プログラミング

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についての丁寧な説明