2016-05-13 9 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 

私は1つのピボットテーブルを持っていますが、何が間違っていますか?なぜシートのピボットを認識していないのですか?

これを手伝ってもらえますか?

答えて

0

ピボットテーブルは、ワークシートオブジェクトのメソッドであり、プロパティではありません。したがって、C#では(VBAとは異なり)、かっこでメソッド呼び出しを表現する必要があります。

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

[int]$count = $sheet.PivotTables().Count 
する必要があります
関連する問題