2017-06-28 4 views
4

Meine Suche führte nur zu etwas ähnliches in VBA, aber ich habe einen anderen Ansatz und in PowerShell für dieses Problem.Lesen von Kommentaren aus Excel-Datei mit PowerShell

Ich bin neu in PowerShell und ich möchte alle Kommentare in Excel-Dateien lesen und in einer CSV-Datei speichern. Alles funktioniert außer dem Lesen des Kommentars. Der Kommentar ist ein com-Objekt. Wie bekomme ich den tatsächlichen Kommentar vom com-Objekt? Hier ist ein Ausschnitt des entsprechenden Codes. Ich bin nicht in der Lage, dies mit einem Aufrufmitglied zu tun, aber vielleicht mache ich es falsch. Danke im Voraus.

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

Ich bin auch offen für andere Methoden, um dies zu erreichen.

Antwort

1

Jede Comment Object hat eine Text method, die die Informationen zurückgibt oder aktualisiert.

Ich nahm das einen Schritt weiter und Split auf dem Newline so können Sie den Kommentar des Autors trennen:

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

Danke, aber $ Comment.Text() bewirkt, dass dieser Fehler: Methodenaufruf, da [Syste fehlgeschlagen m .__ ComObject] enthält keine Methode namens 'text'. – Rhamnetin

0

Ich bin sicher, dass eine Schiffsladung von Möglichkeiten gibt es dies zu tun bekommen ...

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

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

siehe diesen Beitrag: powershell excel access without installing Excel

Verwandte Themen