VBA ダイアログボックスでファイルを開く(GetOpenFilename)



Variant = Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
ダイアログボックスを表示してユーザーに選ばせて任意のExcelブック等のファイルを開く時には Application.GetOpenFilenameメソッドを使用します。

名前 説明 備考
FileFilter ファイルの候補を指定する文字列 省略→すべてのファイル
FilterIndex FileFilterに複数指定した場合に使用 省略→最初のFilter
Title ダイアログボックスのタイトル 省略→"ファイルを開く"
ButtonText MAC用 省略可
MultiSelect 複数のファイルを選択可否 省略→False(不可)
引数一覧


例)FileFilterを"Excel ファイル"で拡張子"*.xls*"で指定
Sub SampleFileOpen()
    Dim fileOpen As Variant
    Dim wbOpen As Workbook
    
    fileOpen = Application.GetOpenFilename("Excel ファイル (*.xls*),*.xls*")
     
    'キャンセルボタンを押した場合の処理
    If fileOpen = "False" Then
    Exit Sub
    End If
     
    'ファイルを開く
    Workbooks.Open (fileOpen)
    
    '変数に入れてみる
    Set wbOpen = Workbooks(Dir(fileOpen, vbNormal))
    MsgBox wbOpen.Name

End Sub

キャンセルボタンを押した場合はApplication.GetOpenFilenameの戻り値が"False"を返すのでそこを利用してExit Subで 処理を逃がしています。

変数に入れる処理はDir関数を使って fileOpenのファイルパス+ファイル名からファイル名のみを取得しています。


読み取り専用で開く場合は
    Workbooks.Open (fileOpen), ReadOnly:=True
とします。
参照:Workbooks.Openメソッド

引数イメージ