【VBA】『GetOpenFilenameメソッド』 の使い方

スポンサーリンク

『GetOpenFilenameメソッド』は

  • [ファイルを開く]ダイアログボックスでユーザーが指定したファイルを開く
  • [ファイルを開く]ダイアログボックスでユーザーが指定したファイルのファイル名とフルパスを得る

という用途でよく使われる関数です。
この関数について説明します。

構文

GetOpenFilenameメソッドの構文

GetOpenFilenameメソッドの構文は以下のようになります。

Object.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

引数は5つあります。

パラメータ

パラメータ省略可能か?データ型内容
Object×Applicationオブジェクト
FileFilterVariant型ファイルの種類を指定する文字列(ファイルフィルタ文字列)を指定します。この引数を省略するとファイルの種類は「"すべてのファイル (*.*),*.*"」になります。
FilterIndexVariant型引数「FileFilter」で指定した「ファイルフィルタ文字列,ワイルドカードのペア」において、何番目のペアを既定値とするかを指定します。この引数を省略するか、「ファイルフィルタ文字列,ワイルドカードのペア」のペア数より大きな値を指定すると、1番目の「ファイルフィルタ文字列,ワイルドカードのペア」が規定値となります。
TitleVariant型[ファイルを開く]ダイアログボックスのタイトルを指定します。この引数を省略すると、”ファイルを開く" になります。
ButtonTextVariant型Macintoshのみ指定できます。
MultiSelectVariant型TrueかFalseを指定します。Trueを指定した場合、複数ファイルを選択できるようになります。Falseを指定した場合1つのファイルしか選択できません。この引数を省略すると、”False " になります。

戻り値

Variant型です。
[ファイルを開く]ダイアログボックスで指定したファイルのフルパスを返します。

使い方

GetOpenFilenameメソッドの構文の使い方1
と記載すると、[ファイルを開く]ダイアログボックスを開くことができます。
ただこれだけでは、[ファイルを開く]ダイアログボックスからファイルを選択しても何も起こりません。

etOpenFilenameメソッドの構文の使い方2
と記載することで、[ファイルを開く]ダイアログボックスで選択したファイルのフルパスを変数に格納することができます。

具体的なプログラム例を次に示します。

プログラム例

[ファイルを開く]ダイアログボックスでユーザーが指定したファイルを開く

Sub ユーザーが指定したファイルを開く()

    Dim OpenFileName As String
    
    OpenFileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xlsx")
 
    If OpenFileName <> "False" Then
        Workbooks.Open OpenFileName
    Else
        MsgBox "キャンセルされました"
    End If
    
End Sub

のように記述すると[ファイルを開く]ダイアログボックスでユーザーが指定したファイルを開くことができます。具体的な使用方法は

アイキャッチ画像
【VBA】[ファイルを開く]ダイアログボックスを用いてファイルを開く方法

に詳しく記載しているので参考にしてください。

[ファイルを開く]ダイアログボックスでユーザーが指定したファイルのファイル名とフルパスを得る

Sub ファイルを開くダイアログボックスを用いてファイルを開く09()

    Dim OpenFileName As String
    Dim FileName As String
    
    OpenFileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xlsx")
 
    If OpenFileName <> "False" Then
        Workbooks.Open OpenFileName
    Else
        MsgBox "キャンセルされました"
    End If
    
    FileName = Dir(OpenFileName)
    
    MsgBox OpenFileName
    
    MsgBox FileName
    
End Sub

のように記述すると、[ファイルを開く]ダイアログボックスでユーザーが指定したファイルのファイル名とフルパスを取得することができます。

よくあるミス

ファイルフィルタ文字列とワイルドカードのセットで「"(ダブルコーテーション)」で囲むこと!

ファイルフィルタ文字列とワイルドカードのセットで「ダブルコーテーション」で囲むこと

【正】FileFilter:= “ファイルフィルタ文字列 , ワイルドカード”
【誤】FileFilter:= “ファイルフィルタ文字列” , “ワイルドカード”

のように
引数「FileFilter」にはファイルフィルタ文字列とワイルドカードを記述します。この時、引数全体を「"(ダブルコーテーション)」で囲まないといけません。
例えば、

FileFilter:= “Excelファイル , *.xlsx”

のように記述します。

FileFilter:= “Excelファイル“ , “*.xlsx”

のようにファイルフィルタ文字列とワイルドカードを個別に「"(ダブルコーテーション)」で囲むとエラーとなります。

引数「FileFilter」のワイルドカードは拡張子しか指定できない

引数「FileFilter」のワイルドカードは拡張子しか指定できない

FileFilter :=“Excelファイル , *.xlsx”

のようにワイルドカードには拡張子しか指定できません。

FileFilter :=“Excelファイル , テスト*.xlsx”

のように「テスト」で始まる拡張子「.xlsx」などは指定することがきないのです。

スポンサーリンク