【VBA】ファイルを選択して開く(GetOpenFinename)

Excel・VBA

VBAでダイアログボックスを表示し、任意のファイルを選択して開く方法です。

GetOpenFinenameメソッドの概要

GetOpenFinenameメソッドは、実際にはダイアログボックスを表示し任意のファイルをユーザーに選択させるものです。

このメソッドでファイルを選択し、ファイル名を取得したのちにWorkbooks.openメソッド等でファイルを開きます。

《書式》
Application.GetOpenFilename(FileFilterFilterIndexTitleButtonTextMultiSelect

FileFilterは、ファイルの候補を指定する文字列を指定します。FileFilterの指定は次のようにします。

  1. FileFilterはファイルの説明とファイルの拡張子のペアで構成される。
  2. 記入する順番はファイルの説明、ファイルの拡張子の順に記入する。
  3. ファイルの拡張子は*.拡張子で指定する。
  4. ファイルの説明とファイルの拡張子はカンマ(,)でつなぐ。
  5. 複数指定する場合は、カンマ(,)でつないで1.と2.の規則で続ける。
  6. 全体の最初と最後をダブルクオーテーションマーク(”)で囲む

例えば拡張子がxlsxのExcelファイルを指定する場合は、“Excelファイルを選択,*.xlsx”と記入します。

ひとつのFileFilterに複数の拡張子を指定する場合は、セミコロン(;)で指定する拡張子を繋げる。

例)xlsxとxlsmのExcelファイルを一つのFileFilterで指定する場合は、“Excelファイルを選択,*.xlsx;*.xlsm”と記入します。

FilterIndexは、FileFilterで指定したファイルフィルター文字列の中で、1から何番目の値を既定値とするかを指定します。

省略若しくは、フィルター数よりも大きな数値を入力すると最初のファイルフィルター文字列が既定値となります。

Titleは、ダイアログボックスのタイトルを指定します。省略時は、タイトルが”ファイルを開く”になります。

ButtonTextは、Macintoshのみで指定可能です。

MultiSelectは、ファイルの同時選択可能数を決めます。

  • True:複数選択可能
  • False or 省略:1つのファイルのみ選択可能

GetOpenFinenameメソッドを利用してファイルを開く

実際にファイルを開くには、下記のような流れで開きます。(Excelブックで開く場合です。)

  1. GetOpeFilenameメソッドでファイル名(パスを含む)を取得する
  2. Workbooks.openメソッドでファイルを開く
Sub OpenFile()'Workbooks.openメソッドを利用
    
    Dim fiName As String

    fiName = Application.GetOpenFilename("Excelファイルを選択,*.xlsx;*.xlsm")
    Workbooks.Open Filename:=fiName

End Sub

Workbooks.openメソッドについては、下記記事を参照してください。

【VBA】ファイルを開く《Workbookで開く》
VBAで任意のテキストファイルをExcelワークブックとして開く方法を紹介しています。
新しいタブで開く)

また、Openステートメントを利用することもできます。

Sub OpenFile_2() 'Openステートメントを利用
    
    Dim fiName As String

    fiName = Application.GetOpenFilename("Excelファイルを選択,*.xlsx;*.xlsm")
    Open fiName For Input As #1
    
End Sub

Openステートメントについては、下記記事を参照してください。

今回はここまでです。

コメント

タイトルとURLをコピーしました