|
"Trigger" a macro from inside a
template to play automatically at specific times (events), such
as when you open a new document or before you print a document |
WordPerfect 9's online Help (F1, Index tab,
"Triggering macros from templates") says this:
"You can play a macro as you use a template.
To do this, record a template macro, then associate the macro
with a trigger to start the macro.
For example, if you use a template to create
letters, you can set a PRE PRINT trigger in the template that
runs a spell-check macro. The macro then lets you spell-check
your letters just before they print.
You can use the macro triggers in the following
table:"
|
TRIGGER |
DESCRIPTION |
|
POST CLOSE |
Runs in the active window after you close a window. |
|
POST NEW |
Runs after you open a window by clicking File,
New. |
|
POST OPEN |
Runs after you open a window by clicking File,
Open. |
|
POST PRINT |
Runs after you send a print job to the printer. |
|
POST STARTUP |
Runs when you start WordPerfect. The macro must
be associated with the default template. |
|
POST SWITCH DOC |
Runs in the active window after you switch from
another window. |
|
POST TABLES |
Runs after you create a table structure in a
document, but before you enter data in the table. |
|
PRE CLOSE |
Runs before you close the active window by clicking
File, Close. |
|
PRE NEW |
Runs in the active window before you open another
window by clicking File, New. |
|
PRE OPEN |
Runs in the active window before you open another
window by clicking File, Open. |
|
PRE PRINT |
Runs after you click File, Print, but before
the print job is generated. |
|
PRE SWITCH DOC |
Runs in the active window before you switch to
another window. |
|
PRE TABLES |
Runs after you insert a table by clicking Insert,
Table, but before the table structure is created in the current
window. |
Note that you can have only one macro
associated with a particular trigger.
The two most common triggers used with simple
template macros are Post
New (play on creating a new document
based on the template) and Pre
Print (play at print time).
In addition to recording a template macro (i.e., recorded while
editing the template) you can use a previously recorded macro
stored on your disk. Here's how.
Assuming the macro is located in your default
macros folder as shown in WordPerfect's Tools, Settings Files,
Merge/Macro -
- Edit the template on which the document will
be based by (usually) clicking on File, New from Project -- then
right-clicking the template's name and choosing Edit WP Template.
(The default template on which all new documents are based is
(blandly) named "Create a new document.") The template
document should now be on screen.
- [This is the point at which you could record
a template macro with Tools, Template Macro, Record. However,
here we are going to use a macro already stored on disk.]
- On the Template Property Bar, click Copy/Remove
Object. In the dialog that appears, click the down arrow in the
Object Type window and select "Macros on Disk." In
the Source field, click the browse button and select the macro
by name. Click the Copy>> button to copy the macro to the
template, then click Close.
- You should now be back in the template document.
Now we'll "trigger" this macro to play automatically.
For example, we can make it play immediately after you choose
File, Print... (but before the print job starts). Here's how:
- Click the Associate button on the Template
Property Bar. Next, click the Triggers radio button, then select
"Pre Print" in the left window. In the Macros drop
list, choose the name of the macro and click OK.
- Save the template with File, Save. Test the
operation of the macro by loading a new document based on the
template, typing some text into it, and then printing it with
File, Print.
NOTES
- Older documents
that were based on the template (or some other template) will
not automatically play the macro -- the macro didn't exist inside
those templates at the time the documents were created -- so
you may also want to assign the macro to a toolbar button
or keystroke combination. You can then
manually play it as needed.
- Ordinarily, only template macros can be associated
with a trigger. Macros on disk that are not already part of that
template cannot be called (i.e., started) by a template trigger,
but they can be copied into the template first and then associated
with a trigger, as explained above. However, if a disk
macro already has been included on a toolbar (or menu,
or associated with a keystroke) in that template, then
it will be available to associate with a trigger.
- If you want to use the POST NEW trigger and
notice something already associated with it called "<dofiller>"
here's an explanation (admittedly a bit convoluted):
- WordPerfect's DoFiller feature is normally
activated by Prompt Builder and then associated with the Post
New trigger in the template. DoFiller automatically fills in
fields in a template that are linked to your Personal Information.
But if you use a "startup" template macro associated
with Post New -- and since you can have only one template macro
associated with a trigger -- you will need the TemplateFill()
command to activate DoFiller as well as display the Template
Information dialog, if required, to get prompted information
from the user. You can place the TemplateFill() command anywhere
in the "startup" template macro where you want the
Template Information dialog to appear, but most often it is used
as the first command. [Think of TemplateFill() as the macro command
equivalent of the DoFiller feature.]
- For those who want to know more about automating
templates, either see LETTERHD
or read the PDF file
(about 400Kb), also included in LETTERHD.
- If you plan to share documents containing
template macros with other WordPerfect users, take note of this:
- If a template containing a template macro
is set to be triggered by some event (such as opening a new document
based on that template), note that the template macro will only
trigger in a document (.WPD) if the template (.WPT) is present,
either in the original template folder or in the default (parent)
template folder. If WordPerfect cannot locate the template, the
template macro will not play even though it is embedded in the
document itself, since the trigger specification is stored in
the template, not in the resulting document.
- This can cause problems when sharing such
automated documents with other WordPerfect users. Make sure they
also have the template that spawned the document and it is located
in the same relative folder as the original. [This might explain
why template macros fail to automatically play in some documents
if the original template has been renamed, relocated, or removed.
- If a template macro does not run automatically
when loading a new document or WordPerfect Project, or when some
other expected trigger event occurs, template macros may have
been turned off by a user. According to the Corel Knowledge Base,
"This issue can occur if template macros have been disabled.
When opening one of [these automated] files, you will get a dialog
box entitled PerfectScript', explaining that this document
has a macro, and that macros can contain malicious code. If the
Do not show this message again' box is checked, and Yes'
is selected, that prompt will not come up again, and the macros
will not run. The only resolution is to remove a setting from
the Windows Registry." For more information, see "Template
Macros Do Not Run When Opening A Template" (Article
ID 203185) at http://kb.corel.com.
(The solution there should apply to WordPerfect 9 and to later
versions.)
- The trigger associations for a given template
can also be determined with a macro. See Klaus Pfeiffer's macro
posted (and downloadable) on WordPerfect Universe here.
|