Delphi 10/Seattle、Excel 2013. Excelプラグインを作成するためにDelphiを使用しています。このプラグインはピボットテーブルを作成します。私の挑戦は、私が望む特定の機能(Count vs Average vs Sumなど)を設定することです。関数を設定しないと、デフォルト(COUNT)が使用され、コードは正常に動作します。ピボット・テーブルはそうであるようです。 PivotFieldで関数を変更しようとすると、「PivotFieldクラスのFunctionプロパティを設定できません」というエラーが表示されます。エラーの検索では、私は2つの一般的な原因を見つけました。 (1)PivotテーブルにはデフォルトバージョンのxlPivotTableVersion15が必要です。(2)PivotFieldの向きをxlDataFieldに設定する必要があります。私は両方を行い、マウスオーバー時にIDEは両方のInteger値を表示するので、定義されていることがわかります。Delphi - Excelの関数を変更できないPivotField
私はPivotField.functionの値を取得することを試みました。 「PivotFieldクラスのFunctionプロパティを取得できません」という同様のエラーが表示されます。私が合計したい列は「#Clicks」と呼ばれます。コードの問題のある行が
myPivotTable.PivotFields('#Clicks').function := xlSum;
である私は、この行をコメントアウトした場合、私はデフォルトのCOUNT関数を取得しますが、私のルーチンは、代わりに私が欲しいSUM関数の、細かい動作します。
感謝しています。行がコメントアウトされ、コードが実行されると、Excelに入り、PivotFieldリストに入り、関数をCountからSumに変更できます。ここに私のフルコードです。
procedure T_ZTemplateForm.TestPivotTable;
var
myPivotCache: OleVariant;
myPivotTable : OleVariant;
myActive_WorkBook : OleVariant;
TabDestination : string;
f1: OleVariant;
begin
// Add the new Sheet
XLApp.Connect; // XLApp is a global variable, pointing to the Excel instance
myActive_WorkBook := XLApp.ActiveWorkbook;
XLApp.Worksheets.Add(EmptyParam, EmptyParam,1, xlWorksheet, LOCALE_USER_DEFAULT);
// Get a handle to the new sheet and set the Sheet Name
sheet_graph1 := XLApp.ActiveSheet;
sheet_graph1.Name := 'Graph1';
// Create a Pivot Cache
myPivotCache := myActive_WorkBook.PivotCaches.Create(xlDatabase,'Raw Data!R1C1:R1048576C36',xlPivotTableVersion15);
// Create a Pivot table within the PivotCache
TabDestination := 'Graph1!R3C1';
myPivotTable := myPivotCache.CreatePivotTable(TabDestination, 'PivotTable1',xlPivotTableVersion15);
// Now start adding the fields...
f1 := myPivotTable.PivotFields('Fiscal Quarter');
f1.Orientation := xlRowField;
f1.Position := 1;
myPivotTable.PivotFields('#Clicks').orientation := xlDataField;
// myPivotTable.PivotFields('#Clicks').function := xlSum;
end;
**あなたがあなたの '#Clicks' PivotFieldを作成する方法**正確に? – MartynA
@@ MartynA - #Clicksは、Raw Dataシートのデータ列の1つの名前/ヘッダーです。そのシートの各列は、PivotCache/PivotTableでアクセスできます(少なくとも理解している限り)。 – user1009073
追加情報:Excel_TLBファイルを見ると、PivotTable.Functionが 'PivotTable.Function_'に変更されたというメッセージが表示されますが、残念ながらそれは役に立ちませんが、ヒントになる可能性があります。 – user1009073