VBATips

ファイルダイアログを表示して、複数ファイルを取得する【パーツ化】【ExcelVBA】

ファイルダイアログを表示して、ファイルパスを取得する

VBAマクロを実行する際、フォルダ内のファイルに対して何かを処理する事も多いかと思います。
当方へご依頼頂いた際、ユーザー様の要望に合わせて、ファイルダイアログで選択する場合や、
ファイルパスをセル上に直打ちするケースがあります。

今回はファイルダイアログで選択する処理を、パーツ化しました。

ファイルダイアログを表示して、ファイルパスを取得するサンプルコード

’■ファイルダイアログからファイル名を取得する
Public Function Call_FileOpen(MyFiles As Variant) As Boolean
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True '複数ファイルを開く=True
        .Filters.Clear
        .Filters.Add "Excelファイル", "*.xls*"
        ’.Filters.Add "CSVファイル", "*.csv"
        ’.Filters.Add "テキストファイル", "*.txt"
        .Filters.Add "CSVファイル", "*.txt;*.csv"
        .InitialFileName = ThisWorkbook.Path '初期表示フォルダ
        .Title = "ブックを選択してください"

        If Not .Show Then Exit Function
 
        Set MyFiles = .SelectedItems
        Call_FileOpen = True
    End With
End Function

使い方

実際の使い方は以下です。

Dim MyFiles As Variant
Public Sub sample()

   If Call_FileOpenAlone(MyFiles) = False Then Exit Sub
   Debug.Print MyFiles(1) 'C:\vba\sample.xlsx
End Sub


注意点

  • 取得したデータ(myFiles)は複数選択された場合は配列で戻ってきます。
  • 単一ファイルのみ選択させる場合はこちら

関連記事

コメント

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