2016-04-13 26 views
1

Ich versuche ein Powershell-Skript zu schreiben, das Textformularfelder in Microsoft Office Word 2007 bearbeitet. Es sollte über das zuvor konfigurierte Lesezeichen ein Formularfeld finden und einen Text schreiben hinein. Der Standardtext, den ich zu Testzwecken in den Text geschrieben habe, ist "Something". Das ist, was ich bisher:Bearbeiten eines Textformularfeldes in MS Word mit Powershell

$document = 'D:\Powershell\Test.docx' 
$Word = New-Object -Com Word.Application 
$Word.Visible = $True 
$doc = $word.Documents.Open($document) 
$text = "Hello" 
$bookmark = "server1" 
$doc.Bookmarks.Item($bookmark).Range.Text.Replace("Something", $text) 

Während es in der Konsole arbeitet, da die Ausgabe lautet:

FORMTEXT Hello 

Wort noch den String zeigt ich manuell vor eingefügt. Wenn ich eintippen:

$doc.Bookmarks.Item($bookmark).Range.Text 

Die Ausgabe lautet:

FORMTEXT Something 

ich schon versucht:

$Word.ActiveDocument.Reload() 
$Word.ActiveDocument.Fields.Update() 
$doc.PrintPreview() 
$doc.ClosePrintPreview() 
$doc.Bookmarks.Item($bookmark).Range.Fields.Update() 

Aber nichts scheint zu funktionieren. Hat jemand eine Idee, wie man etwas in diesem Textformularfeld dauerhaft schreibt? Alternativ, wenn das einfacher ist, könnte ich eine (reiche) Text Content Control (die neueren zu sein scheinen). Diese verwenden kein Lesezeichen, sondern ein Tag und einen Titel. Vielen Dank für Ihre Hilfe im Voraus. PS: Es funktioniert auch nicht mit MS Word 2016.

Antwort

2

Wenn Sie ein veraltetes Textformularfeld haben, ist das Lesezeichen wirklich da, um das Feld zu identifizieren. Wenn Sie versuchen, den Text des Lesezeichens in VBA zu ersetzen (sagen wir mal), erhalten Sie wahrscheinlich den Fehler 6028 - "Der Bereich kann nicht gelöscht werden".

Ich weiß Powershell nicht gut genug, um dies zu tun, ohne zu überprüfen, aber das Äquivalent VBA

doc.FormFields($bookmark).Result = "Something" 

so würde ich die Powershell wie etwas Wow

$doc.FormFields.Item($bookmark).Result = "Something" 
+0

ist erraten würde es ist so einfach ^^ Danke Kumpel –

+0

Arbeitet in MSOffie 2013 ... – hyprfrcb