RE: How to handle the exception that user quite the Outlook while
- From: "Eric Legault [MVP - Outlook]" <elegaultZZZ@xxxxxxxxxxxxxxxxx>
- Date: Thu, 2 Jun 2005 09:52:21 -0700
If you have a handle to an e-mail item that you've hooked into from your VBA
project (or another Office app, or VB6, etc.), then you can control some
things that the user does with events. In your case, you can trap the
Item_Close event and *cancel* it if you can introduce some logic (e.g. Excel
file not in desired state) that tells you whether it is safe to close or not.
However, you cannot cancel the Application_Quit event (fired when Outlook
closes), which is actually quite useless. You also cannot cancel the Close
event with VBScript if you are using a custom form.
If you want more info on hooking into e-mail items, see my article about
this on my blog:
Getting a Handle on Your E-mails with VBA:
http://blogs.officezealot.com/legault/articles/2224.aspx
--
Try Picture Attachments Wizard for Outlook!
http://tinyurl.com/9bby8
--
Eric Legault - B.A, MCP, MCSD, Outlook MVP
Job: http://www.imaginets.com
Blog: http://blogs.officezealot.com/legault/
"VBA question" wrote:
> Hi Eric,
> I am sure Outlook does not wait for a macro to complete before shutdown
> since I did the test. Is there any way to prevent the shutdown appropriately
> by users? For example, like the way when users try to close a Excel file. If
> the file is not saved, it will provide the user second chance to decide
> whether close it with or without saving.
>
> I appreciate your time a lot.
>
> Regards
> Shu
>
> “Eric Legault [MVP - Outlook]”编写:
>
> > Your users *shouldn't* be able to shut down Outlook while your code is
> > running, unless it is a very lengthy operation. However, I'm not quite sure
> > if Outlook will wait for a macro or Add-In to complete before completing it's
> > shut down process. And regardless of the application or solution, there's
> > not much a developer can do to handle OS or hardware failure.
> >
> > If running your Excel automation code via user intervention (clicking a
> > button) is not what you'd like, think about when a user may be doing
> > something that makes sense for this code to execute, like opening an e-mail
> > (Item_Open), saving (Item_Save) or sending (Item_Send). These and other
> > events could be handy hooks to launch your custom process.
> >
> > --
> > Try Picture Attachments Wizard for Outlook!
> > http://tinyurl.com/9bby8
> > --
> > Eric Legault - B.A, MCP, MCSD, Outlook MVP
> > Job: http://www.imaginets.com
> > Blog: http://blogs.officezealot.com/legault/
> >
> >
> > "VBA question" wrote:
> >
> > > Hi Eric,
> > > The operations I want to automate are:
> > > 1. Save an Exel attachment of a mail item.
> > > 2. Read an Exel database file to get the current largest reference number,
> > > plus one as the reference number of the mail.
> > > 3. Save the new reference number to the Excel database file.
> > > 4. Set the UserProperty of the mail as "read".
> > > 5. Sent back a confirmation letter with the reference number.
> > >
> > > If my program stopped at operation 3, then next time the program start
> > > again, the same mail item is read again and set another new reference number,
> > > which is a disaster for the application.
> > >
> > > My old design is using a timer to run those operations automatically, but
> > > ignoring the case that the user can close the Outlook and stop the program at
> > > any time. If I add an command button to let user click then run the program
> > > as you suggested, then such exception become much less.
> > >
> > > However, the solution still does not prevent the problem completely. In the
> > > case of the computer is shut down for some other reason like hardware
> > > problem, such exception still could happen.
> > >
> > > Do you have any other good ideas?
> > >
> > > Thanks very much.
> > > Shu
> > >
> > > “Eric Legault [MVP - Outlook]”
> > > > What is it exactly that you are automating?
> > > >
> > > > --
> > > > Eric Legault - B.A, MCP, MCSD, Outlook MVP
> > > > --
> > > > Try Picture Attachments Wizard for Outlook!
> > > > http://tinyurl.com/9bby8
> > > > --
> > > > Job: http://www.imaginets.com
> > > > Blog: http://blogs.officezealot.com/legault/
> > > >
> > > >
> > > > "VBA question" wrote:
> > > >
> > > > > Hi Eric,
> > > > > Thanks very much for the suggestions. I wanted to completely automate the
> > > > > operations, but it seems this is impossible on the client side.
> > > > >
> > > > > Thanks again and regards,
> > > > > Shu
> > > > >
> > > > > Eric Legault [MVP - Outlook]"
> > > > >
> > > > > > No, Outlook doesn't support a transactional data model.
> > > > > >
> > > > > > I would redesign your solution so that your custom operations are linked to
> > > > > > any of the events exposed by the Object Model. This approach is user-driven,
> > > > > > and would be more stable than having your application doing whatever it wants
> > > > > > without knowing what the user could be doing at any given time, which is a
> > > > > > recipe for disaster.
> > > > > >
> > > > > > --
> > > > > > Eric Legault - B.A, MCP, MCSD, Outlook MVP
> > > > > > --
> > > > > > Try Picture Attachments Wizard for Outlook!
> > > > > > http://tinyurl.com/9bby8
> > > > > > --
> > > > > > Job: http://www.imaginets.com
> > > > > > Blog: http://blogs.officezealot.com/legault/
> > > > > >
> > > > > >
> > > > > > "VBA question" wrote:
> > > > > >
> > > > > > > Hi Experts,
> > > > > > > I screw up on handling the exception that user quite the Outlook while VBA
> > > > > > > is still running. This normally does not happen so I never thought it before.
> > > > > > > But now my program in Outlook is triggered by a timer at a fixed interval,
> > > > > > > its operations are invisible to the outlook user. hence very possible that
> > > > > > > the user close the Outlook when the program is still running the code. This
> > > > > > > would cause the operations uncompleted and causing big trouble. Is there
> > > > > > > something like transatcions in database so I can roll back each operation
> > > > > > > when such exception happens.
> > > > > > >
> > > > > > > Please give me some hints how to solve such problem.I would appreciat your
> > > > > > > help a lot.
> > > > > > >
> > > > > > > Thanks very much and Regards
> > > > > > > Shu
.
- Follow-Ups:
- RE: How to handle the exception that user quite the Outlook while
- From: VBA question
- RE: How to handle the exception that user quite the Outlook while
- References:
- RE: How to handle the exception that user quite the Outlook while
- From: VBA question
- RE: How to handle the exception that user quite the Outlook while
- From: Eric Legault [MVP - Outlook]
- RE: How to handle the exception that user quite the Outlook while
- From: VBA question
- RE: How to handle the exception that user quite the Outlook while
- Prev by Date: Re: Avoid Exchange login dialog
- Next by Date: Re: Restrict method problem
- Previous by thread: RE: How to handle the exception that user quite the Outlook while
- Next by thread: RE: How to handle the exception that user quite the Outlook while
- Index(es):