• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA ピボットテーブルを使ったデータの一括印刷)

EXCEL VBA ピボットテーブルを使ったデータの一括印刷

このQ&Aのポイント
  • EXCEL VBAを使用して、ピボットテーブルを使ってデータの一括印刷を行う方法について教えてください。
  • 複数のピボットで集計したデータやその他のデータをピボットテーブル以外のセルで関数を使って組み合わせて表やグラフを作成しています。1つのピボットテーブルのページフィールドで顧客を選択するとその顧客の表とグラフが表示できるようになっています。そこで1つ1つの顧客を選択して印刷をするのは面倒なので、全ての顧客の表とグラフを一括で印刷するマクロを設定したいです。
  • 上記のマクロを実行すると、全て印刷できるのですが、実行時にエラーが発生してしまいます。エラーメッセージには、「PivotItemクラスの_Defaultプロパティを設定できません」と表示されます。アイテム(顧客名の数)が複数あるために発生している可能性があるのでしょうか?解決策を教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • OtenkiAme
  • ベストアンサー率77% (69/89)
回答No.1

こんにちは。 もしかして、ページフィールドのアイテムが実在していないために 起こっているかもしれないので、エラー発生時も継続処理にして 正常処理なら印刷する という方法にされたら如何でしょうか? Dim PvtSht As Worksheet 'ピボットテーブルのあるシート Dim PvtTbl As PivotTable 'B1セルのピボットテーブル Dim PvtFld As PivotField 'ページフィールド Dim PvtItem As PivotItem 'ページフィールドの各アイテム Dim FirstItem As String '元のアイテム 'オブジェクト型の変数に各オブジェクトの参照を設定する Set PvtSht = Worksheets("本社") Set PvtTbl = PvtSht.Range("B1").PivotTable Set PvtFld = PvtTbl.PivotFields("名称") '現在のアイテム名を取得する FirstItem = PvtFld.CurrentPage.Name '"本社"シートをアクティブ PvtSht.Activate '指定したページフィールドの各アイテムを For Each PvtItem In PvtFld.PivotItems   'エラー発生時も処理を継続する   On Error Resume Next   '指定ページフィールドのアイテムを変更する   PvtFld.CurrentPage = PvtItem.Name   'エラーが発生しなかったら   If Err.Number = 0 Then     'シートを印刷する     PvtSht.PrintOut   End If   'エラー処理をリセットする   On Error GoTo 0 Next PvtItem '指定ページフィールドに最初のアイテム名を設定する PvtFld.CurrentPage = FirstItem 'オブジェクト型変数の参照設定を解除する Set PvtFld = Nothing Set PvtTbl = Nothing Set PvtSht = Nothing

malixiang
質問者

お礼

OtenkiAmeさん ご回答ありがとうございます。 お返事が遅れまして大変申し訳ございません。 テストしましたら、エラーもなく、初期の名称にも戻り 感動致しました。 勉強になります。 本当にありがとうございました。

関連するQ&A