【发布时间】:2017-07-14 19:46:57
【问题描述】:
正如标题所说,我正在尝试将一组工作簿中的所有可见工作表复制到一个工作簿中。
所有工作簿始终位于同一目录中,但文件名会有所不同。我最初尝试使用下面的代码,但我遇到了“下一张表”行尝试转到工作簿中的下一张表的问题,即使没有更多的工作表也是如此。
更具体地说,我尝试合并的基础工作簿具有不同数量的工作表;有些人有一个,有些人有很多,有些人也有很多隐藏的工作表。我只是想复制可见的工作表,并且需要能够处理工作簿可能有一张或多张工作表的情况。
我尝试了下面代码的变体,在其中我会计算工作表并在有一张或多张工作表时转到单独的代码,但这也不起作用。非常感谢任何帮助,感谢大家的宝贵时间。
Sub ConslidateWorkbooks()
Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet
Application.ScreenUpdating = False
FolderPath = "MyPath"
Filename = Dir(FolderPath & "*.xls*")
Do While Filename <> ""
Workbooks.Open Filename:=FolderPath & Filename
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy after:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
您是否只是在单步执行代码并检查副本是否有效时遇到问题?
ActiveWorkbook应该是由Workbooks.Open语句打开的工作簿,但如果您在代码运行时与工作簿交互,ActiveWorkbook将是您正在查看的任何工作簿当它到达那条线时。 (这就是不鼓励使用ActiveWorkbook、ActiveSheet、Selection等的原因。)