我有一个问题,老实说让我不知所措。
我正在复制“主”工作簿中的一组工作簿(复制所有工作表)。我可以使用两种方法,要么遍历工作簿中的每张工作表来复制主工作簿中的每一个工作表,要么复制整个工作簿并将其放入主工作簿中。我正在使用第二种方法,使用数组丢弃我不需要的纸张。
Dim ws() As String ' declare string array
ReDim ws(wb.Worksheets.Count) As String ' set size dynamically
Dim counter As Long ' running counter for ws array
counter = 0
For c = 1 to WS_Count
If wb.Worksheets(c).Name <> "TEST" Then
ws(counter) = wb.Worksheets(c).Name
counter = counter + 1
End If
Next
ReDim 将 ws(counter-1) 保留为字符串
wb.Worksheets(ws).复制前:=master.Worksheets(master.Worksheets.Count)
我尝试过的两种方法都可以很好地处理某些文件:
1)第一种方法是有问题的,因为它留下了对原始文件的引用,因此我转向方法 2,它绕过了这个问题,因为没有保留引用。
2) 方法 2 会导致某个文件中出现某种无限循环。有趣的是,如果我更改它们合并的顺序,命令不会卡住,并且对于另外大约 50 个工作簿,代码似乎工作得很好。 (请注意,方法 1 不会出现此问题,但由于文件链接,方法 1 已被丢弃)
它简单地卡住的行(没有错误)是
wb.Worksheets(ws).复制前:=master.Worksheets(master.Worksheets.Count)
有人遇到过文件不想合并的问题吗?我是否在某个地方达到了某些限制?我很茫然,因为使用 26 个不同的工作簿,我的整个代码设法创建了一个包含 896 个工作表的主工作簿。在这个陷入困境的集合中,我将 164 个工作表文件与包含 164 个文件的新工作表合并。我正在使用 Office Professional Plus 2010。
我目前正在隐藏警报,但我相信我收到了那些询问我是否要等待申请的消息。
有人可以给我指出正确的方向吗?
最佳答案
由于您要跳过“测试”页面,您是否尝试过从最后一页开始并步进 -1?
For c = WS_Count to 1
If wb.Worksheets(c).Name <> "TEST" Then
ws(counter) = wb.Worksheets(c).Name
counter = counter - 1
End If
Next c
关于excel - 在另一个工作簿中复制工作簿时的 VBA Excel 问题 - 应用程序在复制特定文件时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24346904/