ピボット テーブルのデータ ソースを、あるシートから別のデータ ソースに変更できるコードを探しています。データ ソース シートは、データが異なるだけで同一です。
インターネットから取得したコードがありますが、アクティブ シートのデータ ソースを変更する代わりに、すべてのシートのデータ ソースが変更されます。
残念ながら、私は VBA コーディングについてあまり詳しくないので、コードを変更してアクティブ シートのみに影響を与える方法を知りません。誰かが助けてくれることを期待しています。
Option Explicit
Sub ChangeDataSourceForAllPivotTables()
Dim wb As Workbook
Dim ws As Worksheet
Dim pt As PivotTable
Dim rSourceData As Range
If ActiveWorkbook Is Nothing Then Exit Sub
On Error GoTo ErrHandler
Set wb = ActiveWorkbook
Set rSourceData = wb.Worksheets("Sheet1").Range("A1").CurrentRegion 'change the name of the worksheet accordingly
For Each ws In wb.Worksheets
For Each pt In ws.PivotTables
pt.ChangePivotCache wb.PivotCaches.Create(xlDatabase, rSourceData.Address(, , , True))
pt.RefreshTable
Next pt
Next ws
ExitTheSub:
Set wb = Nothing
Set ws = Nothing
Set pt = Nothing
Set rSourceData = Nothing
Exit Sub
ErrHandler:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, "Error"
Resume ExitTheSub
End Sub
ご協力をよろしくお願いいたします!
答え1
このコードは、特定のシート内のすべてのピボット テーブルのソース データを変更するのに役立ちます。
Sub ChangePivotSourceData()
Dim pt As PivotTable
For Each pt In ActiveWorkbook.Worksheets("Sheet1").PivotTables
pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:="MyData")
Next pt
End Sub
使い方:
Copy
&Paste
このコードは としてStandard Module
。Sheet
名前はSource Data
編集可能です。- このコードではマイデータは名前付き範囲、あなたが作成する必要があるもの走る 変更したいときは毎回このコードを入力してくださいピボットテーブルのソースデータ。
答え2
たとえば、ドキュメントを宛先ごとに分割し、関連するピボット チャートを含むさまざまな特定のファイル (宛先ごとに) を自動的に作成したいと思います。新しいピボット チャートのデータ ソースを毎回更新するにはどうすればよいでしょうか (スペイン、イタリア、フランスなど)。元のデータ ソースはすべての宛先 (ヨーロッパ) で保持されます。よろしくお願いします。
Dim pt As PivotTable
Dim MyData As Excel.ListObject
Set MyData = Application.Range(Europe).ListObject
For Each pt In ActiveWorkbook.Worksheets("Chart - City").PivotTables
pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:="MyData")
Next pt