「UQP」ワークブックにコピーしている「プロパティ」ワークブックに 2 つのシートがあります。
PropertyCoverage -
=VLOOKUP("PF",tPremium,2,0)
他のテキストと単純な SUM 数式の間に数式を格納します。xmlProperty - Houses テーブル
tPremium
(他のテーブルの中でも、XML ソースにマップされたすべてのテーブル)
これら 2 つのシートを UQP ワークブックに (同時に) コピーするtPremium
と、PropertyCoverage シートの数式の参照が自動的に に変わりますtAutoForms
。これは、UQP ワークブックの別のテーブルです (数式とは関係ありません)。UQP ワークブックには、他にもいくつかのシートとテーブルがあります。
これが自動的に変更される理由はわかりませんが、少なくとも 1 つのシートにテーブルが含まれている場合、Excel が複数のシートをコピーできないという事実と関係があると思います。
以下の解決策を試しました(ここから参照)。ただし、同じ問題が発生します。新しいワークブックにコピーすると、問題は発生しません。... 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 を使用しています。