OL2000: How to Update Existing Items to Use a New Custom Form

ID: q201087


The information in this article applies to:


SUMMARY

This article describes how you can update items in an Outlook folder so they open using a different form than the one they are currently associated with.


MORE INFORMATION

There are several situations where you might want to change the form that is used for all the items in a folder. For example:

A property of the item called message class determines the form the item uses. You cannot change the message class of an item manually. However, you can write Visual Basic Scripting Edition (VBScript) or Visual Basic Automation code to change the message class for all items in a folder.

When you create and publish a custom form, the form is assigned a message class. This message class determines which form is associated with an item. The format of the name is "IPM.<FormType>.<FormName>", where <FormType> is the type of form (Contact, Task, and such) and <FormName> is the name of the custom form. For example, if you create a new contact form, name it Revised, and then publish it to your Contacts folder, the message class is IPM.Contact.Revised.

NOTE: In each of the following operations, it is imperative that the new message class name be entered exactly as the name used when the form was published.

The following table lists the various names used for message classes:


   Item           Default folder  Default Message Class
   -------------  --------------  ---------------------
   Contact        Contacts        IPM.Contact
   Task           Tasks           IPM.Task
   Appointment    Calendar        IPM.Appointment
   Note           Notes           IPM.StickyNote
   Journal Entry  Journal         IPM.Activity
   Mail           Inbox           IPM.Note 
NOTE: You cannot customize and publish the Note form.

To see the message class for an existing item, add the message class field as one of the columns in the current view. The message class in this view is read-only; you cannot type in a different message class to change the form manually.

To add the message class to your view, follow these steps:

  1. Change the view to a table view, such as the Phone List view in the the Contacts folder.


  2. Right-click the column-header in the view, and on the shortcut menu, click Field Chooser.


  3. In the Field Chooser list, click to select All Contact Fields.


  4. Drag the Message Class field to the view column-header to add the field as a column.


Changing the Message Class field of existing items requires that you use Visual Basic Scripting Edition (VBScript) code within an Outlook form, or Visual Basic code from another program to automate Outlook and change the Message Class fields.

The following are two methods of changing Message Class fields. You should use the second method only if you do not have Microsoft Word 97 or Word 2000, or you cannot obtain the Omsgclas.exe file.

Download the Omsgclas.exe Utility

Download Omsgclas.exe, which contains a Word 97/2000 document with a macro that changes Outlook message classes. This is the same utility that was available for Outlook 97 and Word 97. It also works with Outlook 2000 and Word 2000. The macro runs automatically when you open the document.

When you open omsgclas in Word 2000, you may find that the Word document will come up but the macro will not run. To correct this problem, you must reset the macro security in Word 2000. While in Word, point to Macro on the Tools menu and click Security. Change the security to low or medium. This will enable the macro to run.

For more information on obtaining the Omsgclas.exe file, please see the following article in the Microsoft Knowledge Base:
Q201089 OL2000: Word Document to Change Message Class of Outlook Items

Create a VBScript Routine

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific needs. If you have limited programming experience, you may want to contact a Microsoft Certified Solution Provider or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Solution Providers, please see the following page on the World Wide Web:

http://www.microsoft.com/mcsp/
For more information about the support options available from Microsoft, please see the following page on the World Wide Web:

http://www.microsoft.com/support/supportnet/overview/overview.asp
Follow the steps below to create and run a VBScript routine that will change all the items in a folder to a specified form. This example assumes that you have published a new form called MyNewForm in the current folder. If you use a different title for your form, modify the form title used in the third line of code in the section "Enter the VBScript Code."

There are three tasks to this solution.

Create a New Item to Store the VBScript Code

  1. On the File menu, point to New, and then click Mail Message.


  2. On the Tools menu, point to Forms, and then click Design This Form to enter form design mode.


Enter the VBScript Code and Save the Form

  1. On the Form menu, click View Code.


  2. In the Script Editor, type the following code. You do not need to enter the lines that begin with an apostrophe, since these lines are comments that are ignored when executed.


  3. 
    Sub Item_Open
    
       ' Change the following line to your new Message Class
       NewMC = "IPM.Contact.MyNewForm"
    
       Set CurFolder = Application.ActiveExplorer.CurrentFolder
       Set AllItems = CurFolder.Items
       NumItems = CurFolder.Items.Count
    
       ' Loop through all of the items in the folder
       For I = 1 to NumItems
    
          Set CurItem = AllItems.Item(I)
    
          ' Test to see if the Message Class needs to be changed
          If CurItem.MessageClass <> NewMC Then
    
             ' Change the Message Class
             CurItem.MessageClass = NewMC
    
             ' Save the changed item
             CurItem.Save
    
          End If
    
       Next
    
       MsgBox "Done."
    
    End Sub 
  4. On the File menu, click Close.


  5. On the File menu, click Save As. Make sure the default setting for file type is Outlook Template (.oft), and then select a location to save the file. Enter a file name for the form and then click OK.


  6. Close the item by clicking the X in the upper-right corner of the item window and then click No when prompted to save changes.


Run the VBScript Code

  1. Open the folder that contains the items you wish to update.


  2. To run the VBScript code, open the item again by using Windows Explorer to locate the file and then double-click the .oft file. The code will run automatically because it was entered into an Item_Open event procedure. If you receive a macro warning, click Enable Macros.


  3. Wait while the code changes the message class for all of the items in the currently selected folder. Depending on the number of items, this may take several minutes. When the code finishes, you should receive a message that says Done.


NOTE: If you wish to edit the VBScript code later to change the name of the message class, hold down the SHIFT key when you open the item. This prevents the VBScript code from executing and you can go into design mode, make changes to the VBScript code, and save the form.


REFERENCES

For additional information about available resources and answers to commonly asked questions about Microsoft Outlook 2000 solutions, please see the following article in the Microsoft Knowledge Base:

Q146636 OL2000: Questions About Custom Forms and Outlook Solutions

Additional query words: OutSol OutSol2000 OL2K


Keywords          : kbdta 
Version           : WINDOWS:2000
Platform          : WINDOWS 
Issue type        : kbhowto 

Last Reviewed: July 30, 1999