There are a few issues you need to be aware of when customizing an Outlook Appointment or Meeting form.
To open a form in Forms Designer in Outlook 2010 and Outlook 2013, you need to show the Developer ribbon.
Open a new form and click Design this Form or select a form from all forms by clicking Design a Form. When a form is in design mode, it will look similar to the screenshot to the right.
Need help designing a custom form? See Designing Custom Outlook Forms and Publishing Custom Forms in Outlook.
Issues when designing Appointment or Meeting forms
The first page of the Appointment form is not customizable. If you want to customize appointment form, you can hide the front page and design a custom page that looks like the first page.
Adding a control to a page (tab) will display that page by default. To rename or hide a page, check the options on the Page button.
Doing this leads to the next issues:
Outlook does not include a date and time picker. Outlook 2007 introduced date and time pickers for use with form regions. However, these are not designed for use on legacy forms. Using the new controls on legacy forms may cause form corruption and the loss of code behind the form.
After you publish an appointment form, when you open a new item with that form (other than by double-clicking in a Calendar folder's Day/Week/Month view), the Start date may default to the date you published the form. The form will also have a reminder set if the user's default option is to use a reminder. To avoid this problem you need to use code in the form that turns off the reminder and causes it to default to the current date.
Function Item_Open() If Item.Size = 0 Then Item.Start = Now() Item.ReminderSet = False End If End Function
You cannot use your own values in the Location drop-down list on the first page of an appointment form. Outlook maintains this list as a registry entry. See To clear the Location drop-down list on Outlook appointments
Ideas for custom Appointment or Meeting forms
Now that you know what to watch out for, there are a couple of useful uses for custom appointment forms:
Create one or more custom meeting form with the resources selected. If you always invite specific users to all meetings, add them to the form as well.
Set a field in every new appointment
When you open a new appointment form you can set a default value for any field using the Item_Open function in a script.
I'll demonstrate how to do this using a default setting that annoys a lot of people: Outlook's 30 minute duration when creating a new appointment.
Outlook's default duration is 30 minutes when you click the New Items button. To use a different duration you need use the day or week view with the desired scale then click in a time period. Or you can use VBScript in a custom form.
This simple script will set the default duration to 15 minutes when you click New Meeting or New Appointment command.
The basic steps to create a custom form are below. I have more information, including screenshots, at Designing Custom Outlook Forms and at Publishing Custom Forms in Outlook.
- If the Developer ribbon is not visible, go to File, Options, Customize Ribbon and add a check next to Developer.
- Click New Appointment.
- Switch to the Developer ribbon and click Design This Form button.
- Click View Code button.
- Paste the Item_Open function into the Script Editor.
Function Item_Open() If Item.Size = 0 Then Item.duration = 15 End If End Function
- Test it by clicking Run this form on the Developer ribbon.
- Return to the forms designer and click Publish, Publish form as.
- Type a name for your form and click Publish.
- Set the form to be the default calendar form.
When you use Exchange server mailboxes, you can easily share the form with coworkers if it's published to the Organizational Forms Library. See Create an Organizational Forms Library for more information.
Hi Diane
I have been searching for a particular Outlook Macro use case and haven't quite seen waht I need. I wonder if you can help me.
The end result is that I would like to create a number of buttons on my Quick Access Toolbar in Outlook that will create appointments with various properties pre-set. For example I would like to be able to click on a time in outlook and then hit a button to do:
button1 - creates a 15 min appt marked as free time, and with a particular category set and with alarm set to 0 mins. It opens the appointment ready for me to write in the subject.
button2 - creates a 30 min appt marked private and with a category set.
etc.
What I am trying to do is set various standard use cases up with minimum keystrokes.
Is this possible? Can you point me in the right direction to start digging?
I can write a bit of VBA.
many thanks in advance
Jason
Of course it is possible. Repeat the Type1 macro (with a new name of course) for each button.
Hi Diane
Thanks for replying so promptly.
I gave this a go and followed the steps further up your web page i.e.
If the Developer ribbon is not visible, go to File, Options, Customize Ribbon and add a check next to Developer.
Click New Appointment.
Switch to the Developer ribbon and click Design This Form button.
Click View Code button.
Paste the code into the Script Editor (I copied in your code above).
Test it by clicking Run this form on the Developer ribbon
When I tested it I expected an appt with the properties set in your code (such as the subject etc), but just seemed to get the regular appointment.
Am I missing something?
Thanks
Jason
Did you run the Type1Appt macro? It sends the field values to the "master" macro named CreateNewAppt. This allows you to reuse the CreateNewAppt macro with Type2Appt, Type3Appt etc.
To use, click in the Type1Appt and click Run.
Hello,
I have developed a custom meeting request but are hampered by a few issues. I cannot use vbscript due to Microsoft security restrictions and my IT department locking me out of Registry changes. There is also no date/time pickers that can be used and bound to the meeting start/end times.
So I am sort of forced to use the default Appointment form to enter the start and end times. I'm happy to do this and then use the custom form to enter the rest of the required information. However I want the form recipient to only see the custom form or at least have the custom form show by default.
If I hide the standard appointment page then I can't put in the start/end times. If I don't hide it then the recipient sees it which is not what I want.
Any idea's on how I might be able to do this will be greatly appreciated
Thanks
Rick
If you don't need the date/time picker, users can just type the date and time in, in the format Outlook 12:52 AM you could use the custom form. (users can use shortcuts like 12/25, 3w, and 3.30p)
Diane,
I am trying to programmatically set the end time for appointments ( we have 4 standard start and 4 standard end times with 2 varying durations). I've tried setting the end time and the duration programmatically; however, the duration nor end date seems to save properly. If I switch over to scheduling assistant it will save the time, but the date is some time in the future.
Any way you can help me out? I've been working on this for 2 days with no success. I find it hard to believe something so simple can be so difficult to accomplish.
If you have an email address I can share sample code and forms with you.
Thanks in advance for any help
Chad
you can send me the sample at diane at slipstick.
You don't need to use both duration and end time - if you have the start time and set the duration, the end time is set based on the duration. Same for the duration if you set an end time.
Thanks Diane, I sent it to you via email.
I only was setting one or the other, but there is something I'm missing to get it to save properly.
Hope you can help!!
I will take a look at it.
I have the same Appointment requirement that you describe, Chad. Would love to know what you two learned. I would like to provide an add-in for my co-workers that would make these non-standard start/end times easier to select. doryowen at gmail
Diane, I manage several calendars for others. I want to track all appointments that I create. I created a "Created By" field in the P.2 Form Region which inserts my initials in that field. How do I use this form as the default new appointment form that is associated with the keyboard shortcut CTRL+SHIFT+A? Do you have a better idea for tracking "Created By"?
That will work - to set it as the default form, you need ot publish it, to an org library is best if its going to be used in other calendars, but it's ok if you can't. Publish it to the calendar folder(s) and set it as default for the folder - right click on the folder, choose properties then choose it for the default form. See https://www.slipstick.com/developer/how-to-apply-a-new-default-form-to-an-outlook-folder/ for more details.
Hi Diane,
This discussion was very useful and it helped me create the form that I needed to get appointments in the same format. My question is, is there a way to send my Form as a template so that others can use it?
I don't have a option to publish to MS Exchange...so I can only publish locally. I need to share this form with others so the entire team is using it. Is there a way?
Is there a way to do a template that results in a appointment being generated sent to the right people? Again I was able to do it with a form, but can't seem to share it.
You either save it as a template - open the form to create a new item and save it as a template, or if it is a published form, you can save it as a frm file in File, Options, Advanced, Custom forms button, Manage forms. find the form and then choose save as. The recipients will publish it using pretty much the same steps.
Hi Diane. Great information on your site on your site on working with forms. We have a custom appointment form for our calendar that is shared among multiple locations. Recently it was asked about creating a reminder AFTER an appointment to go back and make sure everything was complete from that meeting. I am hoping you may have a suggestion that we could try, as we have used several different fields without success. Thanks for your help!
Andy
You'll need a script behind it - do you want to change the reminder on the initial appointment to reset it or create a followup appointment or task?
Just one correction here, it includes while replying but the recipient doesn't receive appended new message text + original message.
Hi Diane,
I have a custom form to compose and reply, for some reason while replying it does not include original message in the body. Initially I had chosen "Respect user's default" in "Actions" tab while replying, but that didn't work although my normal reply mails includes original text. Later i choose to "Include and indent original message text" and published the form, but still it doesn't work.
I have unchecked File->Options->mail->Ignore original message text in reply or forward.
Kiran
Did you create a separate read layout? That can cause issues such as this, although I would expect to see the quoted content in the message.
Does your form use script to set the message body?
Yes i have separate form for compose and read. No i don't have any script. The compose layout has some standard mail input like To,CC, subject and some custom input (Status and Ticket) set with user defined fields and read layout has labels to show this user defined fields. Let me put the case i am doing in steps, 1. Compose a new message(A) with input in To,CC,subject, Status, Ticket and some text in message body(it also has the default signature set) 2. Send the composed message(A), Recipient receives the message(B) with the message body text and other fields including Status and Ticket fields. 3. Recipient replies the message, opens the compose message(C) with message trail of A in message body and adds some more text in the message body. Also changes the Status and Ticket custom field and sends the message. 4. Message(D) received by original sender(1) as a reply, but the text in the message body is empty, although the Status and Ticket fields are updated as sent in C. 5. Recipient in point 3 checks the message(C) in sent folder, the message body text is empty in message(C) but the status and Ticket fields are updated as… Read more »