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 アドイン

    [Office用アプリ]メールアプリの配置方法

    OutlookやOutlook Web App上で動作するメールアプリ…

  2. Office関連

    「クイックアクセスツールバーからPowerPointマクロを実行するアドイン」のコード

    2年ほど前に書いたPowerPointマクロの記事「クイックアクセスツ…

  3. Office関連

    メモ帳だけでOutlook用アドインを作ってみる。

    「SharpDevelopでExcel用COMアドインを作成する方法」…

  4. Office関連

    [Excel Services ECMAScript]アクティブセルが変更されたときのイベントを利用…

    埋め込んだExcelワークブックの、アクティブセルが変更されたときのイ…

  5. Office アドイン

    [Officeアドイン]アドイン コマンド(Add-In Commands)の紹介

    前回の記事は“Office アドイン”のAdvent calendar…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP