Outlook Object Library Does Not Switch Between Versions 12 And 14
ForEachLoop,
It appears that your question has largely been answered. I will merely add a bit of information for clarity's sake, and to provide this question with an answer. A user on the Microsoft Forums, Ossiemac, noted that LateBinding was the way to go, as has been stated by Siddarth Rout. As implied by Siddarth, that means you do not have to worry about references.
Ossiemac provided some sample code for using the LateBinding in the sending of an email, which I have reformatted and placed here:
Private Sub btnLateBindMethod_Click()
' Variables used for LateBinding
Dim objOutlook As Object 'Outlook.Application
Dim objEmail As Object 'Outlook.MailItem
Dim objNameSpace As Object 'Outlook.NameSpace
Const OutLookMailItem As Long = 0 'For Late Binding
Const OutLookFolderInbox As Long = 6 'For Late Binding
Const OutLookFormatHTML As Long = 2 'For Late Binding
Dim strSubject As String
Dim strAddress As String
On Error Resume Next
Set objOutlook = GetObject(, "Outlook.Application")
On Error GoTo 0
If objOutlook Is Nothing Then
Set objOutlook = CreateObject("Outlook.Application")
Set objNameSpace = objOutlook.GetNamespace("MAPI")
objNameSpace.GetDefaultFolder(OutLookFolderInbox).Display
End If
Set objEmail = objOutlook.CreateItem(OutLookMailItem)
strSubject = "Hello World"
With objEmail
'.To = strToAddress 'Commented to prevent accidental send
.Subject = strSubject
.BodyFormat = OutLookFormatHTML
.Display
'Full Name of window can change depending on Tools -> Options -> Mail Format
'Changing this option for outgoing mail changes the window name.
'However, AppActivate appears not to require entire name but needs up to end
'of - Message which is included in heading following the Subject string
'irrespective of the Mail Format option chosen.
AppActivate (strSubject & " - Message")
End With
End Sub
Jimmy Pena has an article discussing the contrast of EarlyBinding and LateBinding -
~JOL
ForEachLoop
I'm a programmer, writer, and programmer-writer with the NASA Johnson Space Center in Houston. I write efficiency tools, focusing on Microsoft Office documents, most notably Word documents. I once wrote a product tracking application, in part making sure astronauts have clean underwear. Mundane perhaps, but the astronauts appreciate it. I have documented APIs for a long time, first at Microsoft, and then at NASA. In my so-called spare time I write about programming, APIs, and Microsoft Word automation. I've authored three books. I have a API documentation book coming out in spring of 2018 and before that was "The Secret Life of Word." Both from XML Press (xmlpress.net), available at Amazon.com and 10,000 other online bookstores. My first book as "Introduction to Microsoft Kokanee" (2002, Microsoft Press), about Microsft's speech recognition software.
Updated on June 08, 2022Comments
-
ForEachLoop almost 2 years
I have a .dotm template file on a network share. There are macros with references to the Word, Office, and Outlook object libraries. We use two different platforms, Windows XP and Windows 7, along with Microsoft Office 2007 and Office 2010. When users open the template file the references for Word and Office adjust automatic and accordingly (that is, they’re set to Microsoft Word 12 Object Library or Microsoft Word 14 Object Library as needed), and the macros run without a problem.
Microsoft Outlook Object Library switches properly from version 12 to 14. It does not switch properly from version 14 to 12. In that case, it gives the error that the libary is not found. Is this a bug? Is there a workaround? Something I’m overlooking?
-
ForEachLoop over 11 yearsThanks. I did end up using late binding. It's a great article! The solution's awkward since you lose a lot of the cool features of the editor. Also, if you use a compiler (such as Visual Studio) you can workaround this, for example, by having Word and Excel 2007 and 2010 loaded side by side and choose which version want to compile to. Unfortunately, two versions of Outlook can't be loaded side by side, so you're stuck with late binding anyhow.
-
Scott Conover over 11 yearsFascinating! I am glad it functioned, and the concept of passing between different versions of word for compilation by using VS bears further exploration in the future... Thanks for the details on the implementation! ~JOL
-
Ben Strombeck about 8 yearsThanks for this, this was very helpful. I had to Google for all of the constants I needed, as I'm dealing with calendar appointments instead of mail items, but this got me up and running again. I'm having to do this because of different versions of Outlook.