explorer_close not fired

Status
Not open for further replies.
A

Angus

Hi all

I'm a beginner in VBA outlook programming, so please be patient with me..

I am trying to run some code when outlook closes. My code need to access

some outlook inferface objects (menubar, buttons etc).

As far as I understand, if I put the code in the application_quit sub I

obtain an error, as my object variables are out of scope. So, I declared an

explorer object and I am trying to handle it with the explorer_close sub.

But the explorer.close event is not fired: why? It seems to me that the

myExplorer object is already set to nothing, and so the event cannot be

fired? I suppose so because if I open another explorer window and then close

the first one, the messagebox function DOES work!

Here's the code, all from the ThisOutlookSession module:

----------Dim WithEvents myExplorer As Outlook.Explorer

Private Sub Application_Quit()

Set myExplorer = Nothing

End Sub

Private Sub Application_Startup()

Set myExplorer = Application.Explorers.Item(1)

End Sub

Private Sub myExplorer_Close()

MsgBox "Closing..."

End Sub

-------------If I open and then close outlook, nothing happens

If I open outlook, right-click a folder and choose "open in another window"

and then close the first outlook window, then the message "Closing..." pops

up, and the first outlook window closes.

Please help me, any suggestion would be really appreciated

Thank you so much

Angus73

---Outlook 2003, XP PRO SP3---
 
S

Sue Mosher [MVP]

What is it that you need to do in Explorer_Close? There may be better ways

to accomplish your actual goals.

Sue Mosher

"Angus" <Angus> wrote in message

news:D02C3EAF-FAB3-4A0A-9513-145101E07EAE@microsoft.com...
> Hi all
> I'm a beginner in VBA outlook programming, so please be patient with me..

> I am trying to run some code when outlook closes. My code need to access
> some outlook inferface objects (menubar, buttons etc).
> As far as I understand, if I put the code in the application_quit sub I
> obtain an error, as my object variables are out of scope. So, I declared
> an
> explorer object and I am trying to handle it with the explorer_close sub.
> But the explorer.close event is not fired: why? It seems to me that the
> myExplorer object is already set to nothing, and so the event cannot be
> fired? I suppose so because if I open another explorer window and then
> close
> the first one, the messagebox function DOES work!

> Here's the code, all from the ThisOutlookSession module:

> ----------------------------------------> Dim WithEvents myExplorer As Outlook.Explorer

> Private Sub Application_Quit()
> Set myExplorer = Nothing
> End Sub

> Private Sub Application_Startup()
> Set myExplorer = Application.Explorers.Item(1)
> End Sub

> Private Sub myExplorer_Close()
> MsgBox "Closing..."
> End Sub
> -------------> If I open and then close outlook, nothing happens
> If I open outlook, right-click a folder and choose "open in another
> window"
> and then close the first outlook window, then the message "Closing..."
> pops
> up, and the first outlook window closes.

> Please help me, any suggestion would be really appreciated
> Thank you so much
> Angus73

> ---Outlook 2003, XP PRO SP3---
 
A

Angus

Hi Sue, thanks for your reply

I would need to execute a menu command: my final goal would be to

automatically delete IMAP messages marked for deletion when outlook closes.

Here's the actual code I tried to put in explorer_close (for better reading,

in my first post I replaced it with the msgbox):

-----------------------Dim myBars As CommandBars

Dim myMenuBar As CommandBar

Dim myEditMenu As CommandBarControl

Set myBars = myExplorer.CommandBars

Set myMenuBar = myBars(4)

Set myEditMenu = myMenuBar.Controls(2)

If myEditMenu.Controls(11).Caption = "Rimuo&vi messaggi eliminati" Then

'"remove items marked for deletion"

myEditMenu.Controls(11).Execute

Else

MsgBox "mA cHE sTRANO!!" ' Error message (the menu is not the one I

intended to use)

End If

Set myBars = Nothing

Set myMenuBar = Nothing

Set myEditMenu = Nothing

-----------------------Thank you very much for your help!

Andrea

"Sue Mosher [MVP]" wrote:


> What is it that you need to do in Explorer_Close? There may be better ways
> to accomplish your actual goals.

> > Sue Mosher
> > >

> "Angus" <Angus> wrote in message
> news:D02C3EAF-FAB3-4A0A-9513-145101E07EAE@microsoft.com...
> > Hi all
> > I'm a beginner in VBA outlook programming, so please be patient with me..
> > I am trying to run some code when outlook closes. My code need to access
> > some outlook inferface objects (menubar, buttons etc).
> > As far as I understand, if I put the code in the application_quit sub I
> > obtain an error, as my object variables are out of scope. So, I declared
> > an
> > explorer object and I am trying to handle it with the explorer_close sub.
> > But the explorer.close event is not fired: why? It seems to me that the
> > myExplorer object is already set to nothing, and so the event cannot be
> > fired? I suppose so because if I open another explorer window and then
> > close
> > the first one, the messagebox function DOES work!
> > Here's the code, all from the ThisOutlookSession module:
> > ----------------------------------------> > Dim WithEvents myExplorer As Outlook.Explorer
> > Private Sub Application_Quit()
> > Set myExplorer = Nothing
> > End Sub
> > Private Sub Application_Startup()
> > Set myExplorer = Application.Explorers.Item(1)
> > End Sub
> > Private Sub myExplorer_Close()
> > MsgBox "Closing..."
> > End Sub
> > -------------------------------------------> > If I open and then close outlook, nothing happens
> > If I open outlook, right-click a folder and choose "open in another
> > window"
> > and then close the first outlook window, then the message "Closing..."
> > pops
> > up, and the first outlook window closes.
> > Please help me, any suggestion would be really appreciated
> > Thank you so much
> > Angus73
> > ---Outlook 2003, XP PRO SP3---


>
 
Status
Not open for further replies.
Top