Outlook2003 -> OLE (MAPFolder->Display())

  • Thread starter Friedemann Kunze
  • Start date
F

Friedemann Kunze

Dear Members,
i've the problem with outlook 2003, that it does not terminate correctly if
the user is closing outlook normally.
The reason for this behaviour is, I get the outlook application object with
GetObject("Outlook.Application") and I try to show a specific folder from
outlook like calendar or tasks. After I call the method Folder->Dispplay I
release all used objects. But if then the user is closing outlook normally,
it switches into the windows systray-menue. There it's impossible for the
user to work with outlook - it's not possible to open it. The only way to
close outlook then, is to kill the process over the taskmanager.
I was able to limit the problem: The cause is to show a folder to the user.
Instead of using the method "Display",I've tried to use "Activate". But here
is the same problem as above.

Following, you can take a look at my sample script with which the
problem can
be reproduced:
Option Explicit
Dim oOutlook
On Error Resume Next
Set oOutlook = GetObject(,"Outlook.Application")
If (Err.Number <> 0) Then
Set oOutlook = Nothing
WScript.Quit
End If
On Error GoTo 0
Dim oNameSpace
Set oNameSpace = oOutlook.GetNameSpace("MAPI")
Dim oFolder
Set oFolder = oNameSpace.GetDefaultFolder(9)
oFolder.Display
Set oFolder = Nothing
Set oNameSpace = Nothing
Set oOutlook = Nothing

I thank you for your help.

Additional information:
The problem is not reprocueable with outlook 2002 and sample script above.
 
K

Ken Slovak - [MVP - Outlook]

Does it work better if you use MAPIFolder.GetExplorer to get an Explorer
object and use the Display method of the Explorer?
 
F

Friedemann Kunze

Ken said:
Does it work better if you use MAPIFolder.GetExplorer to get an Explorer
object and use the Display method of the Explorer?

Sorry, but this also does not work. I've tried it, too.
 
K

Ken Slovak - [MVP - Outlook]

Well, if your code is only running when Outlook has already been started you
could set the folder to the folder for the ActiveExplorer. That won't open
any additional Explorer objects.

Set oOutlook.ActiveExplorer.CurrentFolder = oFolder
 
F

Friedemann Kunze

Ken said:
Well, if your code is only running when Outlook has already been started
you could set the folder to the folder for the ActiveExplorer. That
won't open any additional Explorer objects.

Set oOutlook.ActiveExplorer.CurrentFolder = oFolder


Big thanks to you! It works well.
 

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