"Ads by Goooooogle" links provided by Google.com, which has sole control over all advertising content it displays on this site.

Home | Tips | Library | Other Authors | Other WP Sites | Writer's Links | Contact | Site Map

Barry MacDonnell's
Toolbox for WordPerfect

Macros, tips, and templates for Corel® WordPerfect® for Windows®
© Copyright 1996-2008 by Barry MacDonnell. All Rights Reserved.

Page updated Dec 11, 2007
DATEREPL - Change all date codes (dynamic dates) to text (static dates)

Download DATEREPL.ZIP (Includes 2 macros: v1.01, 7/13/01 @ 4,485 bytes; v1.03, 7/13/06 @ 12,182 bytes; compressed ZIP file = 8,005 bytes)

Compatible with WordPerfect 6-X3+

Downloading, Documentation, Modifications, and Support

WordPerfect 11 users: See important information about using macros in the first release of WP11 (11.0.0.233) at the top of this page.

There are two ways a date can appear in WordPerfect (other than as a date-formatted table cell):

  • as a dynamic code (which is visible in Reveal Codes as [Date]), which means the date will automatically (dynamically) change in the future to the then-current date, and
  • as a static string of text -- usually created by typing a date such as "Thursday, July 13, 2006" into the document -- which means the date will remain the same if you open the document in the future to edit it or print it.

Many templates insert the current date as a [Date] code, which changes whenever you open the document at a later date. Users often complain that when they re-open a document based on such a template at a later date, the date changes to the then-current date (taken from the system clock), and doesn't show when the document was actually saved.

Also, when you press <Ctrl+Shift+D> on the default keyboard or check the box ("Keep the inserted date current") at the bottom of the Insert, Date/Time dialog, you'll get a [Date] code, not a string of (static) text.

How DATEREPL works:

If you want to replace all [Date] codes in a document with the current (system clock) date in nomal text, so that they reflect the date the document is being written or edited, just play DateRepl while in that document. If there are [Date] codes in the document they will be converted to text strings ("Friday, June 1, 2007"). Otherwise the macro will simply exit.

The DateText macro command produces a static date, the same as if you typed it into the document. It remains the same no matter when you open the doc in the future.

Note that, since a macro can also "bookmark" a static date at the same time it creates one, the [Bookmark] codes can be found later by a macro to update a static date. This is the idea behind version 1.03 of this macro, included in DATEREPL. (Be sure not to remove these bookmarks later, or the macro will fail or not run properly.)

TIP: You may want to insert/update static dates at print time (assuming that is the only time an updated date is truly needed, since you can see the date the file was saved in the File Open dialog). This macro can be used as a template macro, associated with the PRE PRINT trigger. (See WP's online Help <F1> index for more information on associating template macros with trigger events, or see the author's "Automating WordPerfect Templates" on the Tips page.)

Two macros are included:

Version 1.01 is the original version. It simply finds all date codes and converts them to text dates. It does not insert and save [Bookmark] codes at static date locations into the document (as the next version does). It simply replaces any [Date] codes with the current date as a string of text characters.

Version 1.03 includes the ability to convert existing date codes (same as v1.01) but if it is used multiple times on the same document it will also update any static dates created when the macro was last played on that particular document (the document will contain special bookmarks around each converted date as a result of the initial conversion; be sure not to delete them).

Intermediate-to-advanced user tips:

1. Automatically insert the current date as a static date -- i.e., a string of text characters (i.e., a static date) in new documents such as letterheads or memos, as soon as they are opened. You can also position the cursor, ready for typing body text. This requires modifying the template on which the document is based, which is easy to do, but it does require recoding a simple template macro to do the job. See here.

2. Automate the updating of several static dates in a template with a template macro

Similar to the above tip, but you would use a template macro to insert the current (static) date in several locations. [This is the technique used in the LETTERHD template in the Library.]

Unlike the DATEREPL macro, which replaces existing date codes in the template with dates composed of text strings, this technique simply finds certain pre-marked locations in the template and inserts static dates at those locations. Here's how.

  • Open the template and edit it to remove any [Date] codes. (Unless, of course, they are needed by any template macro that might be in the template.)
  • Then insert a text placeholder such as [Date1] where the date should go. Just type it in the template where needed. (If you need more dates to be updated, use [Date1], [Date2], etc.)
  • Next, select each date, including the brackets (if any), and click Tools, Bookmark, Create, OK. (Be sure NOT to change the name that WordPerfect uses, or uncheck the "Selected Bookmark" checkbox when the Create Bookmark dialog appears.)
  • This will place a paired bookmark around the text placeholder(s). You can see it in Reveal Codes. This is what WP's Prompt Builder does.
  • Next, create a template macro with code like this (the example below assumes you have 3 dates somewhere in the doccument)::

OnError(End@)

BookmarkBlock ("[Date1]")
Type (DateString (DateAndTime(); Format: "MMMM d, yyyy"))

BookmarkBlock ("[Date2]")
Type (DateString (DateAndTime(); Format: "MMMM d, yyyy"))

BookmarkBlock ("[Date3]")
Type (DateString (DateAndTime(); Format: "MMMM d, yyyy"))

Label (End@)

Quit

The format of the date can be changed. See WordPerfect's Macro Help, under the DateString command.

Finally, you probably should associate the above macro with the PRE PRINT trigger, assuming the dates in a document are important only when the document is printed. Then, each time you go to print the document (and as long as the template itself is still on your system), the macro will fire up and replace whatever is between each paired bookmark. The first time the template macro plays it will replace the text placeholder; at subsequent times it will replace (overwrite) the entire typed date. This is a handy way to show a "print date" on a document.

Related tips:

  • If you need help creating template macros or associating template macros with trigger events, see "Automating WordPerfect Templates," on the Tips page.
  • Note that you can actually edit a date (or whatever is between each paired bookmark) and change it -- it's just a string of text characters -- but when the macro plays, the dates will be replaced with the current date (assuming the bookmarks have not been deleted!).
  • One thing to be aware of in this approach is not to delete the bookmark(s) or the macro will not know where to put the new dates. In this macro, if you delete one or more bookmarks the macro will simply exit (Quit) when it can't find a bookmark. The OnError command suppresses any message if a bookmark is not found. (When bookmarks are not found, WP generates an Error condition, not a NoFound condition.)

3. Need to insert a date that is "n" days after the current date? Here's a code snippet from Roy ("lemoto") Lewis:

x=DateAndTime+n
y=DateString (x;;"dd/MM/yyyy")

... where "n" is the number of days to add to the current date. See the DateString command for other parameters.

Page Top