在另一个工作簿中复制工作簿的VBA Excel问题 – 应用程序在特定文件上的复制挂起

我有一个问题,诚实地让我感到不知所措。

我正在“主”工作簿中复制一组工作簿(复制所有工作表)。 有两种方法可以使用,可以通过工作簿中的每个工作表来复制每个工作簿中的每个工作簿,也可以将工作簿作为一个整体进行复制,并放置在主工作簿中。 我正在使用第二种方法使用数组来放弃我不需要的工作表。

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 Preserve ws(counter-1) As String wb.Worksheets(ws).Copy Before:=master.Worksheets(master.Worksheets.Count)

我试过的两种方法都能很好地处理某些文件:

1)第一种方法是有问题的,因为它留下了一个原始文件的引用,所以我转移到接近2绕过这个问题,因为没有参考保存。

2)方法2在某个文件中导致某种无限循环。 有趣的是,如果我改变它们被合并的顺序,命令不会被卡住,并且与另外大约50个工作簿的代码似乎工作得很好。 (请注意,方法1不会出现此问题,但由于文件链接,方法1已被丢弃)

它只是简单的行(没有错误)是wb.Worksheets(ws).Copy Before:=master.Worksheets(master.Worksheets.Count)

有没有人遇到过这个问题,不想合并的文件? 我在某处遇到了一些限制吗? 我不知所措,因为使用了26个不同的工作簿,我的代码完全可以创build一个896张主工作簿。 在这一套卡住了,我正在合并一个164工作表文件与一个新的工作表,包含164个文件。 我正在使用Office Professional Plus 2010。

我目前正在隐藏警报,但是我相信我正在收到那些询问我是否需要等待应用程序的消息。

任何人都可以把我指向正确的方向吗?

既然你跳过“testing”页面,你尝试从最后一页开始,步进-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