2016-07-13 44 views
1

Ich verwende den folgenden Code, um alle Dateien mit xls, xlsx oder xlsm-Erweiterung aus dem Ordner und seinem Unterordner aufzulisten. Der folgende Code funktioniert, aber das Problem ist, es listet alle Dateien mit allen Erweiterungen aus Unterordnern auf, aber Listen nur Excel-Dateien aus dem Hauptordner. Ich kann nicht herausfinden, was mit diesem Code falsch ist. Kannst du mir bitte Helfen?Verwenden von VBA FileSystemObject, spezifische Datei Dateierweiterung

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 

Dank

+0

Nichts funktioniert. Es ruft alle xl-Dateien korrekt ab. –

+0

fügen Sie einige pdf zu Ihren Ordnern und Untermappen zusammen mit Excel-Dateien und versuchen Sie es erneut..main Problem ist mit Unterordnern mit anderen oder PDF-Dateien .. – Shan

Antwort

0

Fügen Sie den folgenden Code nach For Each SubFolder In SourceFolder.SubFolders

Call List_XL_Files(SheetName, SubFolder.Path, True) 

Es ist falsch

+0

Danke ..ich vergessen, dort zu ändern. Ich habe zwei Versionen dieses Codes. – Shan

+0

Es passiert manchmal. –