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-Key: 7264848996

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

Printed on: April 28, 2024 at 23:04 o'clock

Mitglied: 7010350221
Solution 7010350221 May 22, 2023 updated at 13:31:01 (UTC)
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ß
Member: Toeffel
Toeffel May 22, 2023 at 13:32:34 (UTC)
Goto Top
Soooo Einfach face-big-smile

Nun funktioniert es wie es soll.

Danke!