プロが教える店舗&オフィスのセキュリティ対策術

色んなサイトから既出ソースを拝借して試していますが、どのソースもプロシージャのエラーが出て難航しています。

データソースに"A"というNamedTableを指定したピボットテーブルが多数あり
その全てにおいてデータソースを"B"というNamedTableに変更したい

一案として下記を試していますが、やはり pt.ChangePivotCacheにプロシージャエラーが出ます。

何がいけないのかご指南頂ければ幸いです。
よろしくお願いいたします。

Sub Change_Pivot_Source()

Dim pt As PivotTable

For Each pt In ActiveWorkbook.Worksheets("データソースを変更したPivotTableがあるシート名").PivotTables
pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:="B")
Next pt

End Sub

質問者からの補足コメント

  • 試して頂きありがとうございます。

    確かに自分でも他のデータセットを用意して試したら行けました。
    データソースそのものに問題があるようで…もはや断念するしかなさそうです。
    考えられる要因としては空白のセルが要所要所にあるところくらいですが、
    これは元データも同様なので…VBAだと極端にセンシティブになるのか…

    「PivotTableのデータソースを一括」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2019/05/22 14:55

A 回答 (4件)

あ!ごめんなさい。


「上か下かに大きくなって・・・」は「右か下かに大きくなって・・・」の間違いでした。
    • good
    • 0

あと、ソースが変わることでピボットの結果の表が上か下かに大きくなって、例えば、1つのシートにピボットがいくつもあると、他のピボットのエリアと重なることになってしまってエラー・・・ですとか・・・。

    • good
    • 0

どこかの列が非表示になっていて列名が抜けているとか、数式が入っているけど列名だけが抜けているとか、思わぬ結合が含まれていた、とかないでしょうか?


一度、オリジナルのソースの表を別のシートかブックに形式を選択して貼り付けにて、「値」で貼り付けして、それをソースに名前の定義と複数ピボットの作成をして、テストしてみたらどうなるでしょうか?
    • good
    • 0

こちらで、このまんまのコードをコピペし・・・、



・("データソースを変更したPivotTableがあるシート名")をピボットを2つ作ったシートの名前に変え、
・SourceData:="B" の B の部分を、2つめの範囲定義した名前に変えてみたら、

・・・エラー無く実行でき、2つのピボットのソースもそのように変更・反映されていました。


2010の32bit でやりました。

”B”という名前のまんまだったら、全角・半角などの入力違いとかは、ないでしょうか?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています