「Wordマクロ サブフォルダ ファイル処理」といったキーワードでのアクセスがありました。
フォルダ内にあるWordファイルに対してマクロで何か処理を行いたい方の検索でしょうか?
“サブフォルダ”というキーワードも含まれていたので、フォルダの中にあるフォルダ = サブフォルダ内のファイルに対しても処理を行いたいのだと思います。
この手の処理には下記のように再帰処理を行うと良いでしょう。
Option Explicit Public Sub Sample() ListFiles "C:\Files" MsgBox "処理が終了しました。", vbInformation + vbSystemModal End Sub Private Sub ListFiles(ByVal TargetFolderPath As String) Dim fol As Object, f As Object With CreateObject("Scripting.FileSystemObject") If .GetFolder(TargetFolderPath).SubFolders.Count > 0 Then For Each fol In .GetFolder(TargetFolderPath).SubFolders ListFiles fol.Path DoEvents Next End If If .GetFolder(TargetFolderPath).Files.Count > 0 Then For Each f In .GetFolder(TargetFolderPath).Files '特定の拡張子のファイルのみ処理 Select Case LCase(.GetExtensionName(f.Path)) Case "doc", "docm", "docx", "dot", "dotm", "dotx", _ "htm", "html", "mht", "mhtml", "odt", "pdf", _ "rtf", "txt", "wpd", "wps", "xml" SubProc f.Path End Select DoEvents Next End If End With End Sub Private Sub SubProc(ByVal TargetFilePath As String) '特定の拡張子のファイルに対して行う処理 Debug.Print TargetFilePath End Sub
上記コードはFileSystemObjectを使って”C:\Files”内のファイルを順次処理するもので、GetExtensionNameメソッドを使って拡張子を区別しています。
処理速度的にはFileSystemObjectは決して速いとは言えないのですが、ファイル・フォルダ数が多くない場合や処理時間を気にしなくて良い場合には手軽で便利だと思います。
この記事へのコメントはありません。