フォルダー内のすべての 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 ではそれが機能しないようです。