internet2107
Goto Top

Word VBA - Powershell - Seitenzahlen - jede Seite

Man möchte gerne bestehende Worddokumente entsprechend ändern (mit POwershell), dass folgende Zusätze eingebaut werden.

Ich finde Unmengen an Material zu Excel VBA, was ich in der Vergangenheit auch schon mal gemacht habe, aber bei Word sieht es sehr mau aus.

Ich habe folgenden Code. Dieser öffnet im aktuellen Fall ein WordDoc, fügt in der Fußzeile eine Seitenzahl hinzu und schreibt aktuell NUR auf der ersten Seite die Bezeichnung des Docs.

Wunsch ist aber:

- Seitenzahlen im Footer (Seite x von y)
- Bezeichnung des Dokuments auf jeder Seite des Docs im Kopf

$objword = New-Object -ComObject word.application
set-variable -name wdAlignPageNumberCenter -value 1 -option constant
$objword.visible = $false

$doc = $objword.documents.Open($word_dat.FullName)
$objword.selection.pagesetup.topmargin = 30
$objword.selection.pagesetup.leftmargin = 20
$objword.selection.pagesetup.rightmargin = 10
$objword.selection.pagesetup.bottommargin = 30
$printout_pagesize = "A2"  
$selection = $objword.Selection
$selection.Font.Name = "Arial"  
$selection.Font.Size = "9"  
$selection.TypeText((Get-Date))
$selection.TypeParagraph()
$selection.TypeText($word_dat.FullName)
$selection.TypeParagraph()
$selection.PageSetup.PaperSize = [Microsoft.Office.Interop.Word.WdPaperSize]::$printout_pagesize
$selection.PageSetup.Orientation = "Querformat"  
$doc.Sections.Item(1).Footers.Item(1).PageNumbers.Add($wdAlignPageNumberCenter)

Vielen Dank.

Content-Key: 255834

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

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: 114757
114757 25.11.2014 aktualisiert um 15:13:42 Uhr
Goto Top
# Header setzen 
$doc.Sections.Item(1).Headers.Item(1).Range.Select()
$objWord.Selection.Paragraphs.Item(1).Alignment = 1  # center
$objWord.Selection.Font.Name = "Arial"  
$objWord.Selection.Font.Size = "9"  
$objWord.Selection.Text = $word_dat.FullName

# Footer setzen
$doc.Sections.Item(1).Footers.Item(1).Range.Select()
$objWord.Selection.Paragraphs.Item(1).Alignment = 1   #center
$objWord.Selection.Font.Name = "Arial"  
$objWord.Selection.Font.Size = "9"  
$objWord.Selection.TypeText("Seite ")  
$objWord.Selection.Fields.Add($objWord.Selection.Range,-1,"PAGE")  
$objWord.Selection.TypeText(" von ")  
$objWord.Selection.Fields.Add($objWord.Selection.Range,-1,"NUMPAGES")  
Zur Info: Wenn du nach VBA suchst, findest du mehr Info zu Word, welches du dann fast 1 zu 1 in Powershell umsetzen kannst.

Gruß jodel32
Mitglied: internet2107
internet2107 25.11.2014 um 16:07:57 Uhr
Goto Top
Viele Grüße, jodel32.

DANKE!!. Hat sehr geholfen.