Article ID: 238755
Article Last Modified on 11/23/2006
APPLIES TO
- Microsoft Outlook 2000 Standard Edition
This article was previously published under Q238755
SUMMARY
If you are creating an advanced solution using Outlook, you may have a requirement to programmatically create a form where the layout varies based on certain criteria. This article provides an overview and starting point for building this type of solution.
MORE INFORMATION
Unlike previous versions, Outlook 2000 was specifically designed so you can programmatically create forms.
IMPORTANT: You should carefully evaluate how you use this capability. The following key issues should be taken into account:
- Depending on where forms and items are stored, solutions that repeatedly republish forms can place additional performance and resource burdens on a Microsoft Exchange Server.
- These types of solutions can cause potential problems with the Outlook forms cache and you should carefully evaluate how this approach may impact the cache. In particular, ensure that forms that are published to multiple locations do not have the same name. For additional information about the Outlook forms cache, click the article number below to view the article in the Microsoft Knowledge Base:
232303 OL2000: How the Forms Cache Works
- If you've already created items that use a published form, and then programmatically changed the form, there's a good chance that those items are one-offs. You should carefully plan and evaluate the use of one-off forms and how they relate to your forms solution. For additional information about one-off forms, click the article number below to view the article in the Microsoft Knowledge Base:
207896 OL2000: Working with Form Definitions and One-Off Forms
- The Outlook object model does not directly support switching between the compose and read pages of a form. Therefore, any programmatic changes you make to a form are done on the compose pages, not the read pages. Trying to develop a workaround can be problematic and most likely will involve using the .Execute method on the CommandBars objects to toggle a form between compose and read pages.
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 Partner or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Partners, please visit the following Microsoft Web site:
For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site:
Sample Code to Add a Control to a Form
The following Microsoft Outlook Visual Basic for Applications code illustrates how you can programmatically add a Label and Listbox control to a new page of the default Contact form. Be sure to reference the Microsoft Forms 2.0 Object Library before running the code.
Sub CreateForm() Dim oNewItem As Outlook.ContactItem Dim oInsp As Outlook.Inspector Dim oPage As Object Dim oLabel As MSForms.Control Dim oLB As MSForms.Control Set oNewItem = Application.CreateItem(olContactItem) Set oInsp = oNewItem.GetInspector ' Create a new form page called "My Page" Set oPage = oInsp.ModifiedFormPages.Add("My Page") ' Add the label to the form page Set oLabel = oPage.Controls.Add("Forms.Label.1", "lblCompanies", True) ' Size and position the label PlaceControl oLabel, 5, 10, 13, 100 ' Set the caption of the label oLabel.Caption = "Companies:" ' Add the listbox to the form page Set oLB = oPage.Controls.Add("Forms.ListBox.1", "cmdCompanies", True) ' Size and position the listbox PlaceControl oLB, 18, 10, 50, 100 ' Populate the listbox oLB.AddItem "Microsoft" oLB.AddItem "ACME" oLB.AddItem "Northwind" ' Change the form page so it defaults to "My Page" oInsp.SetCurrentFormPage "My Page" oNewItem.Display ' Clean up Set oListBox = Nothing Set oLabel = Nothing Set oPage = Nothing Set oInsp = Nothing Set oNewItem = Nothing End Sub Sub PlaceControl(Ctrl As MSForms.Control, T As Integer, _ L As Integer, H As Integer, W As Integer) Ctrl.Top = T Ctrl.Left = L Ctrl.Height = H Ctrl.Width = W End Sub
This code sample simply displays a newly created form. For additional information about how to programmatically create and publish a new custom form, click the article number below to view the article in the Microsoft Knowledge Base:
208520 OL2000: Programming Examples for Referencing Items and Folders
Refer to the Items.Add and CreateItemFromTemplate methods in the article.
REFERENCES
For additional information about available resources and answersto commonly asked questions about Outlook solutions, click the article number below to view the article in the Microsoft Knowledge Base:
146636 OL2000: Questions About Custom Forms and Outlook Solutions
Additional query words: OutSol OutSol2000 vbscript
Keywords: kbhowto kbprogramming KB238755