John
John

Reputation: 25333

Add AUTOTEXT to MS Word Document with Power Shell

I am working on a project where I need to add AUTOTEXT entries like the Page 1 of X listings to the header and footer of a Power Shell generated MS Word document. I have tried extracting ideas from the following C# examples, but I cannot seem to figure out how to make it work. I was curious if someone could share some code to help me with this.

Upvotes: 0

Views: 1217

Answers (1)

CB.
CB.

Reputation: 60918

A starting point. This function add page number to the footer of document passed as parameter ( used on word 2010):

function Add-PageFooter ([string]$Document) {

add-type -AssemblyName "Microsoft.Office.Interop.Word" 

set-variable -name wdAlignPageNumberCenter -value 1 -option constant

$fc1 =  "Page"

$word = New-Object -comobject Word.Application
$Word.Visible = $True
#$Word.Visible = $False

$fc2 = [ref] "" -as [Type]

$OpenDoc = $Word.Documents.Open($Document)
$c = $OpenDoc.Sections.Item(1).Footers.Item(1).PageNumbers.Add($wdAlignPageNumberCenter)
$range1 = $openDoc.Sections.Item(1).Footers.Item(1).range
$field1 = $OpenDoc.Fields.Add($range1, -1, $fc2)
$field1.Code.Text = $fc1
$field1.Update

#$OpenDoc.Close() 
}

Another way is to create a Word Macro and execute from powershell:

$wd = new-object -comobject word.application # create a com object interface (word application)

$wd.documents.open("C:\word\test.doc") # open doc

$wd.run("Macro01") # exec macro named macro01 that add custom footer and/or header

$wd.quit() # exit application

The macro must be saved on normal.dot (normal.dotm for 2010 and above) to have it in all open documents.

In this way you can customize what you want in a word document and not just header/footer recording in a macro your actions in the docs.

Upvotes: 1

Related Questions