2016-05-13 48 views
0

我有PowerShell和Excel的問題。使用Powershell從Excel工作簿計數數據透視表

首先我的powershell版本是2,excel版本是2010 x86。

我的代碼是:

#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 
     } 
    } 
    } 

要明確「WRITELOG」命令是我創建生成一個日誌文件庫,它

工作,所以不要擔心。

的輸出紙張的名稱和數據透視表的計數......但是:

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

在每張紙上我有一個數據透視表,但有什麼不好?爲什麼不能識別牀單上的支點?

你能幫我嗎?

回答

0

數據透視表是工作表對象的一種方法,而不是屬性。所以在C#中(與VBA不同),應該用括號表示方法調用。

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

應該

[int]$count = $sheet.PivotTables().Count 
相關問題