Excel

【Excel】VBAマクロでファイルを開く方法(選択ダイヤログ:初期フォルダ:パス指定:ワイルドカード:キャンセル・エラー処理も:複数:csvなど)【GetOpenFilename, MultiSelect, IsArray, UBound】

当サイトでは記事内に広告を含みます

この記事では、VBAマクロでファイルを開く方法(選択ダイヤログ:初期フォルダ:パス指定:ワイルドカード:キャンセル・エラー処理も:複数:csvなど)【GetOpenFilename, MultiSelect, IsArray, UBound】について解説しています。

ポイントは、Application.GetOpenFilenameでファイル選択ダイアログを表示すること、MultiSelect:=Trueで複数選択を可能にすること、Forループで複数のファイルを開くことです。

なお、コード内であえて少々変わった変数名を使用しましたが、実際に使用する際には適切な英語表記の変数名に変更することをおすすめします。

それでは、詳しくみていきましょう!

 

VBAマクロで選択ダイヤログでファイルを開く方法【デフォルトフォルダ指定も】

それではまず、VBAマクロで選択ダイヤログでファイルを開く方法について解説していきます。

ここでは初期フォルダをC://toolとしています。また、キャンセルやエラーを考慮した処理方法を見ていきましょう。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub FileWoHiraku()
    ' 変数を定義
    Dim FileWoHirakuDaiarogu As Variant  ' ファイル選択ダイアログの結果を格納する変数
    Dim HidariUenoBasho As String        ' ファイル選択ダイアログの初期フォルダを指定する変数
    
    ' 初期フォルダをC://toolに設定
    HidariUenoBasho = "C://tool"
    
    ' GetOpenFilenameで選択ダイアログを表示し、結果をFileWoHirakuDaiaroguに格納
    FileWoHirakuDaiarogu = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xl*", InitialFileName:=HidariUenoBasho)
    
    ' キャンセルボタンが押された場合は処理を終了
    If FileWoHirakuDaiarogu = False Then
        MsgBox "キャンセルされました"
        Exit Sub
    End If
    
    ' 選択したファイルを開く
    On Error Resume Next  ' エラーが発生しても処理を続行
    Workbooks.Open Filename:=FileWoHirakuDaiarogu
    
    ' エラーが発生した場合はメッセージを表示
    If Err.Number <> 0 Then
        MsgBox "ファイルを開けませんでした" & vbNewLine & "エラー番号:" & Err.Number & vbNewLine & "エラー内容:" & Err.Description
    End If
    On Error GoTo 0  ' エラー処理を元に戻す
End Sub

コードのAlt+F8を押し、マクロ選択画面でFileWoHiraku関数を実行します。

 

コードの意味詳細

このコードでは、まず変数FileWoHirakuDaiaroguとHidariUenoBashoを定義しています。

FileWoHirakuDaiaroguはファイル選択ダイアログの結果を格納する変数、HidariUenoBashoはファイル選択ダイアログの初期フォルダを指定する変数です。

次に、HidariUenoBashoに初期フォルダのパス(C://tool)を設定しています。

そして、Application.GetOpenFilenameでファイル選択ダイアログを表示し、選択結果をFileWoHirakuDaiaroguに格納します。

このとき、FileFilterでExcelファイルのみを選択できるようにし、InitialFileNameにHidariUenoBashoを指定して初期フォルダを設定しています。

ファイル選択ダイアログでキャンセルボタンが押された場合、FileWoHirakuDaiaroguはFalseになるので、その場合は処理を終了します。

最後に、選択したファイルをWorkbooks.Openで開きます。このとき、On Error Resume Nextでエラーが発生しても処理を続行するようにし、エラーが発生した場合はメッセージを表示します。

エラー処理が終わったら、On Error GoTo 0でエラー処理を元に戻しています。

 

VBAマクロで選択ダイヤログで複数のファイルを開く方法

続いては、VBAマクロで選択ダイヤログで複数のファイルを開く方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub FukusuuFileWoHiraku()
    ' 変数を定義
    Dim FileWoHirakuDaiarogu As Variant  ' ファイル選択ダイアログの結果を格納する変数
    Dim HidariUenoBasho As String        ' ファイル選択ダイアログの初期フォルダを指定する変数
    Dim i As Long                        ' ループ用の変数
    
    ' 初期フォルダをC://toolに設定
    HidariUenoBasho = "C://tool"
    
    ' GetOpenFilenameで選択ダイアログを表示し、結果をFileWoHirakuDaiaroguに格納(複数選択可能)
    FileWoHirakuDaiarogu = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xl*", InitialFileName:=HidariUenoBasho, MultiSelect:=True)
    
    ' キャンセルボタンが押された場合は処理を終了
    If IsArray(FileWoHirakuDaiarogu) = False Then
        MsgBox "キャンセルされました"
        Exit Sub
    End If
    
    ' 選択した複数のファイルを開く
    For i = 1 To UBound(FileWoHirakuDaiarogu)
        On Error Resume Next  ' エラーが発生しても処理を続行
        Workbooks.Open Filename:=FileWoHirakuDaiarogu(i)
        
        ' エラーが発生した場合はメッセージを表示
        If Err.Number <> 0 Then
            MsgBox "ファイルを開けませんでした" & vbNewLine & "エラー番号:" & Err.Number & vbNewLine & "エラー内容:" & Err.Description
        End If
        On Error GoTo 0  ' エラー処理を元に戻す
    Next i
End Sub

コードのAlt+F8を押し、マクロ選択画面でFukusuuFileWoHiraku関数を実行します。

 

コードの意味詳細

このコードは、先ほどのコードと似ていますが、ファイル選択ダイアログでMultiSelect:=Trueを指定することで、複数のファイルを選択できるようにしています。

選択結果はFileWoHirakuDaiaroguに配列として格納されるので、IsArrayで配列かどうかをチェックし、配列でない(キャンセルされた)場合は処理を終了します。

最後に、Forループで選択した複数のファイルを順番にWorkbooks.Openで開いています。エラー処理は先ほどと同様です。

 

VBAマクロで選択ダイヤログでcsvのみの複数ファイルを開く方法

続いては、VBAマクロで選択ダイヤログでcsvのみの複数ファイルを開く方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub CSVFileWoHiraku()
    ' 変数を定義
    Dim FileWoHirakuDaiarogu As Variant  ' ファイル選択ダイアログの結果を格納する変数
    Dim HidariUenoBasho As String        ' ファイル選択ダイアログの初期フォルダを指定する変数
    Dim i As Long                        ' ループ用の変数
    
    ' 初期フォルダをC://toolに設定
    HidariUenoBasho = "C://tool"
    
    ' GetOpenFilenameで選択ダイアログを表示し、結果をFileWoHirakuDaiaroguに格納(複数選択可能、csvのみ)
    FileWoHirakuDaiarogu = Application.GetOpenFilename(FileFilter:="CSVファイル,*.csv", InitialFileName:=HidariUenoBasho, MultiSelect:=True)
    
    ' キャンセルボタンが押された場合は処理を終了
    If IsArray(FileWoHirakuDaiarogu) = False Then
        MsgBox "キャンセルされました"
        Exit Sub
    End If
    
    ' 選択した複数のcsvファイルを開く
    For i = 1 To UBound(FileWoHirakuDaiarogu)
        On Error Resume Next  ' エラーが発生しても処理を続行
        Workbooks.Open Filename:=FileWoHirakuDaiarogu(i), Format:=6, Local:=True
        
        ' エラーが発生した場合はメッセージを表示
        If Err.Number <> 0 Then
            MsgBox "ファイルを開けませんでした" & vbNewLine & "エラー番号:" & Err.Number & vbNewLine & "エラー内容:" & Err.Description
        End If
        On Error GoTo 0  ' エラー処理を元に戻す
    Next i
End Sub

コードのAlt+F8を押し、マクロ選択画面でCSVFileWoHiraku関数を実行します。

このコードは、先ほどのコードとほとんど同じですが、ファイル選択ダイアログのFileFilterで「CSVファイル,*.csv」を指定することで、csvファイルのみを選択できるようにしています。

また、Workbooks.Openでcsvファイルを開く際に、Format:=6とLocal:=Trueを指定しています。これにより、csvファイルをエラーなしで問題なく開くことができます。

 

まとめ VBAマクロでファイルを開く方法(パス指定:ワイルドカード:キャンセル・エラー処理も:複数:csvなど)【GetOpenFilename, MultiSelect, IsArray, UBound】

この記事では、VBAマクロでファイルを開く方法(選択ダイヤログ:初期フォルダ:パス指定:ワイルドカード:キャンセル・エラー処理も:複数:csvなど)【GetOpenFilename, MultiSelect, IsArray, UBound】について確認しました。

マクロの扱いになれ、さらに快適な生活を送っていきましょう!