Word Macro's in templates

Word Macro's in templates

Currently we have code that works perfectly when opening the document up.  The sub procedure "AutoOpen()" placed in the "ThisDocument" module of the Word Objects part of the project runs and will open a userform.  That userform, then uses the ThisDocument command to change the picture of an image control within the document called "imgSpace", using the following code:

ThisDocument.imgSpace.Picture = LoadPicture(ImagePath)

This all works fine....that is until the document is then converted to a template.  When it is a template, it creates a copy of itself (with references to the original template code), the autoopen() procedure will not run and the references to ThisDocument.imgSpace no longer work.

How can i convert the code to automatically run when the template is opened...and only this template (so not global), and also refer to the control "imgSpace" within the new document based on the template.

Hope this all makes sense, and thank you in advance.

Many thanks

RomoloIT Professional ConsultantAsked:
Who is Participating?
GrahamSkanConnect With a Mentor RetiredCommented:
Microsoft is trying to move away from the Auto.. macros. In the case of AutoOpen, you can use the Document_New and Document_Open events in the ThisDocument module of your template.

When you create a new document from the template, ThisDocument refers to the template itself. ActiveDocument will refer to the new document.

Go into the VBA editor (Alt+F11)  in the template, then Insert/Module from the menu, right click on the module and rename it to AutoOpen, then insert a proceduer called

Public Sub MAIN()
    'Your code goes here
End Sub
RomoloIT Professional ConsultantAuthor Commented:
cquinn... didnt work im afraid


yep..worked a treat

many thanks

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.