Word Powershell Befehle
Hi,
wollte kurz fragen ob jemand den Befehl für ein "Backspace" kennt.
Habe schon viele Seiten wo Powershell mit Word dokumentiert ist aber der Befehl stand nirgends dabei.
Des weiteren suche ich den Befehl um in einer Tabelle die Umrandungen zu programmieren
Falls sich jemand dazu auskennt wäre ich sehr dankbar ^^
Gruß
Matze
wollte kurz fragen ob jemand den Befehl für ein "Backspace" kennt.
Habe schon viele Seiten wo Powershell mit Word dokumentiert ist aber der Befehl stand nirgends dabei.
Des weiteren suche ich den Befehl um in einer Tabelle die Umrandungen zu programmieren
Falls sich jemand dazu auskennt wäre ich sehr dankbar ^^
Gruß
Matze
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 244201
Url: https://administrator.de/contentid/244201
Ausgedruckt am: 17.11.2024 um 03:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Matze,
ich vermute mal das es bei deinem Thema um Word-Automation via COM-Objekt in Powershell geht ?!
Wenn du schon mal mit VBA in Word gearbeitet hast ist das kein Problem, denn die Befehle lassen sich fast eins zu eins in eine COM-Automation in Powershell übernehmen. Deine erste Anlaufstelle ist also die VBA-Referenz für Word (s.u.). Hierbei sind Word-Konstanten in deren tatsächliche Integer-Werte umzuwandeln. Diese kannst du dir in Word im VBA-Editor im Direktbereich anzeigen lassen indem du dort z.B. folgendes hinein schreibst:
Hier ein Beispiel das eine Tabelle mit 5 Spalten und 5 Zeilen erstellt, dieser Tabelle einen Rahmen zuweist, dann hinter die Tabelle einen Text schreibt und vom letzen Wort des Textes einen Buchstaben entfernt:
Die Tabellenränder lassen sich natürlich auch alle einzeln detailliert formatieren. Mehr dazu findest du in der Word-Referenz im Table-Objekt
Bitte unbedingt beachten wenn du für deine Tests die Powershell ISE benutzt: Diese ist absolut ungeeignet für eine vernünftige Arbeit mit COM-Automation und Office. Hier kommt es regelmäßig zu kuriosen Fehlerbildern, die verschwinden sobald du dein Script in einer normalen Powershell-Session ausführst ! Bei obigem Script würdest du z.B. bei Ausführung in der ISE, einen Fehler beim Abschnitt für die Formatierung der Überschriften bekommen. Also speichere es als Script und führe es in einer normalen Powershell-Session aus.
Grüße Uwe
ich vermute mal das es bei deinem Thema um Word-Automation via COM-Objekt in Powershell geht ?!
Wenn du schon mal mit VBA in Word gearbeitet hast ist das kein Problem, denn die Befehle lassen sich fast eins zu eins in eine COM-Automation in Powershell übernehmen. Deine erste Anlaufstelle ist also die VBA-Referenz für Word (s.u.). Hierbei sind Word-Konstanten in deren tatsächliche Integer-Werte umzuwandeln. Diese kannst du dir in Word im VBA-Editor im Direktbereich anzeigen lassen indem du dort z.B. folgendes hinein schreibst:
debug.print wdCharacter
Hier ein Beispiel das eine Tabelle mit 5 Spalten und 5 Zeilen erstellt, dieser Tabelle einen Rahmen zuweist, dann hinter die Tabelle einen Text schreibt und vom letzen Wort des Textes einen Buchstaben entfernt:
# Word Objekt erzeugen
$word = new-object -ComObject Word.Application
# Word sichtbar machen
$word.Visible = $true
# neues Dokument erzeugen
$doc = $word.Documents.Add()
# neue Tabelle erzeugen
$tbl = $doc.Tables.Add($doc.Content,5,5)
# Äußeren Tabellenrand sichtbar machen
$tbl.Borders.Enable = $true
# Beispiel um die inneren Trennlinien in einem anderen Linienstil zu formatieren
$tbl.Borders.InsideLineStyle = 2
# Beispielinhalte in die Tabelle schreiben
$tbl.Cell(1, 1).Range.Text = "Montag"
$tbl.Cell(1, 2).Range.Text = "Dienstag"
$tbl.Cell(1, 3).Range.Text = "Mittwoch"
$tbl.Cell(1, 4).Range.Text = "Donnerstag"
$tbl.Cell(1, 5).Range.Text = "Freitag"
# Überschriftenzeile formatieren
$tbl.Rows.Item(1).Range.Cells.VerticalAlignment = 1 # wdCellAlignVerticalCenter
$tbl.Rows.Item(1).Range.ParagraphFormat.Alignment = 1 # wdAlignParagraphCenter
$tbl.Rows.Item(1).Range.ParagraphFormat.SpaceAfter = 0 # Absatzabstand entfernen
$tbl.Rows.Item(1).Range.Bold = $true # fett machen
# text am Ende hinzufügen und vom letzen Wort ein Zeichen löschen
$myRange = $doc.Content
$myRange.Collapse(0) #wdCollapseEnd
$myRange.Text = "Das ist ein Testx"
$myRange.Collapse(0) # Aktuelle Markierung ans Ende des Bereichs verschieben
$myRange.Move(1, -1) # 1 = wdCharacter
$myRange.Expand(1) # 1 = wdCharacter
$myRange.Delete() # letztes Zeichen löschen
Bitte unbedingt beachten wenn du für deine Tests die Powershell ISE benutzt: Diese ist absolut ungeeignet für eine vernünftige Arbeit mit COM-Automation und Office. Hier kommt es regelmäßig zu kuriosen Fehlerbildern, die verschwinden sobald du dein Script in einer normalen Powershell-Session ausführst ! Bei obigem Script würdest du z.B. bei Ausführung in der ISE, einen Fehler beim Abschnitt für die Formatierung der Überschriften bekommen. Also speichere es als Script und führe es in einer normalen Powershell-Session aus.
Grüße Uwe