« 記事一覧 | トップページ | 為替の時系列データの取り込み(データ更新) »

2020年5月10日 (日)

フォルダ内のファイル情報のリスト化

指定したフォルダに含まれるファイルの情報を得るには
FileSystemObjectオブジェクトを使用します。
FileSystemObjectオブジェクトは次のコードで作成します。

Set fs = CreateObject("Scripting.FileSystemObject")

変数fsに対してGetFolderメソッドを使用して
フォルダオブジェクトを変数fs_fldに格納します。

Set fs_fld = fs.GetFolder("フォルダの場所を指定")

変数fs_fldにはフォルダ内のすべてのファイルが含まれます。

次のコードでフォルダ内のすべてのファイルオブジェクトを
変数fs_fに格納します。

Set fs_f = fs_fld.Files

複数のファイルが格納された変数fs_fに対して
For Such文を使用して
各ファイルの情報を取得していきます。

取得できるファイルの情報については
次のMicrosoftのページのプロパティを参照してください。
File オブジェクト

次のコードは
変数f_pathで指定されたフォルダ内の
ファイル情報をリスト化します。

指定フォルダのファイル情報のリスト化するコード:

Sub macro20200510a()
'指定フォルダのファイル情報のリスト化する

    Dim fs, fs_fld, fs_f, f
    Dim f_path As String
    Dim i As Integer
    f_path = "C:\Users\username\Documents\"
   
    f_path = f_path & "\"
    i = 1
   
    Sheets.Add
    Cells(1, 1) = "フォルダ内ファイルのリスト化"
    Cells(2, 1) = "パス:" & f_path
   
    Cells(4, 1) = "Attributes"
    Cells(4, 2) = "DateCreated"
    Cells(4, 3) = "DateLastAccessed"
    Cells(4, 4) = "DateLastModified"
    Cells(4, 5) = "Drive"
    Cells(4, 6) = "Name"
    Cells(4, 7) = "ParentFolder"
    Cells(4, 8) = "Path"
    Cells(4, 9) = "ShortName"
    Cells(4, 10) = "ShortPath"
    Cells(4, 11) = "Size"
    Cells(4, 12) = "Type"
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fs_fld = fs.GetFolder(f_path)
    Set fs_f = fs_fld.Files
    For Each f In fs_f
        Cells(i + 4, 1) = f.Attributes
        Cells(i + 4, 2) = f.DateCreated
        Cells(i + 4, 3) = f.DateLastAccessed
        Cells(i + 4, 4) = f.DateLastModified
        Cells(i + 4, 5) = f.Drive
        Cells(i + 4, 6) = f.Name
        Cells(i + 4, 7) = f.ParentFolder
        Cells(i + 4, 8) = f.Path
        Cells(i + 4, 9) = f.ShortName
        Cells(i + 4, 10) = f.ShortPath
        Cells(i + 4, 11) = f.Size
        Cells(i + 4, 12) = f.Type
       
        i = i + 1
    Next f
    Cells.EntireColumn.AutoFit
End Sub   

使用Ver:Win10, Excel For Office365

|

« 記事一覧 | トップページ | 為替の時系列データの取り込み(データ更新) »

コメント

この記事へのコメントは終了しました。