ITサポーターTsuchida

VBA Advance4

第4章 フォルダとファイルの参照方法

ファイルシステムオブジェクトを使って、フォルダとファイルを参照する場合も、4つの手順を行います。

実際に、特定のフォルダにあるすべてのサブフォルダにある特定の名前のつくファイルを開く場合を例にとって、各手順での記述を紹介します。

①オブジェクト変数の定義

Dim fso As Object
Dim fldr As Object
Dim fl As Object
Dim strFolder As String
Dim strPath As String
Dim wb As Workbook

②ファイルシステムオブジェクトのオブジェクト変数へのセット

Set fso = CreateObject("Scripting.FileSystemObject")

③ファイルシステムオブジェクトの使用(CドライブのDataフォルダの下のサブフォルダのファイルを開く)

strFolder = "C:\Data"
For Each fldr In fso.getfolder(strFolder).subfolders
strPath = fldr.Path
For Each fl In fso.getfolder(strPath).files
If Instr(fl.Name, "決算") > 0 And Right(fl.Name, 4) = "xlsx" then
Set wb = Workbooks.Open(Filename:=fl.Path)
以下ファイルの処理
End If
Next
Next

④オブジェクト変数の解放

Set wb = Nothing
Set fso = Nothing
Set fldr = Nothing
Set fl = Nothing

フォルダにはサブフォルダが複数存在し、サブフォルダの中にも複数のファイルが存在します。そのためすべてのサブフォルダを1つずつ処理するためにFor Eachステートメントを使い、サブフォルダ内のすべてのファイルを処理するためにFor Eachステートメントを使います。For Eachステートメントをネストで使うので、慣れないと難しく感じるかもしれません。

便利なことを使いこなすには、レベルアップしなければなりません。ただレベルアップしてしまえばこっちのものです。