这是我面临的情况:
我有一个包含两个工作表的工作簿,“Survey”和“Configuration”。配置工作表具有链接到测量工作表的单元格。
我正在尝试将这些工作表复制到新工作簿中。但是,完成复制后,新工作簿中“配置”选项卡中的单元格将指向旧工作簿。我想到的一个解决方案是将值复制到新工作表/新工作簿,但我的客户端不希望这样:他们希望公式仍然存在,以防他们想要更新“调查”选项卡上的某些数据并让它继续进行配置。
有没有办法复制工作表,以便任何单元格引用保持不变(即仍然指向“Survey!A1”而不是指向“OldWorkbook!Survey!A1”?
修改 我正在尝试使用Worksheets(Array(...))。复制方法。我现在遇到的问题是我有一个字符串数组,其中包含两个源工作簿共有的工作表的名称。如果我将数组替换为数组(...),则代码会爆炸。不幸的是,我不知道哪些工作表对源工作簿是通用的,所以我不能硬编码Array函数的列表,我尝试创建一个看起来像Array的参数列表的字符串并使用它,但代码也不喜欢这样。
'Initialize indexes and arrays and stuff
intSheetsInCommonIndex = 1
intDiscrepanciesIndex = 1
intSheetsInNPEIndex = 1
lngDiscrepancyBackColor = RGB(202, 6, 95)
Application.ScreenUpdating = False
For intInner = 1 To 40
strSheetsInCommon(intInner) = ""
strSheetsInNPE(intInner) = ""
Next intInner
'Set up the pointers to the two source workbooks.
Set xlNPEWorkbook = Application.Workbooks.Open(Sheets("Combine PE Workbooks").txtNPEDocLocation)
Set xlSPEWorkbook = Application.Workbooks.Open(Sheets("Combine PE Workbooks").txtSPEDocLocation)
'Now, fill the strSheetsInNPE array
For Each xlNPECurrentSheet In xlNPEWorkbook.Sheets
strSheetsInNPE(intSheetsInNPEIndex) = xlNPECurrentSheet.Name
intSheetsInNPEIndex = intSheetsInNPEIndex + 1
Next xlNPECurrentSheet
'Now go through the SPE document. If the workhseet's name is in strSheetsInNPE, add that name to strSheetsInCommon.
For Each xlSPECurrentSheet In xlSPEWorkbook.Sheets
For intInner = 1 To intSheetsInNPEIndex
If xlSPECurrentSheet.Name = strSheetsInNPE(intInner) Then
strSheetsInCommon(intSheetsInCommonIndex) = xlSPECurrentSheet.Name
intSheetsInCommonIndex = intSheetsInCommonIndex + 1
Exit For
End If
Next intInner
Next xlSPECurrentSheet
'Turn alerts off (so that the messages about named ranges don't show up) and turn on the hourglass.
Application.DisplayAlerts = False
Application.Cursor = xlWait
'Create the combined document
Set xlCombinedWorkbook = Workbooks.Add
xlCombinedWorkbook.UpdateLinks = xlUpdateLinksNever
'Go through the NPE document and add all worksheets from there to the new workbook.
xlNPEWorkbook.Worksheets(Array(strSheetsInCommon)).Copy xlCombinedWorkbook.Sheets(1)
如果有人对如何使用我的工作表名称数组进行多页复印有任何建议,我将不胜感激。
感谢您的帮助!
答案 0 :(得分:1)
也许我忽略了一些细节,但为什么不简单地使用SaveAs将旧工作簿保存到新工作簿?参考文献将到位,您将有一个新的工作簿。