ちょっと生きづらさを抱えた人へ、気持ちを楽にするためのお手紙です。

【VBA】指定ディレクトリ配下のすべてのファイルを処理

指定ディレクトリ配下(サブディレクトリを含む)すべてのファイルに処理をするVBAのサンプル。
自分が使いまわせるように、余計な処理を書かずに、枠だけにしています。

testDir
例えばこんなフォルダ構成で、「Test」のパスを渡すと、
Test配下のそれぞれのフォルダにあるファイルに処理をするためのコードです。

ツール > 参照設定 > Microsoft Scripting Runtime
ExcelVBA_01.png

Option Explicit

'-------------------------------------------------------------------------------
' 指定ディレクトリ配下(サブディレクトリを含む)すべてのファイルに対する処理
'-------------------------------------------------------------------------------
Public Sub scanDirectory(ByVal sTopPath As String)
    'ツール > 参照設定 > Microsoft Scripting Runtime
    Dim oFso As New FileSystemObject    'ファイルシステムオブジェクト
    Dim oTopDir As Folder               '先頭ディレクトリ
    Dim oDir As Folder                  'ディレクトリ
    Dim oFile As File                   'ファイル
    
    On Error GoTo Term
    '先頭ディレクトリオブジェクト取得
    Set oTopDir = oFso.GetFolder(sTopPath)
    
    'ディレクトリ配下のディレクトリパス名を取得する
    For Each oDir In oTopDir.SubFolders
        'ショートカット以外
        If oDir.Attributes <> Alias Then
            '再帰
            Call scanDirectory(oDir.Path)
        End If
    Next
    
    'ディレクトリ直下のすべてのファイル
    For Each oFile In oFso.GetFolder(sTopPath).Files
        'ファイルごとの処理
        'Debug.Print (oFile.Name)
    Next
    
Term:
    Set oFso = Nothing
    Set oTopDir = Nothing
    Set oDir = Nothing
    Set oFile = Nothing
End Sub

コメントを残す

メールアドレスが公開されることはありません。