フォルダ内、指定条件に合致したファイルを配列として取得したい
特定のファイル名のみに対して処理したい場合など、
フォルダ内のファイルを任意条件で取得したい場合があります。
配列で取得するとそのあとのコードも楽になる場合が多いため、フルパスで取得します。
フォルダ内、指定条件のファイルを配列として取得するサンプルコード
'■指定フォルダ内の指定条件(ワイルドカード有・正規表現不可)に合致するファイルのリストを配列で返す 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」を参照設定必要です。
コメント