Excel VBA 逆引き集 | ファイルダイアログ

Excel VBA
スポンサーリンク

ファイルダイアログの基本

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で ユーザーにファイルやフォルダを選ばせる処理 を簡単に作成できます。

タイトルとURLをコピーしました