Top > OOobbs2 > 29

OOobbs2/29 Edit

  • サマリ: グラフのデータ範囲変更
  • 環境: Calc
  • 状態: 解決
  • 投稿者: はらぺこプーさん?
  • 投稿日: 2007-02-21 (水) 20:37:26

質問 Edit

すでに作成されているグラフのデータ範囲が A1:B30 となっているのを A1:B20 のように変更したいとき、どうすればいいでしょうか?

回答 Edit

  • 以下のようにします。グラフ名、表名などは適宜変更してください。
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? 参照。

  • はにゃ?? 2007-02-21 (水) 23:55:13

感想,コメント,メモ Edit

  • 横から失礼いたします。.uno:ChangeChartDataを発行すれば、再計算は不要ではないでしょうか? -- soltiox? 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 指定にもかかわらず全く動作しませんでした。このコードを実行するのであればその点は注意が必要なようです。ドキュメントのツールメニューから実行するのであれば問題ありませんでした。

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

  • はにゃ?? 2007-02-22 (木) 12:42:15


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