私はvbaに複数のピボットのデータソースを変更させることに困惑しています。 私は多くの提案を読んできており、どれも今まで私を助けてくれていません。私は間違っていることを理解していないので、最終的にここで私の質問をします。 ピボットを含む複数のファイルがあり、列が挿入され、ピボットデータソースが変更されているため、変更が必要です。私はこれを正しい範囲に変更したい。vbaを使用してピボットソースを変更すると動作しません
Sub change_pivotsource()
Dim pt As PivotTable
Dim pts As PivotTables
Dim pt_source As String
Dim ws As Worksheet
Dim wb As Workbook
Set wb = ActiveWorkbook
workbookname = ActiveWorkbook.Name
sheetname = Left(workbookname, Len(workbookname) - 5)
pt_source = "'" & sheetname & "'!$A:$T"
For Each ws In wb.Worksheets
For Each PivotTable In ws.PivotTables
pt.SourceData = pt_source
Next PivotTable
Next ws
End Sub
私は、最終的なデータソースの場所である文字列を持っているワークブック名を使用しています:私はこのコードを作成しました。
ブック内のピボットごとにピボットソースとしてpt_sourceを使用するにはどうすればよいですか? 多くの時間が、私はエラー「を持つオブジェクトまたはブロック変数が設定されていません」を取得
編集1:
このコードが実行中に私にエラー7を与える:メモリ不足: し、それが強調表示されます「pt_source = "-行。
Sub change_pivotsource()
Dim ws As Worksheet
Dim wb As Workbook
Dim pt As PivotTable
Dim sheetname As String
Dim pt_source As String
Dim workbookname As String
workbookname = ThisWorkbook.Name
sheetname = Left(workbookname, Len(workbookname) - 5)
pt_source = Sheets(sheetname).Range("$A:$T")
For Each ws In ThisWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.ChangePivotCache _
wb.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:=pt_source)
Next pt
Next ws
'workbook.save
End sub
このコードは、私の質問を解決:ソリューションへ
Sub UpdatePivotCaches()
' Updates each pivot cache in the current workbook.
Dim pt As PivotTable ' Used to loop over each pivot table.
Dim ws As Worksheet ' Used to loop over each work sheet.
Dim sheetname As String
Dim pt_source As String
Dim workbookname As String
workbookname = ThisWorkbook.Name
sheetname = Left(workbookname, Len(workbookname) - 5)
' Loop over each sheet.
For Each ws In ActiveWorkbook.Sheets
' Loop over each pivot table on the sheet.
For Each pt In ws.PivotTables
' Update the pivot cache.
pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create(xlDatabase, "'" & sheetname & "'!$A:$T", xlPivotTableVersion14)
Next
Next
End Sub
キー(この質問以下のコメントを参照してください)versionパラメータであったかもしれません。 宛先データに感謝
ありがとうございました。私はマクロレコーダーを試しましたが、ピボットソースを変更するために何も返されませんでした。私はすべて同じピボットキャッシュを使用する複数のピボットを持っています。私は単純にコードを "worksheet.pivottablesの各ピボットテーブルのために変更することはできますか? – DutchArjo
私のコードは引数付きで依頼し続けていますが、今日解決しているウェブサイトはありません。すべてのピボットデータソースをこの範囲に変更したいだけです** ** 'Rustgevers - Values'!$ A:$ T **。しかし、それは達成するのが難しいようです。 – DutchArjo
私の答えはaです –