toeffel
Goto Top

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.

#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

Content-ID: 7264848996

Url: https://administrator.de/contentid/7264848996

Ausgedruckt am: 21.11.2024 um 16:11 Uhr

7010350221
Lösung 7010350221 22.05.2023 aktualisiert um 15:31:01 Uhr
Goto Top
Hallo.
$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)
https://learn.microsoft.com/de-de/office/vba/api/word.documents.add

Gruß
Toeffel
Toeffel 22.05.2023 um 15:32:34 Uhr
Goto Top
Soooo Einfach face-big-smile

Nun funktioniert es wie es soll.

Danke!