|
楼主 |
发表于 2017-9-20 20:41
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
第七种方法:
'终于修改好了,期待更简便的方法。
Sub Test11()
'可以排除本身文件,不需将本身文件放到文件夹外
Dim startfolder As String
Dim arr(1 To 500, 1 To 70), i%
startfolder = "C:\Users\YYB\Desktop\递归法提取数据 未实现\" '指定文件夹
Set folderlist = CreateObject("scripting.dictionary")
Set filelist = CreateObject("scripting.dictionary")
i1 = 1
folderlist.Add startfolder, ""
Do While folderlist.Count > 0
For Each FolderName In folderlist.keys
fName = Dir(FolderName, vbDirectory)
Do While fName <> ""
If fName <> ".." And fName <> "." Then
If GetAttr(FolderName & fName) And vbDirectory Then
folderlist.Add FolderName & fName & "\", ""
Else
filelist.Add FolderName & fName, "" '这里列出的该文件的路径+文件名
End If
End If
fName = Dir
Loop
folderlist.Remove (FolderName)
Next
Loop
Windows("递归.xlsm").Activate
For Each F In filelist.keys '将文件路径+文件名放在当前工作表的A列
If Mid(F, Len(ThisWorkbook.Path) + 2, Len(F) - Len(ThisWorkbook.Path) - 1) <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(F)
With wb
With .Sheets(1)
i = i + 1
arr(i, 1) = .Range("D1")
arr(i, 2) = .Range("J1")
arr(i, 3) = .Range("O1")
arr(i, 4) = .Range("E7")
arr(i, 5) = .Range("E8")
arr(i, 6) = .Range("E9")
arr(i, 7) = .Range("E10")
arr(i, 8) = .Range("E11")
arr(i, 9) = .Range("E12")
arr(i, 10) = .Range("E13")
arr(i, 11) = .Range("M7")
arr(i, 12) = .Range("M8")
arr(i, 13) = .Range("M9")
arr(i, 14) = .Range("M10")
arr(i, 15) = .Range("M11")
arr(i, 16) = .Range("M12")
arr(i, 17) = .Range("B7")
arr(i, 18) = .Range("B8")
arr(i, 19) = .Range("B9")
arr(i, 20) = .Range("B10")
arr(i, 21) = .Range("B11")
arr(i, 22) = .Range("B12")
arr(i, 23) = .Range("B13")
arr(i, 24) = .Range("J7")
arr(i, 25) = .Range("J8")
arr(i, 26) = .Range("J9")
arr(i, 27) = .Range("J10")
arr(i, 28) = .Range("J11")
arr(i, 29) = .Range("J12")
arr(i, 30) = .Range("J15")
arr(i, 31) = .Range("J16")
arr(i, 32) = .Range("J17")
arr(i, 33) = .Range("J18")
arr(i, 34) = .Range("J19")
arr(i, 35) = .Range("J20")
arr(i, 36) = .Range("J21")
arr(i, 37) = .Range("J22")
arr(i, 38) = .Range("J23")
arr(i, 39) = .Range("J24")
arr(i, 40) = .Range("J25")
arr(i, 41) = .Range("J26")
arr(i, 42) = .Range("J27")
arr(i, 43) = .Range("J28")
arr(i, 44) = .Range("J29")
arr(i, 45) = .Range("J30")
arr(i, 46) = .Range("J31")
arr(i, 47) = .Range("J32")
arr(i, 48) = .Range("J33")
arr(i, 49) = .Range("J34")
arr(i, 50) = .Range("C15")
arr(i, 51) = .Range("C16")
arr(i, 52) = .Range("C17")
arr(i, 53) = .Range("C18")
arr(i, 54) = .Range("C19")
arr(i, 55) = .Range("C20")
arr(i, 56) = .Range("C21")
arr(i, 57) = .Range("C22")
arr(i, 58) = .Range("C23")
arr(i, 59) = .Range("C24")
arr(i, 60) = .Range("C25")
arr(i, 61) = .Range("C26")
arr(i, 62) = .Range("C27")
arr(i, 63) = .Range("C28")
arr(i, 64) = .Range("C29")
arr(i, 65) = .Range("C30")
arr(i, 66) = .Range("C31")
arr(i, 67) = .Range("C32")
arr(i, 68) = .Range("C33")
arr(i, 69) = .Range("C34")
End With
arr(i, 70) = .Name
.Close False
End With
[a2].Resize(5000, 70).ClearContents
[a2].Resize(5000, 70).Borders.LineStyle = xlNone
[a2].Resize(i, 70) = arr
[a2].Resize(i, 70).Borders.LineStyle = 1
Set wb = Nothing
End If
Next
End Sub |
|