MENU

【VBA】ファイル選択ウィンドウの表示【GetOpenFilename】

エクセルマクロを使って作業を自動化する際、ユーザーに特定のファイルを選択させる必要がある場面が出てくることがあります。このような場合に便利なのが、ファイル選択ウィンドウを表示する方法です。この記事では、VBAを使って簡単にファイル選択ウィンドウを表示し、選択されたファイルパスを取得する方法について解説します。

ファイル選択ウィンドウを表示する基本的な方法

VBAでは、Application.GetOpenFilename メソッドを使用してファイル選択ウィンドウを表示できます。このメソッドは、ユーザーが選択したファイルのフルパスを返します。

Dim filePath As String
filePath = Application.GetOpenFilename("すべてのファイル (*.*),*.*", , "ファイルを選択してください")   
  • “すべてのファイル (*.*),*.* :この部分は、ファイル選択ダイアログで表示するファイルのフィルターを設定します。特定の拡張子のファイルだけを表示したい場合には、この部分を変更します。
  • “ファイルを選択してください” :この部分は、ダイアログボックスに表示されるタイトルです。

ファイル選択ウィンドウの例

例1: 基本的なファイル選択ウィンドウ

次の例では、ユーザーにファイルを選択させ、選択されたファイルのフルパスをメッセージボックスで表示します。

Sub SelectFile()
    Dim filePath As String
    filePath = Application.GetOpenFilename("Excelファイル (*.xlsx), *.xlsx", , "ファイルを選択してください")
    
    If filePath <> "False" Then
        MsgBox "選択されたファイルのパスは: " & filePath
    Else
        MsgBox "ファイルが選択されませんでした。"
    End If
End Sub

この例では、Excelファイル(.xlsx)のみが表示されるようにフィルターが設定されています。また、ユーザーがキャンセルボタンを押した場合、filePath には "False" という値が返されます。

例2: 複数ファイルの選択

Application.GetOpenFilename メソッドを使って、複数のファイルを選択させることも可能です。その場合、選択されたファイルは配列として返されます。

Sub SelectMultipleFiles()
    Dim filePaths As Variant
    Dim i As Integer
    
    filePaths = Application.GetOpenFilename("すべてのファイル (*.*),*.*", , "ファイルを選択してください", , True)
    
    If IsArray(filePaths) Then
        For i = LBound(filePaths) To UBound(filePaths)
            MsgBox "選択されたファイルのパス: " & filePaths(i)
        Next i
    Else
        MsgBox "ファイルが選択されませんでした。"
    End If
End Sub

MultiSelect オプションを True に設定することで、複数のファイルを選択可能にしています。選択されたファイルのパスは配列 filePaths に格納され、各ファイルのパスがループ内で処理されます。

ファイル選択ウィンドウのカスタマイズ

例3: 特定の拡張子のファイルだけを表示

特定の種類のファイルのみを選択させたい場合、ファイルフィルターをカスタマイズできます。

Sub SelectCSVFile()
    Dim filePath As String
    filePath = Application.GetOpenFilename("CSVファイル (*.csv), *.csv", , "CSVファイルを選択してください")
    
    If filePath <> "False" Then
        MsgBox "選択されたファイルのパスは: " & filePath
    Else
        MsgBox "ファイルが選択されませんでした。"
    End If
End Sub

この例では、CSVファイル(.csv)だけを表示するようにフィルターが設定されています。

まとめ

エクセルマクロでファイル選択ウィンドウを表示する方法について紹介しました。Application.GetOpenFilename メソッドを使えば、ユーザーに対して簡単にファイル選択を促すことができ、選択されたファイルを効率的に処理することが可能です。この機能を活用して、よりインタラクティブで柔軟なマクロを作成してみてください。

エクセルマクロに関する他の質問やリクエストがあれば、コメントで教えてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

自動車メーカーで、VBAやRPAを用いた業務効率化・業務改善を行っております。

目次