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関連

    名前空間を指定してXPathで要素を取得するVBAマクロ

    Tech Communityに、“XPathで名前空間プレフィックス付…

  2. アイコン一覧

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

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

  3. Office関連

    「NetOffice」で簡単に.NETからOfficeを操作

    ネットで「NetOffice」なるツールがあることを知ったので、早速試…

  4. Office関連

    VBAでTTSエンジンの各種情報を列挙する

    今回はTTSエンジンの各種情報を列挙するマクロを紹介します。Mic…

  5. Office関連

    Chromeアプリ版Office Onlineを使ってみました。

    「Microsoft、GoogleのChromeアプリ版Office …

  6. Office関連

    Office 2013の開発者用リファレンス

    「Word2013 VBA の日本語ヘルプ」でも回答していますが、Of…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP