ブック間のシートコピーで数式にブック名が挿入される場合の対処方法|VBA

   

Book1からBook2にシートをコピーする際、コピー元のシートに別のシートを参照している箇所があると下記の様にコピー先で元のブック名が挿入されてしまいます。

  • コピー元(Book1)
    =SheetB!A1
  • コピー先(Book2)
    ='パス\[Book1.xlsx]SheetB'!A1

この場合の対処方法です。

参照元のシートを一緒にコピーする

変更前のソース

Workbooks.Add
book1.Sheets("SheetA").Copy before:=ActiveWorkbook.Sheets(1)
book1.Sheets("SheetB").Copy before:=ActiveWorkbook.Sheets(1)

変更後のソース

Workbooks.Add
book1.Sheets(Array("SheetA", "SheetB")).Copy before:=ActiveWorkbook.Sheets(1)

なお、下記の様に参照元のシートを先にコピーする方法も試してみましたが、それでは駄目でした。

Workbooks.Add
' 元の book を参照してしまうので NG.
book1.Sheets("SheetB").Copy before:=ActiveWorkbook.Sheets(1)
book1.Sheets("SheetA").Copy before:=ActiveWorkbook.Sheets(1)

 - VBA