2017-06-28 36 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