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

Windows 10 IMEの「クラウド候補機能」の仕組みを追ってみた。前のページ

SmartArtからテキストを取得するPowerPointマクロ次のページ

関連記事

  1. Office関連

    Computer Vision APIを使って画像から文字列を取得するVBAマクロ

    前々回の記事で、Fiddlerを使ってMicrosoft Cognit…

  2. Office関連

    Office製品のフィードバック先まとめ

    WordやExcel等のOffice製品を使っていて、「UIのこの日本…

  3. アイコン一覧

    Office 2013 アイコン一覧(S)

    ・Office 2013 アイコン一覧 NUM…

  4. Office関連

    [PowerShell]Word文書の透かし文字を変更するスクリプト

    MSDNフォーラムに「PowerShellを使って、Word文書の透か…

  5. Office関連

    Excel 2016 Previewで追加された新しい関数

    ※ 下記情報はOffice 2016 Preview版を元にしています…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP