Macros 用于添加饼图的OpenOffice Calc宏

Macros 用于添加饼图的OpenOffice Calc宏,macros,charts,openoffice-calc,basic,Macros,Charts,Openoffice Calc,Basic,我正在尝试使用宏在OpenOffice中插入一个饼图。但代码显示错误: 行: Dim-oDiagram作为新的com.sun.star.chart.pielogram 错误: “对象不可访问。引用无效。” 我不知道为什么。请帮忙。以下是我的完整宏代码: Sub宏1 暗橙色作为物体 暗橙色连衣裙(1)为新com.sun.star.table.CellRangeAddress Dim oDiagram作为新的com.sun.star.chart.pielogram Dim oRect为新的com.s

我正在尝试使用宏在OpenOffice中插入一个饼图。但代码显示错误:

行:

Dim-oDiagram作为新的com.sun.star.chart.pielogram

错误:

“对象不可访问。引用无效。”

我不知道为什么。请帮忙。以下是我的完整宏代码:

Sub宏1
暗橙色作为物体
暗橙色连衣裙(1)为新com.sun.star.table.CellRangeAddress
Dim oDiagram作为新的com.sun.star.chart.pielogram
Dim oRect为新的com.sun.star.awt.Rectangle
像细绳一样模糊
橙色=thisComponent.getCurrentSelection.getRangeAddress
oSheets=ThisComponent.getSheets()
oSheet=oSheets.getByIndex(0)
oCharts=oSheet.图表
纵向宽度=10000
实际高度=10000
oRect.X=8000
oRect.Y=1000
橙色连衣裙(0).Sheet=橙色.Sheet
oRangeAddress(0)。StartColumn=0
橙色连衣裙(0)。StartRow=0
oRangeAddress(0)。EndColumn=1
oRangeAddress(0)。EndRow=2
cTitle=“测试结果”
oCharts.addNewByName(cTitle,oRect,oRangeAddress(),TRUE,TRUE)
oChart=oCharts.getByName(cTitle).embeddedObject
oChart.Diagram=oDiagram
oChart.HasMainTitle=True
oChart.Title.String=cTitle
端接头
以下是输入表数据:


您不能直接实例化
com.sun.star.chart.pielogram
,而不依赖于现有的图表。相反,您必须先创建图表,然后创建一个
pielogram
。因此,要使宏工作,请执行以下操作:

  • 删除行
    Dim-oDiagram作为新的com.sun.star.chart.pielogram
  • 将行
    oChart.Diagram=oDiagram
    更改为
    oChart.Diagram=oChart.createInstance(“com.sun.star.chart.piedigram”)
这将产生以下代码(我已经在Win7上用OpenOffice.org Calc 4.1.0对此进行了测试):

Sub宏1
暗橙色作为物体
暗橙色连衣裙(1)为新com.sun.star.table.CellRangeAddress
Dim oRect为新的com.sun.star.awt.Rectangle
像细绳一样模糊
橙色=thisComponent.getCurrentSelection.getRangeAddress
oSheets=ThisComponent.getSheets()
oSheet=oSheets.getByIndex(0)
oCharts=oSheet.图表
纵向宽度=10000
实际高度=10000
oRect.X=8000
oRect.Y=1000
橙色连衣裙(0).Sheet=橙色.Sheet
oRangeAddress(0)。StartColumn=0
橙色连衣裙(0)。StartRow=0
oRangeAddress(0)。EndColumn=1
oRangeAddress(0)。EndRow=2
cTitle=“测试结果”
oCharts.addNewByName(cTitle,oRect,oRangeAddress(),TRUE,TRUE)
oChart=oCharts.getByName(cTitle).embeddedObject
oChart.Diagram=oChart.createInstance(“com.sun.star.chart.piecdiagram”)
oChart.HasMainTitle=True
oChart.Title.String=cTitle
端接头
运行宏应产生以下结果:


注意:宏不会在LibreOffice Calc上运行;它只适用于OpenOffice.org Calc。我认为这是一个LibreOffice错误,因为我在OOo和LO的API中找不到任何差异。

AFAIK您不能使用
new com.sun.star.chart.pielogram
实例化一个新的图表。相反,您可以只使用
Dim oChart作为对象
。但是现在,
oCharts.getByName(cTitle).embeddedObject
抛出了一个
NoTouchElementException
-我不知道为什么,同样的情况发生在…:-(请参见如何添加饼图?我添加了一个使用OOo.Calc(但不使用LIbreOffice)的示例的答案。在版本4.3.0中,这个问题-至少与OOo Wiki中的saple代码有关。