Filesオブジェクトの引数には、インデックスを表す整数は使用できません

タイトルのサンプルマクロは、以下です。

' FileSystemObjectオブジェクトの使用例
' 実行時バインディングを使用
' Filesオブジェクトの引数には、インデックスを表す整数は使用できません。
Private Sub FilesObjectCannotInteger()

    Dim FSO As Object
    
    ' 参照設定にかかわらず、以下は使用可能
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    Dim myFiles As Object
    Dim myFile As Object
    Set myFiles = FSO.GetFolder("C:\TEMP").Files
    
    Debug.Print myFiles.Item("hoge.txt").Name
    ' 以下は、エラーとなる。Itemの引数は、ファイル名を表す文字列を指定する必要があり、
    ' インデックスを表す整数は使用できません。
    ' Debug.Print myFiles.Item(1)
    
    Debug.Print myFiles.Count
    
    ' すべてのファイル名を取得
    For Each myFile In myFiles
        Debug.Print myFile.Name
    Next myFile
    Set FSO = Nothing
End Sub

以下のように、「C:¥TEMP」の中に、ファイルが2つある状況で、マクロを実行すると、イミディエイトウィンドウには、以下のように、表示されます。

今回のサンプルマクロは、実行時バインディングであるが、事前バインディングするためには、参照設定にて、以下の「Microsoft Scripting Runtime」を選択する必要があります。

Follow me!