Office関連

フォルダ(サブフォルダ含む)内の特定の拡張子のファイルに処理を行うVBAマクロ

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

関連記事

  1. Office関連

    Officeアプリケーションの「最近使用したファイル」を削除するVBScript

    WordやExcel等のOfficeアプリケーションでは、下記サイトに…

  2. アイコン一覧

    Office 365アイコン(imageMso)一覧(A)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  3. Office アドイン

    [Officeアドイン]ワークシートで選択範囲を変更したときに発生するイベント

    ワークシート上で選択範囲の変更を検知する際、VBAでは通常「Works…

  4. Office関連

    [Office]OutlookとIMEの利用に関するアンケートへの回答でAmazonギフト券が当たる…

    昨年の11月、「シンプルリボン」に関するアンケートが行われました(下記…

  5. Office関連

    64ビット環境かどうかを判別するVBAマクロ

    2年以上前にMicrosoft Community(当時はMicros…

  6. Office アドイン

    Ignite 2016で発表されたOffice アドイン関連の情報

    米国時間の9月26~30日にMicrosoftのビッグイベント「Ign…

コメント

  • コメント (0)

  • トラックバックは利用できません。

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP