所以我已经工作了几个小时,如何让现有的代码按照我想要的方式运行 . 此代码本身将遍历目录中的工作簿,并将第一个工作表上的特定单元格中的数据复制到新工作簿 . 我想让它做到这一点,但也要浏览每个工作簿中的每个工作表以获取所需的数据 . 我会发布我尝试的所有数据版本但是,我确信这也会让我被禁止 . 所以我会发布我最近的:
Sub GatherData()
Dim wkbkorigin As Workbook Dim origininsheet As Worksheet Dim destsheet As Worksheet Dim ResultRow As Long Dim Fname As String Dim RngDest As Range Dim Ws As Worksheet
Set destsheet = ThisWorkbook.Worksheets("Sheet1")
Set RngDest = destsheet.Cells(Rows.Count, 1).End(xlUp) _
.Offset(1, 0).EntireRow
Fname = Dir(ThisWorkbook.Path & "/*.xlsm")
'loop through each file in folder (excluding this one)
Do While Fname <> "" And Fname <> ThisWorkbook.Name
Set wkbkorigin = Workbooks.Open(ThisWorkbook.Path & "/" & Fname)
'Set originsheet = wkbkorigin.Worksheets("1st")
For Each ws In wkbkorigin
With ws
RngDest.Cells(1).Value = .Range("D3").Value
RngDest.Cells(2).Value = .Range("E9").Value
'.Cells(3).Value = originsheet.Range("D22").Value
'.Cells(4).Value = originsheet.Range("E11").Value
'.Cells(5).Value = originsheet.Range("F27").Value
End With
Next
wkbkorigin.Close SaveChanges:=False 'close current file
Set RngDest = RngDest.Offset(1, 0)
Fname = Dir() 'get next file
Loop
结束子
所以当前版本给出了错误“运行时错误1004,应用程序定义或对象定义错误 .
我尝试过的代码的早期版本已经完成了以下操作:-did根本不复制任何数据(使用“For each ws”语句)-Error“Loop without Do”(使用带有计数器的for语句)-General compilations errors .
我之前已经问过这个问题,但我认为这个问题是独一无二的,因为我没有看到一个问题,要求将每个工作簿中的每个工作表循环到一个目录中 . 我做了一些研究,似乎所有这些都是在一个工作簿中循环工作表 .
任何帮助,将不胜感激 .
谢谢
1 回答
您需要的构造是:
此外,这是一个切线,但我会放在这里只是为了说明一些可能的混淆点 - 看看在VBA中迭代/循环的几种方式: