ファイルダイアログの基本
Excel VBAで「ファイルを選んで開きたい」「保存先を指定したい」といった場面では ファイルダイアログ を使うのが便利です。初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- ファイルダイアログとは?
ユーザーに「開くファイル」や「保存先」を選ばせるための標準ウィンドウ。 - 用途:
- CSVやExcelファイルを選んで読み込む
- 保存先を指定してファイルを書き出す
- 複数ファイルをまとめて選択する
テンプレ1:ファイルを1つ選択(Open)
Sub SelectFile_Open()
Dim filePath As Variant
' ファイル選択ダイアログを表示
filePath = Application.GetOpenFilename( _
FileFilter:="Excelファイル (*.xlsx), *.xlsx", _
Title:="ファイルを選択してください")
' キャンセルされた場合は処理終了
If filePath = False Then Exit Sub
' 選択したファイルパスを表示
MsgBox "選択したファイル: " & filePath
End Sub
VB- ポイント:
GetOpenFilenameは「開くファイル」を選ぶダイアログ。- キャンセルすると
Falseが返る。
テンプレ2:複数ファイルを選択
Sub SelectFile_Multi()
Dim filePaths As Variant
Dim i As Long
' 複数選択可能
filePaths = Application.GetOpenFilename( _
FileFilter:="CSVファイル (*.csv), *.csv", _
Title:="複数ファイルを選択してください", _
MultiSelect:=True)
If IsArray(filePaths) = False Then Exit Sub
' 選択したファイルを一覧表示
For i = LBound(filePaths) To UBound(filePaths)
MsgBox "選択ファイル: " & filePaths(i)
Next i
End Sub
VB- ポイント:
MultiSelect:=Trueで複数選択可能。- 配列として返るのでループで処理。
テンプレ3:保存先を選択(SaveAs)
Sub SelectFile_Save()
Dim filePath As Variant
' 保存ダイアログを表示
filePath = Application.GetSaveAsFilename( _
InitialFileName:="output.xlsx", _
FileFilter:="Excelファイル (*.xlsx), *.xlsx", _
Title:="保存先を選択してください")
If filePath = False Then Exit Sub
MsgBox "保存先: " & filePath
End Sub
VB- ポイント:
GetSaveAsFilenameは「保存先」を選ぶダイアログ。- 実際の保存処理は別途
Workbook.SaveAsなどで行う。
テンプレ4:フォルダ選択ダイアログ
Sub SelectFolder()
Dim folderPath As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "フォルダを選択してください"
If .Show <> -1 Then Exit Sub
folderPath = .SelectedItems(1)
End With
MsgBox "選択したフォルダ: " & folderPath
End Sub
VB- ポイント:
msoFileDialogFolderPickerでフォルダ選択。.SelectedItems(1)で選んだフォルダのパスを取得。
例題で練習
'例1:Excelファイルを1つ選択して開く
'例2:CSVファイルを複数選択して一覧表示
'例3:保存先を選択してファイル名を決定
'例4:フォルダを選択してパスを取得
VB初心者向けポイント
- GetOpenFilename → 開くファイルを選ぶ
- GetSaveAsFilename → 保存先を選ぶ
- FileDialog(msoFileDialogFolderPicker) → フォルダを選ぶ
- キャンセル時の処理を必ず入れる →
Falseが返るのでチェック必須 - 複数選択は配列で返る →
IsArrayで判定してループ処理
👉 この「ファイルダイアログテンプレ」を覚えておけば、Excel VBAで ユーザーにファイルやフォルダを選ばせる処理 を簡単に作成できます。
