下の階層を含めたファイル一覧を作成するマクロ

Pocket

Excelでファイル一覧を作成するマクロを作りました。フォルダを指定すると、その中のファイルについて、ファイル名、フォルダ名、フォルダ付ファイル名を一覧にします。下の階層を含めます。すなわち、フォルダ内にフォルダがある場合はその中のファイルについても抽出します。
コードは三つあります。一枚のモジュールに貼り付けてください。

宣言

Option Explicit
Dim all_files(9999, 2) As String
Dim last_index As Long

モジュールレベル変数を二つ宣言しています。

ファイル名を取得する

Function get_files(my_path)
    '指定したフォルダにある全てのファイル名(パス付)を取得する。
    Dim this_file(999) As String
    Dim this_path As String
    Dim i As Long, j As Long
    this_file(0) = Dir(my_path, vbDirectory)
    i = 0
    Do
        i = i + 1
        this_file(i) = Dir
    Loop Until this_file(i) = ""
    For j = 0 To i - 1
        If this_file(j) <> "." And this_file(j) <> ".." Then
            this_path = my_path & this_file(j)
            If GetAttr(this_path) = vbDirectory Then
                Call get_files(this_path & "")
            Else
                all_files(last_index, 0) = this_file(j)
                all_files(last_index, 1) = my_path
                all_files(last_index, 2) = my_path & this_file(j)
                last_index = last_index + 1
            End If
        End If
    Next j
End Function

ファイルを取得し配列変数all_filesにセットします。フォルダの場合は再帰的にその中のファイルを取得します。

メイン

Sub ファイル一覧()
    Dim my_path As String
    Dim i As Long
    Erase all_files
    last_index = 0
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "フォルダを選択"
        .AllowMultiSelect = False
        If .Show = -1 Then
            my_path = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With
    Call get_files(my_path & "")
    Cells.ClearContents
    Range("a1:c1").Value = Array("File", "Folder", "Folder+File")
    Range("a2:c10001").Value = all_files
End Sub

フォルダを指定しファイル情報を配列変数にセットします。
その配列変数をアクティブシートに展開しファイル一覧を作成します。1列目がファイル名、2列目がフォルダ名、3列目がフォルダ付きファイル名です。

[ 2015年5月19日 | カテゴリー: Excel | タグ: ]

« | »

コメントを残す

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

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報