問題:
あなたは私の最後の希望です。私はこの問題に 3 日間取り組んできましたが、うまくいきませんでした (そして、イライラするほどインターネット上の情報はほとんどありませんでした...)。
「マスター」ファイルのコピーを作成するマクロがあります (いくつかのモジュールといくつかのシートを新しいコピーにコピーします)。コピーされたシートの 1 つには、「マスター」ファイルのデータを参照するいくつかのピボットとスライサーが含まれています。
このマスター ファイルのコピーには、マスター ファイルのようにデータセット全体が含まれているわけではなく、これらのカットはさまざまなユーザーによって使用されるため、ピボットでマスター データセットを参照したくありません。したがって、私の課題は、各ピボットのソース データを変更し (できればすべて同じPivotCache
)、該当するスライサーを必要なピボットに接続することでした。
スライサーをピボットから切断するコードは正常に機能し、スライサーを再接続するコードは正常に機能します。データ ソースを変更するための最初のピボットを取得できません。
イライラするのは、2 つの別々の機会にそれを機能させたのにRun-time error '13': Type mismatch
、次にテストしたときにそれがスローされることです。
私が最初に考えたのは、ワークブック/シート名を十分に具体化していなかったので、正確なワークブックとシートを反映するようにコードを修正したことです。残念ながら、エラーはまだ存在します。参照されているワークブックとシートの両方が存在し、欠落している列ヘッダーはなく、名前のピボットがPivotTable1
あり、範囲が正しく設定されています。
With
エラーは、ステートメントの 2 行目にスローされます。
私のコード(抜粋):
Dim pTable As PivotTable
Dim LEADData As Range
Dim sCache As SlicerCache
Dim pCache As PivotCache
thislastrow = Sheets("LEAD Data").Range("B" & Rows.Count).End(xlUp).Row
Set LEADData = Workbooks(cutwkbk2).Sheets("LEAD Data").Range("B9:AT" & thislastrow)
'Workbooks(cutwkbk2).Activate
With Workbooks(cutwkbk2).Sheets("Cabinet Reporting")
'Debug.Print .PivotTables("PivotTable1").SourceData
.PivotTables("PivotTable1").ChangePivotCache Workbooks(cutwkbk2).PivotCaches.Create(xlDatabase, LEADData)
End With
のようなピボット インデックスも使用してみました.PivotTables(1)
が、それでもエラーがスローされます。私にとって不可解な部分は、2つの別々の機会でどのように機能したかですが、テスト間で何も変更されていないにもかかわらず失敗します...
提案を提供してください!私はこれで途方に暮れています!