【Excel VBA】「ファイルを開く」ダイアログを表示してパスを取得する方法 (GetOpenFilename)

マクロで外部のExcelファイルを読み込む際に、ファイルパスをコード内に直接書き込む(ハードコーディングする)のではなく、マクロ実行時にユーザー自身にファイルを選択させたい、という場面は非常に多くあります。

VBAの**Application.GetOpenFilenameメソッド**を使えば、お馴染みの「ファイルを開く」ダイアログボックスを簡単に表示し、ユーザーが選択したファイルのフルパスを文字列として取得できます。

この記事では、その基本的な使い方と、ファイルの種類を絞り込むための引数の設定方法などを解説します。


目次

完成したVBAコード

Sub ShowFileOpenDialog()

    ' 変数を宣言します。戻り値はパス(文字列)かFalse(ブール値)のため、Variant型にします。
    Dim selectedFilePath As Variant

    '--- 1. 「ファイルを開く」ダイアログボックスを表示 ---
    selectedFilePath = Application.GetOpenFilename( _
        Title:="処理対象のExcelブックを選択してください", _
        FileFilter:="Excel ブック (*.xlsx; *.xlsm),*.xlsx;*.xlsm,すべてのファイル (*.*),*.*")
        
    '--- 2. 選択結果を判定 ---
    If selectedFilePath = False Then
        ' 「キャンセル」が押された場合
        MsgBox "ファイルの選択がキャンセルされました。"
    Else
        ' ファイルが選択された場合
        MsgBox "以下のファイルが選択されました。" & vbCrLf & selectedFilePath
        
        ' (応用) 実際にそのブックを開く処理
        ' Workbooks.Open selectedFilePath
    End If

End Sub

コードのポイント解説

Application.GetOpenFilename メソッド

このメソッドを実行すると、「ファイルを開く」ダイアログボックスが表示されます。重要なのは、このメソッドはファイルを実際に開くわけではなく、選択されたファイルのフルパスを文字列として返すだけ、という点です。ファイルを開くには、取得したパスを使って別途Workbooks.Openを実行する必要があります。

FileFilter 引数

ダイアログの右下にある「ファイルの種類」のドロップダウンリストを設定するための、非常に重要な引数です。

FileFilter:="表示名1,*.拡張子1,表示名2,*.拡張子2"

表示名拡張子のパターンをカンマ区切りでペアにして指定します。複数の拡張子をまとめたい場合は、セミコロン(;)で区切ります。

: "Excel ブック (*.xlsx; *.xlsm),*.xlsx;*.xlsm"

  • Excel ブック (*.xlsx; *.xlsm): ドロップダウンに表示されるテキストです。
  • *.xlsx;*.xlsm: 対応する拡張子のパターンです。

③ キャンセルされた場合の処理

If selectedFilePath = False Then

ユーザーがダイアログでファイルを選択せずに「キャンセル」ボタンを押した場合、GetOpenFilenameメソッドは**ブール値のFalse**を返します。

そのため、戻り値を受け取る変数はVariant型で宣言しておき、If文でFalseかどうかを判定することで、キャンセル時の処理を正しく分岐させることができます。


【応用】選択したファイルを実際に開く

GetOpenFilenameで取得したファイルパスを、Workbooks.Openと組み合わせることで、「ユーザーが選んだファイルを開く」という一連の動作が完成します。

Sub SelectAndOpenFile()
    Dim bookPath As Variant
    
    bookPath = Application.GetOpenFilename(FileFilter:="Excel ブック (*.xlsx; *.xlsm),*.xlsx;*.xlsm")
    
    If bookPath <> False Then
        Workbooks.Open bookPath
        MsgBox ActiveWorkbook.Name & " を開きました。"
    End If
End Sub

まとめ

Application.GetOpenFilenameメソッドは、ユーザーとの対話的なマクロを作成する上で不可欠な機能です。

  • **戻り値はファイルのフルパス(文字列)**であり、ファイル自体を開くわけではない。
  • FileFilter引数で、ユーザーがファイルを選びやすいように種類を絞り込む。
  • 戻り値を受け取る変数は**Variantにし、Falseかどうか**でキャンセルを判定する。

これらのポイントを押さえることで、より柔軟でユーザーフレンドリーなVBAツールを作成することができます。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

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

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次