creating word doc - setting watermark background image on main page and page numbers on the rest

Hi, has anyone done this please?
I've created a word doc using
MATLAB code
wordDoc = invoke(get(wordApp, 'Documents'), 'Add');
and have populated it with tables and images etc.
I've just gone completely thick when trying to get the page numbers and an image on the first page!
Any help (or sympathy) appreciated :-)
Cheers,
Tom

Answers (1)

Hi,
one thing I do when I don't know the code for that is to let Word do a Macro and look at the generated VBA code. In that way you see the commands used to achieve what you like.
So start Word, enable Macro recording, do manually what you want, stop the Macro recording and than look at the VBA code.
This helps in 99% of the cases to get what you want.

5 Comments

Hey thanks, that's a great idea.
Do you know how I'd translate the following to matlab code please? No worries if not, I'm sure I've lost half my IQ today...
For the page numbers....
WordBasic.ViewFooterOnly
ActiveDocument.AttachedTemplate.BuildingBlockEntries("Plain Number 2"). _
Insert Where:=Selection.Range, RichText:=True
or for the image....
Selection.HeaderFooter.Shapes.AddPicture(FileName:="C:\Tom\background.png" ,LinkToFile:=False, SaveWithDocument:=True).Select
Thanks,
Tom.
The first time I had such a VBA code it took me a while to figure it out. So dont worry about your IQ ;) Best way here is to look up the Mircosoft documentation for the command (here AddPicture)
http://msdn.microsoft.com/en-us/library/aa171535%28v=office.11%29.aspx
You have to expand the "AddPicture method as it applies to the Shapes object". There you see the function call syntax and this is what MATLAB want.
So this
Selection.HeaderFooter.Shapes.AddPicture(FileName:="C:\Tom\background.png" ,LinkToFile:=False, SaveWithDocument:=True)
Should become
Selection.HeaderFooter.Shapes.AddPicture('C:\Tom\background.png',false, true)
Since Left, Top, Width, Height, Anchor are optional you dont have to pass them.
So for the BuildingBlockEntries see here:
http://msdn.microsoft.com/en-us/library/bb256797%28v=office.12%29.aspx
So this
ActiveDocument.AttachedTemplate.BuildingBlockEntries("Plain Number 2"). _
Insert Where:=Selection.Range, RichText:=True
should become something like
ActiveDocument.AttachedTemplate.BuildingBlockEntries('Plain Number 2').Insert(wordApp.Selection.Range, true)
Hey, sorry man, I just can't get this to work. I have a wordApp, wordDoc and selection object.
They're all set up fine, if I type
MATLAB code
selection.TypeText('Hello!');
Hello! is added to the word doc ok.
But if I enter:
MATLAB code
selection.HeaderFooter.Shapes.AddPicture('C:\Tom\background.png',false, true)
I get:
Attempt to reference field of non-structure array.
And if I enter:
MATLAB code
wordDoc.AttachedTemplate.BuildingBlockEntries('Plain Number 2').Insert(wordApp.Selection.Range, true)
I get:
Index exceeds matrix dimensions.
Is anything obviously wrong here please?
THANKS for all the help,
Tom
I am not 100% sure but maybe MATLAB cant resolve that code correctly. maybe try an invoke
invoke(selection.HeaderFooter.Shapes,'AddPicture','C:\Tom\background.png',false, true)
If this doesnt help, can you upload an example (word doc and your ML code) somewhere? So i can play around myself to get it running.

Sign in to comment.

Categories

Products

Tags

No tags entered yet.

Asked:

on 13 Feb 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!