为数据透视图转换 Excel VBA

Convert Excel VBA for PivotChart

我正在编写代码来创建 Excel 数据透视图,但没有可见的数据透视表。显然,我无法通过 Excel_TLB 执行此操作(根据 Whosebug 上的另一个问题),因此我使用 ComObj 和 Excel2010。我的代码成功创建了数据透视图。我现在正在尝试设置某些过滤器。我已经捕获了相关的 VBA 代码,但无法将其转换为 Delphi。 VBA代码是

  ActiveChart.PivotLayout.PivotTable.PivotFields( _
        "[Range].[Revenue Type Group].[Revenue Type Group]").VisibleItemsList = Array( _
        "[Range].[Revenue Type Group].&[NEW]", _
        "[Range].[Revenue Type Group].&[WORKLOAD]")

我的Delphi代码(只设置一个值)是

 XLApp.ActiveWorkbook.ActiveChart.PivotLayout.PivotTable.PivotFields['[Range].[Revenue Type Group].[Revenue Type Group]'].VisibleItemsList[1] := '[Range].[Revenue Type Group].&[NEW]';

虽然我可以编译,但在运行时出现“不支持集合”异常。

我在 MS VBA 文档中没有看到任何关于此的奇怪... https://docs.microsoft.com/en-us/office/vba/api/excel.pivotfield.visibleitemslist

我也尝试过使用动态数组,例如

SetLength(A1, 1);
  A1[0] := '[Range].[Revenue Type Group].&[NEW]';
  XLApp.ActiveWorkbook.ActiveChart.PivotLayout.PivotTable.PivotFields['[Range].[Revenue Type Group].[Revenue Type Group]'].VisibleItemsList := A1;
 

这将不会编译并出现错误“Variant Dispatch 调用中不允许类型”。 我尝试将 A1 定义为字符串数组、变体数组和 Olevariant 数组。

任何想法表示赞赏。

您需要使用 VarArrayCreate() 创建数组。使用 COM 对象时不接受常规 Delphi 数组。