Categories: VBA基礎

EXCEL VBA ファイル選択ダイアログの表示(ファイルを開く・複数ファイルを開く・拡張子指定:GetOpenFilename メソッド)

 

EXCEL VBA ファイル選択ダイアログの表示(ファイルを開く・複数ファイルを開く・拡張子フィルター:GetOpenFilename メソッド)

 

 

●はじめに
EXCEL VBAプログラムで作成したプログラムで、ファイルを開く際に、フルパスを指定してファイルを開く事が出来ますが、開くファイルは常に同じフルパスと言う事は少ないと思います。そのためフルパスが変わるたびにプログラムを変更する必要が発生してしまいます。その時に使用するのが、「GetOpenFilenameメゾット」です。「GetOpenFilenameメゾット」は、ダイアログボックスが開き、マウスでファイルを直接選択する事ができ簡単にファイル操作が可能になります。それでは、「GetOpenFilenameメゾット」の利用方法を順番に説明いたします。

 

 

●書式の説明

【ダイアログボックスよりファイルを開く】

オブジェクト.GetOpenFilename ( Filefilter, Filterindex, Title, Buttontext, Multiselect )

オプションデータ型説明(内容)記述例
FileFilterVariantファイルの種類を指定します。(ファイルフィルター)FileFilter:="Microsoft Excelブック,*.xls?"
FilterIndexVariant引数FileFilterで指定したファイルフィルター文字列の中で、何番目のフィルターを既定値とするか指定します。
TitleVariantダイアログボックスのタイトルを指定します。省略すると”ファイルを開く”Title:="ファイルを開く"
ButtonTextVariant※Macintosh でのみ指定できます。
MultiSelectVariant引数にTrueを指定すると、複数のファイルを選択できます。Falseを指定すると、1つのファイルしか選択できません。既定値は、Falseです。MultiSelect:=True (複数選択)
MultiSelect:=False
(1つのみ)

使用例①:FileName = Application.GetOpenFilename(FileFilter:=”Microsoft Excelブック,*.xls?”, Title:=”選択したファイルを開く”)
使用例②:Multi_FileName = Application.GetOpenFilename(FileFilter:=”Microsoft Excelブック,*.xls?”, MultiSelect:=True)

 

 

ファイルを開く(ワークブックを開く・フルパスの表示)

 

●プログラム説明 (サンプル①)

下記のサンプルプログラムは、ファイルを選択するダイアログボックスを表示してファイルを選択する事ができるプログラムです。選択して「OK」ボタンを押すと選択したファイルをのフルパスがセル「A2」に表示します。

 

Sub GetOpenFilename01()  'ファイルの選択

    Dim FileName As String

    FileName = Application.GetOpenFilename() 'ダイアログボックスを表示してファイルを選択します。
        
    If FileName = False Then        '「キャンセル」を選択した場合は、プログラム終了
                        Exit Sub
    End If
    
    Range("A2") = FileName  '選択したファイルをセルA1にフルパスを表示します。

End Sub

 

●実行前~実行後 ※プログラムの実行後、ダイアログボックスが表示してファイルを選択します。ファイルを選択して「OKボタン」を押すとセルA2に選択したファイルパスが表示されました。
(画面クリックして拡大)

 

 

ダイアログボックスを表示してファイルを開く(Workbooks.Open)

 

 

●プログラム説明 (サンプルプログラム②)

下記のサンプルプログラムは、選択するファイルを開くプログラムになります。プログラムを実行するとダイアログボックスが表示されて、ファイルを選択すると、選択したファイルが開く事ができるプログラムです。

 

 

Sub GetOpenFilename02()  '選択したファイルを開く
    
    Dim FileName As Variant
    
    FileName = Application.GetOpenFilename(FileFilter:="Microsoft Excelブック,*.xls?", Title:="選択したファイルを開く")
    
    If FileName = False Then       '「キャンセル」を選択した場合は、プログラム終了
                        Exit Sub
    End If
    
    Workbooks.Open FileName  '選択したファイルを開く

End Sub

 

 

●実行前~実行後  ※プログラムの実行後、ダイアログボックスが表示してファイルを選択します。ファイルを選択して「OKボタン」を押すとEXCELブックが立ち上がりファイルが開きました。
(画面クリックして拡大)

 

 

複数ファイルを選択して、フルパス一覧を表示

 

●プログラム説明 (サンプルプログラム③)

下記のサンプルプログラムは、複数ファイルを選択し、選択したファイルのフルパスの一覧をセルに表示させるサンプルプログラムです。サンプルプルグラム②を参照に複数ファイルを開く事もできます。

※下記のフォルダーの4つのEXCELファイルを選択します。

 

 

Sub GetOpenFilename03() '複数ファイルを選択
    
    Dim Multi_FileName, FileName As Variant
    Dim i As Long
    
    Multi_FileName = Application.GetOpenFilename(FileFilter:="Microsoft Excelブック,*.xls?", MultiSelect:=True)
    
    If VarType(Multi_FileName) = vbBoolean Then       '「キャンセル」を選択した場合は、プログラム終了
                        Exit Sub
    End If
    
    For Each FileName In Multi_FileName '選択したファイルを全て繰り返す。
    
        i = i + 1  '行を1行下げる(加算)
        
        Cells(i, "A") = FileName  'セルにフルパスを表示します。

      'Workbooks.Open FileName '上記のCells(i, "A") = FileName消して、←を有効化すると選択したファイルが開きます。
    
Next FileName
    
End Sub

 

 

●実行前~実行後 ※プログラム実行後、ダイアログボックスが表示されるので、4ファイルを選択します。ファイルを選択して「開く」と選択したフルパスがEXCELのセルに一覧表示として表示されました。
※(クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA