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

标签 excel vba

我有一个问题,老实说让我不知所措。

我正在复制“主”工作簿中的一组工作簿(复制所有工作表)。我可以使用两种方法,要么遍历工作簿中的每张工作表来复制主工作簿中的每一个工作表,要么复制整个工作簿并将其放入主工作簿中。我正在使用第二种方法,使用数组丢弃我不需要的纸张。

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/

相关文章:

excel - 在 VBScript 中将 IF 语句拆分为多行

excel - 使用 VBA 从数组中删除重复项

excel - Excel 2016 for Mac 中的 VBA 宏 : SaveAs will not work with a CSV file format

excel - 通过任务计划程序运行时 Powershell 脚本停止工作

excel - 如何等待 Power Query 刷新完成?

excel - 仅将二维数组的某些元素/列写回工作表

excel - 如何在不提示用户保存文件的情况下保存 Excel?

Excel - 多个值,需要从查找中添加值

excel - 计算某些单词在word文档中出现的次数并将其导出到excel

xml - 在VBA中获取XML的所有节点