「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は決して速いとは言えないのですが、ファイル・フォルダ数が多くない場合や処理時間を気にしなくて良い場合には手軽で便利だと思います。

















この記事へのコメントはありません。