*

Fileを操作 – 再帰処理

公開日: : 最終更新日:2013/12/18 FILE操作 ,

フォルダ階層が複雑な中にある不特定多数のファイルに対して、処理を行う良い方法。

あなたがフォルダの構成を図で描いて見たときネズミ講の図に非常に似通っていると感じた場合、以下の方法が役に立つでしょう。Folder_Nに任意のフォルダを指定してください。イミディエイトウィンドウにファイルパス&名前を書き出します。

Public Sub tmp_003()
    Dim fso As Object
    Dim folder As Object
    Dim Folder_N As String
    Folder_N = ""
    Set fso = CreateObject("Scripting.FileSystemobject")
    '指定したフォルダを表すFolderオブジェクトを返します。
    Set folder = fso.GetFolder(Folder_N)
    Call traverse(folder)
    Set fso = Nothing
    Set folder = Nothing
End Sub
Private Sub traverse(pat As Object)
    Dim sfo As Object
    Dim sf  As Object
    Dim fil  As Object
    Dim ifile   As Object
    'フォルダなら以下の処理
    If pat.Attributes = 16 Then
        'Attributes (ファイル属性、フォルダ属性)
            '0 Normal     標準ファイル
            '1     ReadOnly 読み取り専用ファイル(設定も可能)
            '2     Hidden 隠しファイル(設定も可能)
            '4     System システムファイル(設定も可能)
            '8     Volume ボリュームラベル
            '16    Directory フォルダ
            '32    Archive
            '64    ショートカット
            '128   圧縮ファイル
            <span style="color: #339966;">'子フォルダをsfoに入れる</span>
            Set sfo = pat.subFolders
            For Each sf In sfo
                Call traverse(sf)
            Next
            'フォルダ内に有るファイルをfilに入れる
            Set fil = pat.Files
            For Each ifile In fil
                Call traverse(ifile)
            Next
    End If
  'ファイルなら以下の処理
    If pat.Attributes = 32 Or pat.Attributes = 0 Then
        Debug.Print "FILE : " &amp; pat.path
    End If
End Sub

特殊な設定をしてあるファイルだとAttributesの項目でうまく調整が必要です。そうしないと見逃すファイルがあかもしれません。

admax_area



関連記事

記事はありませんでした

admax_area



Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

admax_area



PAGE TOP ↑