.
Your coding worked. I saw a list of all the files within each sub-folder.
Please update the macro to perform the actual reading of the files.
I guess I should have mentioned that the reason I didn't send the revision is that the allexperts puked on it. So I guess it was too big with both versions. Here is your code with the sub-folder code integrated: ( I can't really test this since I don't have your files, but I would expect it to work).
Sub Collect_Dwg_List_Data() Dim Dest As Worksheet, sh As Worksheet Dim rw As Long, spath As String, sname As String Dim bk As Workbook Dim i As Long, j As Long Dim DirectoriesAndFiles As Variant Dim Directories As Variant Dim Count As Long Dim Counter As Long
Set Dest = ActiveSheet rw = 2 spath = "C:\Data files" '<== no slash on the end
ReDim DirectoriesAndFiles(1 To 1) ReDim Directories(1 To 1) Count = 0 Counter = 0
LookForDirectories spath, DirectoriesAndFiles, Directories, Count, Counter GetFilesInDirectory spath, DirectoriesAndFiles, Directories, Count, Counter
For j = LBound(DirectoriesAndFiles) To UBound(DirectoriesAndFiles) sname = DirectoriesAndFiles(j)
Set bk = Workbooks.Open(sname) For Each sh In bk.Worksheets For i = 11 To 50 If Len(Trim(sh.Cells(i, "B"))) > 0 Then
If Left(sh.Cells(i, "B"), 5) <> "XX-XX" Then
Dest.Cells(rw, "A").Value = sh.Cells(i, "B").Value
Dest.Cells(rw, "B").Value = sh.Cells(i, "F").Value
Dest.Cells(rw, "F").Value = sh.Cells(i, "G").Value
Dest.Cells(rw, "C").Value = sh.Range("C7").Value
Dest.Cells(rw, "D").Value = sh.Range("G6").Value
Dest.Cells(rw, "E").Value = sh.Range("H7").Value
rw = rw + 1
End If
End If Next i Next sh bk.Close SaveChanges:=False Next j
Dest.Columns(2).NumberFormat = "0%" Dest.Columns(5).NumberFormat = "mm/dd/yyy" Dest.Columns(6).NumberFormat = "mm/dd/yyy"
End Sub
'=============================
Sub LookForDirectories(ByVal DirToSearch As String, _ DirectoriesAndFiles As Variant, Directories As Variant, _ Count As Long, Counter As Long)
Dim i As Integer
Dim Contents As String
Dim oldCount As Long
oldCount = Counter
If Right(DirToSearch, 1) <> "\" Then _
DirToSearch = DirToSearch & "\"
Contents = Dir(DirToSearch, vbDirectory)
Do While Contents <> ""
If Contents <> "." And Contents <> ".." Then
If (GetAttr(DirToSearch & Contents) And vbDirectory) = vbDirectory Then
If Not IsEmpty(Counter) Then _
Counter = Counter + 1
ReDim Preserve Directories(1 To Counter)
Directories(Counter) = DirToSearch & Contents
End If
End If
Contents = Dir()
Loop
If Counter = 0 Then Exit Sub
For i = oldCount + 1 To Counter
GetFilesInDirectory Directories(i), _
DirectoriesAndFiles, Directories, Count, Counter
LookForDirectories Directories(i), _
DirectoriesAndFiles, Directories, Count, Counter
Next i
End Sub
'=====================================================================
Sub GetFilesInDirectory(ByVal DirToSearch As String, _ DirectoriesAndFiles As Variant, Directories As Variant, _ Count As Long, Counter As Long)
Dim NextFile As String
NextFile = Dir(DirToSearch & "\" & "*.xls?", vbHidden)
Application.StatusBar = "Files Found " & Count _
& " " & "Searching " & DirToSearch & "\"
Do Until NextFile = ""
If Not IsEmpty(DirectoriesAndFiles) Then _
Count = Count + 1
ReDim Preserve DirectoriesAndFiles(1 To Count)
DirectoriesAndFiles(Count) = DirToSearch & "\" & NextFile
NextFile = Dir
Loop
End Sub
Advertisement