![]() |
Set a Non-Standard Form as the Default Form in a Folder with VBA
Hi. We have to handle a huge amount of public contactfolders. Now we created
a new contactform and want to change the existing contactitems to this form. So I wrote a VBA-Script, which changes the messageclass of all items in a folder and all subfolders. This works fine, but with the same script I want to set the new form as the default form in all the subfolders. This doesn't work, because I can't find the right property of the public folder. I'm using the MAPIFolder object. Is this the right one? |
Set a Non-Standard Form as the Default Form in a Folder with VBA
MAPIFolder is the correct object, but the property you need to set isn't
exposed in the Outlook object model. You need to set PR_DEF_POST_MSGCLASS (0x36E5001E), PR_DEF_POST_DISPLAYNAME (0x36E6001E) PT_STRING8 properties PR_DEF_POST_MSGCLASS gets set to the MessageClass you want as the default and PR_DEF_POST_DISPLAYNAME gets set to the display name of that form. You will need to use a lower level API such as CDO 1.21 or Extended MAPI (C++ or Delphi only) or Redemption (www.dimastr.com/redemption) to do what you want. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003 Reminder Manager, Extended Reminders, Attachment Options http://www.slovaktech.com/products.htm "Dirk" wrote in message ... Hi. We have to handle a huge amount of public contactfolders. Now we created a new contactform and want to change the existing contactitems to this form. So I wrote a VBA-Script, which changes the messageclass of all items in a folder and all subfolders. This works fine, but with the same script I want to set the new form as the default form in all the subfolders. This doesn't work, because I can't find the right property of the public folder. I'm using the MAPIFolder object. Is this the right one? |
Set a Non-Standard Form as the Default Form in a Folder with V
Hi Ken,
thanks for your answer. I never used these lower level APIs before, so I have to find out how to use them in VBA. Would be nice, if anyone has helpful hints. "Ken Slovak - [MVP - Outlook]" wrote: MAPIFolder is the correct object, but the property you need to set isn't exposed in the Outlook object model. You need to set PR_DEF_POST_MSGCLASS (0x36E5001E), PR_DEF_POST_DISPLAYNAME (0x36E6001E) PT_STRING8 properties PR_DEF_POST_MSGCLASS gets set to the MessageClass you want as the default and PR_DEF_POST_DISPLAYNAME gets set to the display name of that form. You will need to use a lower level API such as CDO 1.21 or Extended MAPI (C++ or Delphi only) or Redemption (www.dimastr.com/redemption) to do what you want. -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003 Reminder Manager, Extended Reminders, Attachment Options http://www.slovaktech.com/products.htm "Dirk" wrote in message ... Hi. We have to handle a huge amount of public contactfolders. Now we created a new contactform and want to change the existing contactitems to this form. So I wrote a VBA-Script, which changes the messageclass of all items in a folder and all subfolders. This works fine, but with the same script I want to set the new form as the default form in all the subfolders. This doesn't work, because I can't find the right property of the public folder. I'm using the MAPIFolder object. Is this the right one? |
Set a Non-Standard Form as the Default Form in a Folder with V
With VBA you can forget about Extended MAPI, it's only C++ and Delphi.
CDO is an optional installation for Outlook, it's on the Office CD's. Redemption is a third party library. This is what it would look like in CDO code: 'assuming you have CDO installed and a reference set to Microsoft CDO 1.21 Library (CDO.DLL) ' also assuming a folder olFolder has been instantiated: Dim Folder As MAPI.Folder Dim oSession As MAPI.Session Const PR_DEF_POST_MSGCLASS = &H36E5001E Const PR_DEF_POST_DISPLAYNAME = &H36E6001E Set oSession = CreateObject("MAPI.Session") oSession.Logon "", "", False, False Set oFolder = oSession.GetFolder(olFolder.EntryID, olFolder.StoreID) If IsEmpty(oFolder.Fields(PR_DEF_POST_MSGCLASS)) Then oFolder.Fields.Add(PR_DEF_POST_MSGCLASS, "IPM.Contact.MyContact") Else oFolder.Fields(PR_DEF_POST_MSGCLASS).Value = "IPM.Contact.MyContact" End If If IsEmpty(oFolder.Fields(PR_DEF_POST_DISPLAYNAME)) Then oFolder.Fields.Add(PR_DEF_POST_DISPLAYNAME, "My Contact Form") Else oFolder.Fields(PR_DEF_POST_DISPLAYNAME).Value = "My Contact Form" End If oFolder.Update 'save oSession.Logoff -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003 Reminder Manager, Extended Reminders, Attachment Options http://www.slovaktech.com/products.htm "Dirk" wrote in message ... Hi Ken, thanks for your answer. I never used these lower level APIs before, so I have to find out how to use them in VBA. Would be nice, if anyone has helpful hints. |
Set a Non-Standard Form as the Default Form in a Folder with V
Hi Ken,
thanks a lot. It works. You're great! Greets, Dirk "Ken Slovak - [MVP - Outlook]" wrote: With VBA you can forget about Extended MAPI, it's only C++ and Delphi. CDO is an optional installation for Outlook, it's on the Office CD's. Redemption is a third party library. This is what it would look like in CDO code: 'assuming you have CDO installed and a reference set to Microsoft CDO 1.21 Library (CDO.DLL) ' also assuming a folder olFolder has been instantiated: Dim Folder As MAPI.Folder Dim oSession As MAPI.Session Const PR_DEF_POST_MSGCLASS = &H36E5001E Const PR_DEF_POST_DISPLAYNAME = &H36E6001E Set oSession = CreateObject("MAPI.Session") oSession.Logon "", "", False, False Set oFolder = oSession.GetFolder(olFolder.EntryID, olFolder.StoreID) If IsEmpty(oFolder.Fields(PR_DEF_POST_MSGCLASS)) Then oFolder.Fields.Add(PR_DEF_POST_MSGCLASS, "IPM.Contact.MyContact") Else oFolder.Fields(PR_DEF_POST_MSGCLASS).Value = "IPM.Contact.MyContact" End If If IsEmpty(oFolder.Fields(PR_DEF_POST_DISPLAYNAME)) Then oFolder.Fields.Add(PR_DEF_POST_DISPLAYNAME, "My Contact Form") Else oFolder.Fields(PR_DEF_POST_DISPLAYNAME).Value = "My Contact Form" End If oFolder.Update 'save oSession.Logoff -- Ken Slovak [MVP - Outlook] http://www.slovaktech.com Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003 Reminder Manager, Extended Reminders, Attachment Options http://www.slovaktech.com/products.htm "Dirk" wrote in message ... Hi Ken, thanks for your answer. I never used these lower level APIs before, so I have to find out how to use them in VBA. Would be nice, if anyone has helpful hints. |
All times are GMT +1. The time now is 11:32 AM. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2006 OutlookBanter.com