复制工作表时公式更改中的表引用

时间:2016-12-28 16:24:05

标签: excel vba excel-vba copy listobject

我在“属性”工作簿中有两张表,我正在复制到“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。

0 个答案:

没有答案