【发布时间】:2016-12-16 18:49:52
【问题描述】:
我有一个加快计算速度的工作簿(长话短说)我创建了一个宏来将三张工作表复制到另一个文件中,然后另一个宏将它们复制回来。
要复制的宏工作正常,但是复制回一张纸后要复制的宏会停止。
我在 StackOverflow 中进行了搜索,发现了一些类似的问题,但找不到有效的答案。一篇帖子认为它与 Office 版本有关,另一篇则与 Shift 键问题有关。
代码如下:
Application.Calculation = xlCalculateManual
Application.ScreenUpdating = False
Application.DisplayAlerts = True
Application.EnableEvents = False
'
' Set up the workbooks
'
Set ThisWkb = ThisWorkbook
Fname = Application.GetOpenFilename( _
fileFilter:="Excel Macro Files, *.xlsm", _
Title:="Select the Storage File", _
MultiSelect:=False)
Set StorageWbk = Workbooks.Open(Fname)
'
MsgBox ("Beginning process - please click ok to any macro warning - you will see a confirmation when complete")
StorageWbk.Sheets("Sh A").Copy After:=ThisWkb.Sheets(ThisWkb.Sheets.Count)
StorageWbk.Sheets("Sh B").Copy After:=ThisWkb.Sheets(ThisWkb.Sheets.Count)
StorageWbk.Sheets("Sh C").Copy After:=ThisWkb.Sheets(ThisWkb.Sheets.Count)
StorageWbk.Close
我有时会发现,如果我随后删除新工作表并再次运行宏,它有时会工作并读取所有三个工作表,但有时也不会。
非常感谢任何帮助。
【问题讨论】:
-
宏在一张纸后就停止了,还是报错?
-
嗨蒂姆,谢谢你的问题。宏只是停止,没有错误。
-
如果您一次复制所有三张纸会发生什么 -
StorageWbk.Sheets(Array("Sh A", "Sh B", "Sh C")).Copy After:=ThisWkb.Sheets(ThisWkb.Sheets.Count)? -
您的工作簿中有隐藏的工作表吗?您也可以将要复制的工作表索引设置为 1 以进行测试吗?
-
您应该将其发布为答案。