Top > OOobbs2 > 29
** [[OOobbs2/29]] [#o7b90970]
-''サマリ'': グラフのデータ範囲変更
-''環境'': Calc
-''状態'': 解決
-''投稿者'': [[はらぺこプーさん]]
-''投稿日'': 2007-02-21 (水) 20:37:26

*** 質問 [#h5e833c9]
すでに作成されているグラフのデータ範囲が A1:B30 となっているのを A1:B20 のように変更したいとき、どうすればいいでしょうか?
*** 回答 [#w44665e5]
- 以下のようにします。グラフ名、表名などは適宜変更してください。

 Sub Main
 Dim oDoc As Object, oCharts As Object, oChart As Object
   oDoc = ThisComponent
   oCharts = oDoc.getSheets().getByIndex(0).Charts
   oChart = oCharts.getByName("Object 1").embeddedObject
   oChart.ChartRangeAddress = "表1.$A$1:.$B$20"
   executeCommand(".uno:Calculate",oDoc.CurrentController.getFrame())
 End Sub
 
 Sub executeCommand( sCommand As String, oFrame As Object )
 Dim aArr(0) As New com.sun.star.beans.PropertyValue
 Dim oDispatch As Object
   oDispatch = CreateUnoService( _
       "com.sun.star.frame.DispatchHelper")
   oDispatch.executeDispatch( _
       oFrame, sCommand, "", 0, aArr())
 End Sub

変更するだけでは実際のグラフが更新されないので、再計算を実行しています。再計算はコマンドで行います。

コマンドによる作業は [[OOoBasic/Generic/dispatch]] および [[OOoBasic/Generic/command]] 参照。

-- [[はにゃ?]] &new{2007-02-21 (水) 23:55:13};

#comment
*** 感想,コメント,メモ [#oa4e2cf5]
- 横から失礼いたします。.uno:ChangeChartDataを発行すれば、再計算は不要ではないでしょうか? -- [[soltiox]] &new{2007-02-22 (木) 06:55:25};
- 試してみました。
マクロの記録で作成したコードです。これを実行すれば再計算が不要ですね。

 sub Main
 rem define variables
 dim document   as object
 dim dispatcher as object
 rem get access to the document
 document   = ThisComponent.CurrentController.Frame
 dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 rem dispatcher.executeDispatch(document, ".uno:StarChartDataDialog", "", 0, Array())
 dim args2(3) as new com.sun.star.beans.PropertyValue
 args2(0).Name = "Name"
 args2(0).Value = "Object 1"
 args2(1).Name = "Range"
 args2(1).Value = "$表1.$A$1:$B$3"
 args2(2).Name = "ColHeaders"
 args2(2).Value = false
 args2(3).Name = "RowHeaders"
 args2(3).Value = false
 dispatcher.executeDispatch(document, ".uno:ChangeChartData", "", 0, args2())
 end sub

上記コードを BasicIDE から実行すると document 指定にもかかわらず全く動作しませんでした。このコードを実行するのであればその点は注意が必要なようです。ドキュメントのツールメニューから実行するのであれば問題ありませんでした。

表のデータ範囲変更だけなら記録で十分ですね。

-- [[はにゃ?]] &new{2007-02-22 (木) 12:42:15};

#comment

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes