Variant = Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
ダイアログボックスを表示してユーザーに選ばせて任意のExcelブック等のファイルを開く時には Application.GetOpenFilenameメソッドを使用します。
例)FileFilterを"Excel ファイル"で拡張子"*.xls*"で指定
ダイアログボックスを表示してユーザーに選ばせて任意の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メソッド
引数イメージ