我在“属性”工作簿中有两张表,我正在复制到“UQP”工作簿。
PropertyCoverage - 在其他文字和简单SUM公式中设置公式
=VLOOKUP("PF",tPremium,2,0)
。xmlProperty - Houses表
tPremium
(以及其他表;所有表映射到XML Source)
当我将这两张(同时)复制到UQP工作簿中时,PropertyCoverage表中公式中的tPremium
引用会自动更改为tAutoForms
,这是UQP工作簿中的另一个表(具有与公式无关)。 UQP工作簿还有其他几张表格。
我不知道为什么会自动更改,但我认为这与Excel在至少一张工作表包含表格时无法复制多张工作表的事实有关。
我尝试过以下解决方案(引自here)。但是,同样的问题也会发生。如果我复制到新工作簿,则不会发生此问题。 ... 忍受ActiveWorkbook等,我只用它来测试它是否可行
Sub Copy_Worksheets()
Dim wbMaster As Workbook
Set wbMaster = Workbooks("UniversalQuoteProposal.xlsb")
Dim TheActiveWindow As Window
Dim TempWindow As Window
With ActiveWorkbook
Set TheActiveWindow = ActiveWindow
Set TempWindow = .NewWindow
.Sheets(Array("PropertyCoverage", "xmlProperty")).Copy Before:=wbMaster.Worksheets(1)
End With
TempWindow.Close
End Sub
这是我的原始复制代码:
Sub CopySheetsToMaster()
Dim wbMaster As Workbook
Set wbMaster = Workbooks("UniversalQuoteProposal.xlsb")
Dim sSheetName As String
sSheetName = Replace(ThisWorkbook.Name, ".xlsb", "")
Dim sSheets As Variant
sSheets = Array(sSheetName & "Coverage", "xml" & sSheetName)
'*** => This is where tPremium gets automatically changed to tAutoForms
ThisWorkbook.Worksheets(sSheets).Copy Before:=wbMaster.Worksheets(1)
wbMaster.ChangeLink ThisWorkbook.FullName, wbMaster.FullName, xlLinkTypeExcelLinks
End Sub
最后,我可以通过在复制工作表之后执行替换来解决这个问题,但是由于这将扩展到需要为表格等提供可能的公式引用的7-10个其他工作簿,我宁愿找到一个更清洁的解决方案(如果存在)。
最后,我使用的是Excel 2010。