How to automatically refresh an appointment windows after changing the MessageClass property ?

Marc M.

New Member
Outlook version
Outlook 2007
Email Account
Exchange Server
#1
Hi,

I created a custom form to display user defined fields in appointment items.
It works fine. This new form is defined as default appointment class (IPM.appointment.myForm).
When I add an appointment, the window is displayed with this form, even when somebody adds an appointment thru my shared calendar ! Great !

But... we use a special application which writes directly in Exchange Server (why not ?).
Unfortunately, when I open the appointments created by it, my custom form is not used. Of course, I can change it. But, if this application updates again the appointment, the custom form class is lost...
As I'm not sure I'll be able to get this problem fixed by the editor, I must find a solution on my side.

My question is not why this application does not respect my custom form, but how I can get around it...

If the messageClass property is not set correctly, I would like to update it, but, "just before" the window is displayed.
I have tried to update it thru a button launching a VBA macro once the window is displayed. But the window is not "refreshed" : my change is not taken into account until I reopen the window.

How can I do ?

Thanks
 
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
#2
I think you could check it using the open event then change it. I don't have any code samples, that I recall. How often do the vents update? I have a macro at slipstick.com that will check all apt and change them. You could run that every now and again, triggered by a reminder.

Sent from my Surface 2 using Tapatalk
 

Marc M.

New Member
Outlook version
Outlook 2007
Email Account
Exchange Server
#3
Hi Diane,

Thanks a lot for your answer ! I thought about open event. But, I'm a newbie with VBA. I supposed it may exist but I could not find any simple sample.
I found this :
Code:
Private WithEvents appt As Outlook.AppointmentItem

Private Sub appt_Open(Cancel As Boolean)
  MsgBox "Open Event"
End Sub
and saved it in the "ThisOutlookSession" module. But, when I open an existing appointment, no message box... :(

About the event updated, well, the other application manages our timatables (it's more powerful than Outlook). So, it may happen at anytime, several times a day if a colleague decides to update my appointment thru this tool.
Fortunately, user defined data are set and remains even if the fields are not displayed. Most of the time, they are set by this extra application. I just must ensure that there are displayed when I open such an appointment. Your macro may be useful if the timetable does not change a lot... not in my case unfortunately.

Best Regards,

Marc
 

Marc M.

New Member
Outlook version
Outlook 2007
Email Account
Exchange Server
#4
Hi,

I made a few tests yesterday. A colleague helped me : we could not make this code to work. So, he added an event handler on application. We could then check if the object linked to the open event was a appointment.
Unfortunately, when just read the messageClass of the appointment, Outlook crashes :(

Marc
 

Michael Bauer

Senior Member
Outlook version
Outlook 2010 32 bit
Email Account
Exchange Server
#5
For gettign the Item_Open event, you need to track the SelectionChange event, and set a reference on the first selected item. It'd be easier to use the Newinspector event. You cannot cancel it, however, you could can use ot to get a reference on the item, change the MessageClass, close the item, display a prompt telling the user what's going on, and re-open it.
For your third-party app: The messageclass is often set back to the default if UserProperties are accessed.
 

Similar threads

Top