2016-05-13 9 views
0

Ich habe ein Problem mit Powershell und Excel.Zählen von PivotTables aus einer Excel-Arbeitsmappe mit Powershell

Zunächst ist meine Powershell-Version 2 und Excel-Version 2010 x86.

Mein Code ist:

#Start Excel 
    [Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Interop.Excel") | Out-Null 
    $ObjXls = New-Object "Microsoft.Office.Interop.Excel.ApplicationClass" 
    $ObjXls.Visible = $False 
    $ObjXls.ScreenUpdating = $False 
    $ObjXls.DisplayAlerts = $False 
#Open the template workbook 
    [String] $Private:TemplateFilePath = "$($Params['TEMPLATE_PATH'])\$TemplateFileName" 
    WriteLog -Message "Template file: $TemplateFilePath" 
    $WbXls = $ObjXls.Workbooks.open($TemplateFilePath) 
    $WbXls.RefreshAll() 
#Counting Pivot Tables 
    ForEach ($sheet in $WbXls.Worksheets) 
    { 
     if ($sheet.Name -ne "LiteDB") { 
     [int]$count = $sheet.PivotTables.Count 
     [string]$sheetname = $sheet.Name 
     writelog ($sheetname + " --- " + $count) 

     For ($i = 0; $i -le $sheet.PivotTables.Count; $i++) {  
     if (-not $sheet.PivotTables($i).RefreshTable()) {throw "Unable to refresh PivotTable"} 
     $sheet.PivotTables($i).RefreshTable() 
     $sheet.PivotTables($i).PivotFields("Week").CurrentPage=$Currentweek 
     } 
    } 
    } 

Um klar zu sein die „Writelog“ Befehl ist eine Bibliothek von mir erstellt eine Log-Datei zu erzeugen, ist es

funktioniert so darüber keine Sorge.

Der Ausgang ist der Name der Blätter und die Zählung der Pivot-Tabellen ... aber:

NS --- 0, SM --- 0, QTY --- 0 

Auf jedem Blatt i eine Pivot-Tabelle, aber was ist falsch? Warum erkennt die Pivots auf den Blättern nicht?

Können Sie mir dabei helfen?

Antwort

0

PivotTables ist eine Methode des Arbeitsblattobjekts, keine Eigenschaft. In C# (anders als in VBA) sollten Sie also den Methodenaufruf mit Klammern ausdrücken.

[int]$count = $sheet.PivotTables.Count 

sollte

[int]$count = $sheet.PivotTables().Count 
Verwandte Themen