1 つのワークブックから新しいワークブックに 3 つのシート (2 つのシートはピボット テーブル、1 つはそれらのピボットのソース データ) をコピーしようとしています。
以下のコードは、目的のシートを新しいワークブックにコピーして保存します (変更されたオリジナル):
Sub ExportFile()
Dim NewName As String
Dim nm As Name
Dim ws As Worksheet
With Application
.ScreenUpdating = False
On Error GoTo ErrCatcher
' Array of sheets to copy
Sheets(Array("sourcedata", "pivot", "pivot2")).Copy
On Error GoTo 0
For Each ws In ActiveWorkbook.Worksheets
ws.Cells.Copy
' Paste sheets
ws.[A1].PasteSpecial
' Remove external links, hyperlinks and hard-code formulas
ws.Cells.Hyperlinks.Delete
Application.CutCopyMode = False
' Select A1 on sheet
Cells(1, 1).Select
ws.Activate
Next ws
Cells(1, 1).Select
' Save it in the same directory as original and close
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\export.xls"
ActiveWorkbook.Close SaveChanges:=False
.ScreenUpdating = True
End With
Exit Sub
ErrCatcher:
MsgBox "Specified sheets do not exist within this workbook"
End Sub
ただし、新しいワークブックを開くと、ピボット テーブルのデータ ソースは依然として元のワークブックを指しています。私の同僚は、これはシートがグループではなく 1 つずつコピーされているためであると説明し、シートを範囲としてコピーすることを提案しました。シートを範囲としてコピーするにはどうすればよいですか、またはデータ ソースを新しいコピーされたシートに変更する方が簡単な方法でしょうか?