2016-07-13 34 views
1

私は、フォルダとそのサブフォルダから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 

おかげ

+0

何も動作しませんFor Each SubFolder In SourceFolder.SubFolders

Call List_XL_Files(SheetName, SubFolder.Path, True) 

後に以下のコードを追加します。すべてのxlファイルを正しく取得します。 –

+0

あなたのフォルダとサブフォルダにいくつかのpdfを追加してファイルをエクセルして、もう一度やり直してください。メインの問題は別のpdfファイルのサブフォルダです.. – Shan

答えて

0

はそれが間違って

+0

ありがとうございます。私はこのコードの2つのバージョンを持っています。 – Shan

+0

時々起こる。 –

関連する問題