私は、フォルダとそのサブフォルダからxls、xlsx、またはxlsm拡張子を持つすべてのファイルを一覧表示するために次のコードを使用しています。次のコードは動作しますが、問題は、サブフォルダからのすべての拡張子を含むすべてのファイルを一覧表示しますが、リストはメインフォルダのExcelファイルのみです。私はこのコードで何が間違っているのか理解できません。手伝っていただけませんか?VBA FileSystemObject、特定のファイルを使用してファイルの拡張子
Sub List_XL_Files(ByVal SheetName As String, ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean)
Dim FSO As Object
Dim SourceFolder As Object
Dim SubFolder As Object
Dim FileItem As Object
Dim lRoMa As Long
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = FSO.GetFolder(SourceFolderName)
lRoMa = ThisWorkbook.Sheets(SheetName).Cells(Rows.Count, 2).End(xlUp).Row + 1
ReDim arrFolders(ctr)
With ThisWorkbook.Sheets(SheetName)
For Each FileItem In SourceFolder.Files
strFileExt = FSO.GetExtensionName(FileItem)
If strFileExt = "xlsm" Or strFileExt = "xlsx" Or strFileExt = "xls" Then
MsgBox strFileExt
.Cells(lRoMa + r, 1).Value = lRoMa + r - 7
.Cells(lRoMa + r, 2).Formula = strFileExt
.Cells(lRoMa + r, 3).Formula = FileItem.Name
.Cells(lRoMa + r, 4).Formula = FileItem.Path
.Cells(lRoMa + r, 5).Value = "-"
.Cells(lRoMa + r, 6).Value = ""
.Cells(lRoMa + r, 7).Value = ""
r = r + 1 ' next row number
X = SourceFolder.Path
End If
Next FileItem
End With
If IncludeSubfolders Then
For Each SubFolder In SourceFolder.SubFolders
ListFilesInFolder SheetName, SubFolder.Path, True
Next SubFolder
End If
Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing
End sub
おかげ
何も動作しません
For Each SubFolder In SourceFolder.SubFolders
後に以下のコードを追加します。すべてのxlファイルを正しく取得します。 –
あなたのフォルダとサブフォルダにいくつかのpdfを追加してファイルをエクセルして、もう一度やり直してください。メインの問題は別のpdfファイルのサブフォルダです.. – Shan