出産前後の痔にはご注意!

ピボットグラフのページフィールドアイテムの選択を、ツールバーのボタンクリックで順番に選択できるマクロを作成したいと思っています。
またこのツールバーを、データ範囲の違う複数のピボットグラフで利用したいと思っています。
(ページフィールドの項目名は固定されていますが、アイテム数が変動します。データアイテムや系列フィールドも可変です。)

ページフィールドのアイテム切り替えをマクロ記録でコードにすると下記のとおりでした。

ActiveChart.PivotLayout.PivotTable.PivotFields("ページフィールド").CurrentPage = "フィールド1"

これを利用するために、対象グラフを元にページフィールドのアイテム一覧を取得したいのですが可能でしょうか?
また、ほかに良い方法がありましたらぜひ情報をいただきたいです。
Excelは2003を利用しています。宜しくお願いいたします。

A 回答 (2件)

> 対象グラフを元にページフィールドのアイテム一覧を取得したいのですが


> 可能でしょうか?

可能です。下記は イミディエイトウインドウ に結果を表示させてます。

Sub SampleProc()
  
  Dim pvtPfs As PivotFields
  Dim pvtPf  As PivotField
  Dim pvtItm As PivotItem
  
  ' // PageField がない場合もあるのでエラー処理しておく
  On Error Resume Next
  Set pvtPfs = ActiveChart.PivotLayout.PivotTable.PageFields
  On Error GoTo 0
  If pvtPfs Is Nothing Then Exit Sub
  
  For Each pvtPf In pvtPfs
    ' // 処理例1 PF 名取得
    Debug.Print pvtPf.Name & "------------------------------"
    ' // 処理例2 PF アイテム取得
    For Each pvtItm In pvtPf.PivotItems
      Debug.Print vbTab; pvtItm.Value
    Next
  Next

End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
記載いただいた内容で希望の処理を実現できました。
自分の力では調べ切れなかったので大変助かりました。
また勉強にもなりました。ありがとうございました。

お礼日時:2008/02/25 09:19

こんにちは。



> 対象グラフを元にページフィールドのアイテム一覧を取得したいのですが可能でしょうか?
"ページフィールド"のPivotItemsから一つずつNameプロパティで取り出せばいいのではないでしょうか?
(例は、VBEのイミディエイトウィンドウに出力しています。イミディエイトウィンドウが表示されていない時は、Ctrl+Gで表示できます)
ちなみに CurrentPageプロパティでは、現在のページフィールドしか取り出せません。

Dim PvtFld As PivotField
Dim PvtItem As PivotItem

Set PvtFld = ActiveChart.PivotLayout.PivotTable.PivotFields("ページフィールド")
For Each PvtItem In PvtFld.PivotItems
  'イミディエイトウィンドウに"ページフィールド"の各アイテムを出力
  Debug.Print PvtItem.Name
Next PvtItem
Set PvtFld = Nothing

その上のツールバーに登録する意図がよくわかりませんが、普通にページフィールドのアイテムを選択させるのでは駄目なのでしょうか?

> またこのツールバーを、データ範囲の違う複数のピボットグラフで利用したいと思っています。
たとえ項目名が同じでもアイテムの内容が異なるなら、対象のグラフが変わった時にアイテムを取得し直さないと、Aを選択させようとしてAがなければ選択できないと思いますが、そういう処理は、きちんとお考えでしょうか?意図した結果が得られないマクロを作ってしまうことにならないでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
こちらでも希望の処理を実現することができました。

>普通にページフィールドのアイテムを選択させるのでは駄目なのでしょうか?
アイテム数が多く、アイテムを順番に選択する操作が手間となるためこのような処理となりました。

その他もアドバイスありがとうございます。
今後の参考とさせていただきます。

お礼日時:2008/02/25 09:26

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


人気Q&Aランキング