VBAを使用してフォルダー内のExcelファイルのリストを取得する [重複] 質問する

VBAを使用してフォルダー内のExcelファイルのリストを取得する [重複] 質問する

フォルダー内のすべての Excel ファイルの名前を取得して、各ファイルを変更する必要があります。「変更する」部分は整理しました。.xlsxたとえば、1 つのフォルダー内のファイルのリストを取得して、D:\Personalそれを文字列配列に保存する方法はありますか。

次に、ファイルのリストを反復処理し、各ファイルに対してマクロを実行する必要がありますが、これは次のように実行できると考えました。

Filepath = "D:\Personal\"
For Each i in FileArray
    Workbooks.Open(Filepath+i)
Next

私は見てみましたこれただし、名前がVariant形式で保存されているため、ファイルを開くことができませんでした。

つまり、VBA を使用して特定のフォルダー内の Excel ファイル名のリストを取得するにはどうすればよいでしょうか?

ベストアンサー1

そうですね、これはうまくいくかもしれません。パスを受け取り、フォルダー内のファイル名の配列を返す関数です。配列をループするときに、if ステートメントを使用して Excel ファイルだけを取得できます。

Function listfiles(ByVal sPath As String)

    Dim vaArray     As Variant
    Dim i           As Integer
    Dim oFile       As Object
    Dim oFSO        As Object
    Dim oFolder     As Object
    Dim oFiles      As Object

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(sPath)
    Set oFiles = oFolder.Files

    If oFiles.Count = 0 Then Exit Function

    ReDim vaArray(1 To oFiles.Count)
    i = 1
    For Each oFile In oFiles
        vaArray(i) = oFile.Name
        i = i + 1
    Next

    listfiles = vaArray

End Function

ファイル オブジェクト内のファイルにインデックス番号でアクセスできればよいのですが、何らかの理由 (バグ?) で VBA ではそれが機能しないようです。

おすすめ記事