Mit Powershell Worddokument aus Vorlage erstellen
Moin,
ich möchte mir Schreibarbeit ersparen und habe mir daher ein kleines PowerShell Script geschrieben, das aus einer Wordvorlage ein Worddokument erstellt. Das funktioniert auch ganz gut. Die entsprechenden Stellen werden geändert und ich sehe auch die gefüllten Felder.
Wenn ich allerdings das abgespeicherte Worddokument öffnen möchte, dann erscheint es nicht.
Erzeuge ich ein docx Dokument aus der Vorlage und nehme dieses als Basis, dann kann ich das Word Dokument öffnen.
Vielleicht weiß einer Rat!?
Gruß
Dirk
ich möchte mir Schreibarbeit ersparen und habe mir daher ein kleines PowerShell Script geschrieben, das aus einer Wordvorlage ein Worddokument erstellt. Das funktioniert auch ganz gut. Die entsprechenden Stellen werden geändert und ich sehe auch die gefüllten Felder.
Wenn ich allerdings das abgespeicherte Worddokument öffnen möchte, dann erscheint es nicht.
#Word Document aus Vorlage erzeugen
$document = $DokumentenPfad + 'Vorlage_Betriebshandbuch.dotx'
$word = New-Object -Com Word.Application
$word.Visible = $True
$doc = $word.Documents.Open($document)
#Felder auslesen und neu setzen
$Find = $doc.Content.Find
$Find.ClearFormatting()|out-null
$Find.Execute($Servername,$false,$false,$false,$false,$false,$true,1,$false,$Feld_Servername,2)
$Find.Execute($Inventarnummer,$false,$false,$false,$false,$false,$true,1,$false,$Feld_Inventarnummer,2)
$Find.Execute($IPAdresse,$false,$false,$false,$false,$false,$true,1,$false,$Feld_IPAdresse,2)
$Find.Execute($Modell,$false,$false,$false,$false,$false,$true,1,$false,$Feld_Modell,2)
$Find.Execute($CPUs,$false,$false,$false,$false,$false,$true,1,$false,$Feld_CPUs,2)
$Find.Execute($Laufwerke,$false,$false,$false,$false,$false,$true,1,$false,$Feld_Laufwerke,2)
$Find.Execute($Speicher,$false,$false,$false,$false,$false,$true,1,$false,$Feld_Speicher,2)
#Word Datei unter neuem Namen abspeichern
$outputPath = $DokumentenPfad + "NEU_" + $VM.Name + ".docx"
$doc.SaveAs([Ref]$outputPath)
$doc.Close()
$word.Quit()
# Die COM Objekt(e) wieder aus dem Speicher entfernen
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($word) | Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
Erzeuge ich ein docx Dokument aus der Vorlage und nehme dieses als Basis, dann kann ich das Word Dokument öffnen.
Vielleicht weiß einer Rat!?
Gruß
Dirk
Please also mark the comments that contributed to the solution of the article
Content-Key: 7264848996
Url: https://administrator.de/contentid/7264848996
Printed on: April 28, 2024 at 23:04 o'clock
2 Comments
Latest comment
Hallo.
Damit öffnest du das Template selbst anstatt ein neues Dokument davon zu erzeugen. Dokumente anhand von Templates erzeugt man stattdessen mit der Add-Methode, sonst ist das neue Dokument ebenfalls ein Template (trotz docx Endung) und kein normales Dokument.
https://learn.microsoft.com/de-de/office/vba/api/word.documents.add
Gruß
$doc = $word.Documents.Open($document)
Damit öffnest du das Template selbst anstatt ein neues Dokument davon zu erzeugen. Dokumente anhand von Templates erzeugt man stattdessen mit der Add-Methode, sonst ist das neue Dokument ebenfalls ein Template (trotz docx Endung) und kein normales Dokument.
$doc = $word.Documents.Add($document)
Gruß