use strict; use warnings; use Win32::OLE qw( with); use constant xlColumnField => 2; use constant xlCount => -4112; use constant xlDatabase => 1; use constant xlHidden => 0; use constant xlPivotTableVersion10 => 1; use constant xlRowField => 1; use constant xlSum => -4157; sub Macro1; my $_app_object = (Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application')); $_app_object->{'Visible'} = 1; $_app_object->Workbooks->Add(); $_app_object->ActiveSheet->Cells(1, 1)->{Value} = "a"; $_app_object->ActiveSheet->Cells(1, 2)->{Value} = "b"; $_app_object->ActiveSheet->Cells(1, 3)->{Value} = "c"; $_app_object->ActiveSheet->Cells(2, 1)->{Value} = "1"; $_app_object->ActiveSheet->Cells(2, 2)->{Value} = "2"; $_app_object->ActiveSheet->Cells(2, 3)->{Value} = "3"; $_app_object->ActiveSheet->Cells(3, 1)->{Value} = "4"; $_app_object->ActiveSheet->Cells(3, 2)->{Value} = "5"; $_app_object->ActiveSheet->Cells(3, 3)->{Value} = "6"; Macro1; sub Macro1 { $_app_object->ActiveWorkbook->PivotCaches->Add({SourceType => xlDatabase, SourceData => 'Sheet1!R1C1:R4C3'})->CreatePivotTable({TableDestination => 'Sheet1!R8C3', TableName => 'PivotTable1', DefaultVersion => xlPivotTableVersion10}); ##$_app_object->ActiveSheet->PivotTables('PivotTable1')->AddDataField($_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a'), 'Sum of a', xlSum); $_app_object->ActiveSheet->PivotTables('PivotTable1')->AddDataField($_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a') ); { my $_with001 = $_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('b'); with ($_with001, Orientation => xlRowField, Position => 2, ); } { my $_with002 = $_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a'); with ($_with002, Orientation => xlRowField, Position => 1, ); } { my $_with003 = $_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('c'); with ($_with003, Orientation => xlColumnField, Position => 1, ); } #------------------------------------------- # The following code does not work... Help! #------------------------------------------- # Attempt 1 #---------- $_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a')->{Subtotals} = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; # Attempt 2&3 #------------ for (my $i=0; $i <= $#{$_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a')->{Subtotals}}; $i++ ) { print "$i ".$_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a')->Subtotals($i+1); print $_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a')->{Subtotals}[$i]; ##$_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a')->Subtotals($i+1) = 0; $_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a')->{Subtotals}[$i] = 0; print " ".$_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a')->Subtotals($i+1); print $_app_object->ActiveSheet->PivotTables('PivotTable1')->PivotFields('a')->{Subtotals}[$i]."\n"; } }