获取瀑布图的类别名称

时间:2018-03-21 16:29:22

标签: vba vsto powerpoint office-interop powerpoint-vba

我正在尝试阅读PowerPoint VSTO项目中瀑布图的类别名称 到目前为止,我无法这样做。

以下是我的尝试:

  • chart.SeriesCollection(x).Axes(y).CategoryNames - 此图表类型不可用
  • chart.SeriesCollection(x).XValues - 此图表类型不可用
  • chart.SeriesCollection(x).Points(y).DataLabel.Text / .Caption - 这会返回分值,而不是类别名称,例如-130
  • chart.SeriesCollection(x).DataLabels(y).Text / .Caption - 与之前相同:返回点值

然后,我尝试直接通过chart.ChartData.Workbook阅读源数据,但这也无法使用。

那么,我该如何阅读类别名称?

1 个答案:

答案 0 :(得分:2)

在撰写本文时,似乎XlChartType enumeration缺少瀑布成员。 (Waterfall的ChartType整数值为119,枚举中缺少该值。)

由于缺少的枚举会产生各种问题,我决定编写将图表转换为枚举类型的代码,将类别名称放入数组中,然后使用PowerPoint的Undo功能恢复图表

PowerPoint.Chart myChart = Globals.ThisAddIn.Application.ActivePresentation.Slides[1].Shapes[2].Chart;
myChart.ChartType = Office.XlChartType.xlBarStacked;
PowerPoint.Axis CategoryAxis = Globals.ThisAddIn.Application.ActivePresentation.Slides[1].Shapes[2].Chart.Axes(PowerPoint.XlAxisType.xlCategory, PowerPoint.XlAxisGroup.xlPrimary);
Array CatNames = (Array)((object)CategoryAxis.CategoryNames);
Globals.ThisAddIn.Application.CommandBars.ExecuteMso("Undo");
//Do something here with the CatNames array