フォルダ内、指定条件に合致したファイルを配列として取得したい
特定のファイル名のみに対して処理したい場合など、
フォルダ内のファイルを任意条件で取得したい場合があります。
配列で取得するとそのあとのコードも楽になる場合が多いため、フルパスで取得します。
フォルダ内、指定条件のファイルを配列として取得するサンプルコード
'■指定フォルダ内の指定条件(ワイルドカード有・正規表現不可)に合致するファイルのリストを配列で返す
Public Function Call_GetFileList(FolderPath As String, FileName As String) As Variant
Dim fso As New FileSystemObject '要参照設定 Microsoft Scripting Runtime
Dim tmp() As Variant
Dim i As Long: i = 1
Dim f As File
For Each f In fso.GetFolder(FolderPath).Files
If f.Name Like FileName Then
ReDim Preserve tmp(1 To i)
tmp(i) = f.Path
i = i + 1
End If
Next
Call_GetFileList = tmp
End Function
使い方
上記をお好きなモジュール内にコピペしてください。
実際に使用する時は以下のような形で使用してください。
Public Sub sample()
Dim arr As Variant
'■拡張子を指定しない場合(全てのファイル)
arr = Call_GetFileList("C:\vba\", "*")
'■拡張子を指定する 場合
arr = Call_GetFileList("C:\vba", "*.xlsx")
'格納例(フルパスで取得)
'C:\vba\sample1.xlsx
'C:\vba\sample2.xlsx
End Sub
その他
- 事前に「Microsoft Scripting Runtime」を参照設定必要です。



コメント