CreateObject(), GetObject() question

S

Salad

I have the following sub
Sub test()
'it doesn't matter which of these I use.
Dim olApp As Object
'Dim olApp As Outlook.Application

'always a (8007007e) error with following line.
'Set olApp = CreateObject("Outlook.Application")

'never get an error as long as Outlook is open
Set olApp = GetObject(, "Outlook.Application")
Set olApp = Nothing
MsgBox "Done"
End Sub

I have a reference set to Microsoft Outlook Object Library.

I commented out the CreateObject() line because I get a runtime error
(8007007e) "Automation Error: The specified model could not be found."

It works with the GetObject() line...but only if Outlook is open. If
Outlook is closed, I get an runtime error 429 "ActiveX can't create
object. Is this normal?

Any idea of what is wrong?
 
M

Michael Bauer [MVP - Outlook]

Does the code run in Outlook? Then don't use any of the methods; there's
already an Application object, which you should use.

Both methods are only used if you want to access an application from
outside. For instance, from Outlook you could use CreateObject to start a
new instance of Excel, or use GetObject to access a running instance of
Excel.

--
Best regards
Michael Bauer - MVP Outlook
Manage and share your categories:
<http://www.vboffice.net/product.html?pub=6&lang=en>


Am Fri, 19 Feb 2010 18:05:01 -0800 schrieb Salad:
 
S

Salad

Michael Bauer [MVP - Outlook] wrote:

Does the code run in Outlook? Then don't use any of the methods; there's
already an Application object, which you should use.

Both methods are only used if you want to access an application from
outside. For instance, from Outlook you could use CreateObject to start a
new instance of Excel, or use GetObject to access a running instance of
Excel.
Hi Michael, Thanks for your response.

I was excited with your response when you mentioned the Application
object but got crushed when you mentioned that GetObject/CreateObject
were used from an external app. And that's the case...I am running it
from Access 2003 and setting the object for Outlook 2003. I should have
mentioned that in the original post.

Currently, the code runs fine as long as i use GetObject and Outlook is
open. CreateObject() fails with the (8007007e) error and if Outlook is
closed an error 429 (ActiveX can't create object).

My reference list contains the Microsoft Outlook 11 Object Library
C:\Program Files\Office2003\OFFICE11\msoutl.olb. I doubt if it makes a
difference but Outlook is not my default email reader.

Do you have any other suggestions?
 
M

Michael Bauer [MVP - Outlook]

First, use GetObject to see whether Outlook runs already. You need to catch
the error for the case that Outlook doesn't run. If it doesn't try this
instead of CreateObject:

Dim obj as Object
Set obj=New Outlook.Application

Does that work?

--
Best regards
Michael Bauer - MVP Outlook
Manage and share your categories:
<http://www.vboffice.net/product.html?pub=6&lang=en>


Am Sat, 20 Feb 2010 08:37:56 -0800 schrieb Salad:
Michael Bauer [MVP - Outlook] wrote:

Does the code run in Outlook? Then don't use any of the methods; there's
already an Application object, which you should use.

Both methods are only used if you want to access an application from
outside. For instance, from Outlook you could use CreateObject to start a
new instance of Excel, or use GetObject to access a running instance of
Excel.
Hi Michael, Thanks for your response.

I was excited with your response when you mentioned the Application
object but got crushed when you mentioned that GetObject/CreateObject
were used from an external app. And that's the case...I am running it
from Access 2003 and setting the object for Outlook 2003. I should have
mentioned that in the original post.

Currently, the code runs fine as long as i use GetObject and Outlook is
open. CreateObject() fails with the (8007007e) error and if Outlook is
closed an error 429 (ActiveX can't create object).

My reference list contains the Microsoft Outlook 11 Object Library
C:\Program Files\Office2003\OFFICE11\msoutl.olb. I doubt if it makes a
difference but Outlook is not my default email reader.

Do you have any other suggestions?
 
S

Salad

Michael said:
First, use GetObject to see whether Outlook runs already. You need to catch
the error for the case that Outlook doesn't run. If it doesn't try this
instead of CreateObject:

Dim obj as Object
Set obj=New Outlook.Application

Does that work?

Hi Michael:

I ran the following code:
Sub TestIt()
Dim obj As Object
Set obj = New Outlook.Application
Set obj = Nothing
End Sub

I am running it from Access. I get an "Automation Error: The specified
module could not be found."

My references are
VBA
Access Object Library
DAO 3.6 Object Library
Outlook Object Library
Ole Automation
ActiveX Data Object 2.1

I deesn't seem so matter if I shuffle the order of the last 3, still get
the above error. Any other suggestions? It appears to be one of those
weird, hard to determine ones.
 
S

Salad

Michael said:
Is anything highlighted when the error occurs?
Yes, if I enter Debug mode, the line
Set obj = New Outlook.Application
is highlighted in the code below.

Sub TestIt1()
Dim obj As Object
Set obj = New Outlook.Application
Set obj = Nothing
End Sub

Running from Outlook, the following fails on CreateObject. From Access,
both fail unless Outlook is open.
Sub test()
Dim olApp As Outlook.Application
'Set olApp = CreateObject("Outlook.Application") 'fails
Set olApp = GetObject(, "Outlook.Application") 'outlook open, OK
Set olApp = Nothing
MsgBox "Done"
End Sub

Who knows. Maybe I hosed Outlook playing around with it. As long as
Outlook is open all is well. If not, CreateObject and GetObject fail.
I can live with that, I simply have to adjust.
 
M

Michael Bauer [MVP - Outlook]

Years ago I've read that a so called script blocker could prevent you from
launching Outlook by code. I don't know any details. If that's not the case,
I've no clue what's going on.

If you can't find the solution, you could do this: Try GetObject, if it
throws an error, you know that OL isn't running. Display a MsgBox then to
ask the user to start Outlook.

--
Best regards
Michael Bauer - MVP Outlook
Manage and share your categories:
<http://www.vboffice.net/product.html?pub=6&lang=en>


Am Tue, 23 Feb 2010 11:17:14 -0800 schrieb Salad:
 
S

Salad

Michael said:
Years ago I've read that a so called script blocker could prevent you from
launching Outlook by code. I don't know any details. If that's not the case,
I've no clue what's going on.

Yeah, it's a weird issue.
If you can't find the solution, you could do this: Try GetObject, if it
throws an error, you know that OL isn't running. Display a MsgBox then to
ask the user to start Outlook.
That's what I do now. Thanks for your input.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top