2017-06-28 38 views
4

我的搜索只導致類似的VBA中,但我有一個不同的方法,並在PowerShell中解決此問題。使用PowerShell從Excel文件讀取註釋

我是PowerShell的新手,我想讀取Excel文件中的所有註釋並將它們保存爲CSV文件。除了閱讀評論之外,一切都有效。評論是com對象。我如何從com對象獲取實際的評論?這是相關代碼的一部分。我無法用invokemember做到這一點,但也許我做錯了。提前致謝。

ForEach ($File in (Get-ChildItem $folder -Include *.xls, *.xlsx, *.xlsm -Recurse)) 
{ 
    $sh=$document.Sheets.Item($i) 
    $comments = $sh.comments 
    foreach ($comment in $comments) 
    { 
     #[System.__ComObject] <--- Must get this value | Add-Content -file.csv 
    } 
} 

我也打開其他方法來完成此操作。

回答

1

每個Comment Object有一個Text method返回或更新信息。

我拿了更進了一步和分裂的新行,所以你可以從筆者分離出評論:

foreach ($comment in $comments) { 
    $CommentText = $comment.text().split([environment]::newline) 
    [pscustomobject]@{ 
     'Author' = $CommentText[0] 
     'Text' = $CommentText[1] 
    } 
} 
+0

謝謝,但$ comment.text()導致此錯誤: 方法調用失敗,因爲[SYSTE m .__ ComObject]不包含名爲'text'的方法。 – Rhamnetin

0

我敢肯定有辦法勿庸置疑完成這件事...

import-module psexcel 
$fred = new-object OfficeOpenXml.ExcelPackage -ArgumentList "C:\Users\mccarthyd\Documents\Book1.xlsx" 

foreach ($worksheet in $fred.Workbook.Worksheets) { 
    $worksheet.comments 
} 

看到這個帖子:powershell excel access without installing Excel