'Why does VBA code fail when setting a new instance of an Outlook Application object?
The first sub routine runs fine when called upon application startup, while the second does not bring up Outlook and instead takes a minute or two, culminating in an error. The only difference is that in the "set" statement, I put the word "New". I am aware that this means it is trying to open up a new instance of the Outlook client, while one is already running, but why wouldn't there be a way for the Outlook to deal with the request for a new application while one is already running, or use the new instance instead of the existing instance?
Sub SaveAttachment1_Initialize()
Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set olItems = olNS.GetDefaultFolder(olFolderInbox)
End Sub
Sub SaveAttachment1_Initialize()
Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Set olApp = New Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set olItems = olNS.GetDefaultFolder(olFolderInbox)
End Sub
Solution 1:[1]
If you are running in Outlook VBA, that line must be
Set olApp = Application
If not, the second one is correct. The first one makes no sense - you are assigning a variable to type (?).
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Dmitry Streblechenko |
