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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7264848996
Url: https://administrator.de/contentid/7264848996
Ausgedruckt am: 21.11.2024 um 16:11 Uhr
2 Kommentare
Neuester Kommentar
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ß