ファイルシステムオブジェクトの生成

ファイルシステムオブジェクトを使用するには、まずメインのファイルシステムオブジェクトを生成する必要があります。このオブジェクトを生成するには CreateObject 関数を使用します。この際、引数に”Scripting.FileSystemObject“を指定します。

スポンサーリンク

生成方法

構文
'ファイルシステムオブジェクトへの参照を格納するための変数
Dim fso     As Object
'ファイルシステムオブジェクトの生成と変数への格納
Set fso = CreateObject("Scripting.FileSystemObject")

ファイルシステムオブジェクトを生成すると、そのメソッドを使用してファイルやフォルダなどのオブジェクトが取得可能になります。これらのオブジェクトも必要に応じて変数を用意し、格納しておくとよいでしょう。

簡単な使用例

以下に簡単な使用例を掲載します。もう少し詳細な使用方法については別ページで後述します。

ファイルとフォルダの情報を取得

以下のサンプルマクロは、カレントフォルダ内にある”test.txt”のファイル情報を取得・表示し、さらに、カレントフォルダ内のファイル数とサブフォルダ数を取得・表示する例です。

Sub sample_fs012_1()
    'ファイルシステムオブジェクトへの参照を格納するための変数
    Dim fso         As Object
    'ファイルオブジェクトへの参照を格納するための変数
    Dim fileObj     As Object
    'フォルダオブジェクトへの参照を格納するための変数
    Dim folderObj   As Object
    
    'ファイルシステムオブジェクトの生成と変数への格納
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'カレントフォルダ内にある"test.txt"のファイルオブジェクトを取得
    Set fileObj = fso.GetFile("test.txt")
    '"test.txt"の作成日時、最終更新日時を表示
    MsgBox "作成日時  :" & fileObj.DateCreated & vbLf & _
           "最終更新日時:" & fileObj.DateLastModified
    
    'カレントフォルダのフォルダオブジェクトを取得
    Set folderObj = fso.GetFolder(CurDir)
    'カレントフォルダ内のファイルとフォルダ数を表示
    MsgBox "ファイル数:" & folderObj.Files.Count & vbLf & _
           "フォルダ数:" & folderObj.SubFolders.Count
End Sub

 Setステートメント  MsgBox関数

Withステートメント使用

上記の例で Withステートメント を使用すると次のように記述できます。できるだけ使用する変数を減らしたい思う方は Withステートメント を有効に利用するとよいでしょう。

Sub sample_fs012_2()
    'ファイルシステムオブジェクトへの参照を格納するための変数
    Dim fso         As Object
    
    ファイルシステムオブジェクトの生成と変数への格納
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'カレントフォルダ内にある"test.txt"のファイルオブジェクトを取得
    With fso.GetFile("test.txt")
        '"test.txt"の作成日時、最終更新日時を表示
        MsgBox "作成日時  :" & .DateCreated & vbLf & _
               "最終更新日時:" & .DateLastModified
    End With
    
    'カレントフォルダのフォルダオブジェクトを取得
    With fso.GetFolder(CurDir)
        'カレントフォルダ内のファイルとフォルダ数を表示
        MsgBox "ファイル数:" & .Files.Count & vbLf & _
               "フォルダ数:" & .SubFolders.Count
    End With
End Sub

 Setステートメント  Withステートメント  MsgBox関数

タイトルとURLをコピーしました