我正在尝试遍历excel文件的文件夹(大约6个文件左右),从命名表中复制数据并将值粘贴到主文件中。我试过使用DataBodyRange而不是标准范围,但是将其粘贴到ThisWorkbook(主机将在其中居住)时遇到了问题。粘贴目标与源的大小相同,应粘贴到下一个空行,依此类推。我花了两天时间在墙上敲打头,无法解决。任何帮助或见识都将是惊人的。
Sub SalesTrackerCompiler()
Dim Myfile As String, str As String, mydir As String, wb As Workbook
Set wb = ThisWorkbook
mydir = "C:\Users\$$$$$$$$$$$$\"
Myfile = Dir(mydir & "*.xlsm")
ChDir mydir
Application.ScreenUpdating = 0
Dim erow As Long
Do While Myfile <> ""
Workbooks.Open (Myfile)
With Worksheets("Data Input Table")
Worksheets("data input table").ListObjects("DataInputSource").AutoFilter.ShowAllData
Set rng = ListObjects.Item(1).DataBodyRange.Select
rng.Copy wb.Worksheets("regional source data").Cells(Rows.Count, "a").End(xlUp).Offset(1, 0)
ActiveWorkbook.Close True
End With
Myfile = Dir()
Loop
End Sub
在您知道错误所在的行上添加一个断点,运行代码,当它停止时,使用立即窗口并键入?ListObjects(1).Name
,按Enter键,看看是否遇到相同的错误,建议您这样做。
您需要参考特定的工作簿和工作表才能获取ListObject。尝试更改
Workbooks.Open (Myfile)
to
set new_workbook = Workbooks.Open(Myfile)
然后使用(假设ListObject在工作表1中)
Set rng = new_workbook.Worksheets(1).ListObjects(1).DataBodyRange