我的搜索只能在VBA中产生类似的东西,但我有一个不同的方法,并在PowerShell中解决这个问题。
我是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
}
}
我也愿意采用其他方法来实现这一目标。
答案 0 :(得分:1)
每个Comment Object都有一个Text method,可以返回或更新信息。
我更进了一步并拆分了换行符,以便你可以将作者的评论分开:
foreach ($comment in $comments) {
$CommentText = $comment.text().split([environment]::newline)
[pscustomobject]@{
'Author' = $CommentText[0]
'Text' = $CommentText[1]
}
}
答案 1 :(得分:0)
我确信有很多方法可以做到这一点......
import-module psexcel
$fred = new-object OfficeOpenXml.ExcelPackage -ArgumentList "C:\Users\mccarthyd\Documents\Book1.xlsx"
foreach ($worksheet in $fred.Workbook.Worksheets) {
$worksheet.comments
}