3

私は、Excel (2010) のピボット グラフとピボット テーブルに関してあまり詳しくない一部のユーザーのために、毎日更新される一連のレポートを作成しています。データベースから既に自動化されたデータ プルからのデータがありますが、その情報を有効にする (そしてより使いやすくする) ために、VBA を使用してピボットを生成したいと考えています。

ピボット テーブルは既に正常に生成されており、手動で操作して関連するグラフを作成できます。テーブルを (すべて 1 枚のシートに) 作成するときに、それらにラベルを付けています (それが問題の解決に役立つ場合)。問題が発生しているのは、ピボット グラフの作成、具体的にはデータ ソースの設定です。

グラフは、存在するデータに応じてサイズが変化するピボットに基づいているため、固定範囲をソースとして割り当てることはできません。PTを範囲として割り当てることができない限り、名前を割り当てる範囲がまだわからないため、名前付き範囲と同じ問題があります。

私はこのようなことを試しましたが、実際の「Range」オブジェクトを見ていなかったので、うまくいきませんでした:

Dim MyChartObject As ChartObject
Dim MyChart As Chart

'These variables are assigned elsewhere in the code.
Set MyChartObject = wksMainCharts.ChartObjects.Add( _
    iChartLeft, iChartTop, iChartWidth, iChartHeight)
Set MyChart = MyChartObject.Chart
MyChart.SetSourceData wksMainPivot.PivotTables(PivotName).SourceData 'Fails; requires Range object
'More code to follow...

これが間違った範囲の文字列表現であることは知っていますが、自分で把握できるもので遊んでいました。

基本的に私が欲しいのは、指定された範囲でピボットテーブルを見つけようとするこの質問の反対です。this questionも確認しましたが、探しているものとはまったく異なります(回答も提供されていません)。

また、ここで PT の範囲を取得する方法を尋ねています。これを知るのは興味深いと思いますが、最終的にはピボット チャートを作成したいだけです。私は始めました、私もそれに対して完全にオープンです。

4

1 に答える 1

6

これはあなたが達成しようとしていることですか?

Sub Sample()
    Dim Chrt As Chart, pvtTbl As PivotTable

    Set pvtTbl = ActiveSheet.PivotTables(1)

    Set Chrt = ActiveSheet.ChartObjects(1).Chart

    Chrt.SetSourceData Source:=pvtTbl.TableRange1
End Sub

だからあなたのこの行

MyChart.SetSourceData wksMainPivot.PivotTables(PivotName).SourceData

になる

MyChart.SetSourceData wksMainPivot.PivotTables(PivotName).TableRange1
于 2013-01-24T21:48:09.483 に答える