|
- Sub 读取()
- Dim sh As Worksheet, wb As Workbook
- Application.ScreenUpdating = False
- x = [k1]
- Set fso = CreateObject("scripting.filesystemobject")
- Set ff = fso.getfolder(ThisWorkbook.Path)
- For Each fff In ff.subfolders '对于每一个子文件夹
- Worksheets.Add after:=Sheets(Sheets.Count) '新建工作表
- Set sh = ActiveSheet
- sh.Name = fff.Name '新表名=子文件夹名
- ReDim brr(1 To 10000, 1 To 30)
- For Each f In fff.Files '对于子文件夹中的每一个文件
- Set wb = Workbooks.Open(f)
- k = Val(f.Name) '文件名对应的数值
- If r > 0 Then r = r + 1
- With wb.Sheets(k) '文件名c,取对应工作表c
- arr = .UsedRange
- cc = UBound(arr, 2)
- If cc > cmax Then cmax = cc
- For i = 1 To UBound(arr)
- If arr(i, cc) = x Then '找最后一个数为指定数的行
- If i = 1 Then '判断该行是上行还是下行,j为上行
- j = 1
- Else
- If arr(i - 1, 1) <> "" Then j = i - 1 Else j = i
- End If
-
- r = r + 1
- For c = 1 To cc '符合条件的读入Brr
- brr(r, c) = arr(j, c)
- brr(r + 1, c) = arr(j + 1, c)
- Next
- r = r + 2
- End If
- Next
- End With
- wb.Close False
- Next
- If r > 0 Then sh.[a1].Resize(r, cmax) = brr
- r = 0: cmax = 0
- Next
- Application.ScreenUpdating = True
- End Sub
复制代码 |
|