为数据透视图转换 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 数组。
我正在编写代码来创建 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 数组。