RE: How to save message before the spelling start ?
From: Eric Legault [MVP - Outlook] (elegaultZZZ_at_REMOVEZZZmvps.org)
Date: 03/08/05
- Next message: Sue Mosher [MVP-Outlook]: "Re: Outlook Macro"
- Previous message: Eric Legault [MVP - Outlook]: "RE: How to save message before the spelling start ?"
- In reply to: Bragu: "RE: How to save message before the spelling start ?"
- Next in thread: Bragu: "RE: How to save message before the spelling start ?"
- Reply: Bragu: "RE: How to save message before the spelling start ?"
- Messages sorted by: [ date ] [ thread ]
Date: Tue, 8 Mar 2005 07:49:18 -0800
1) You don't need to define a variable set to the Outlook.Application object
in VBA code; you can use the intrinsic Application object without a new
variable required, and you don't need to instantiate it.
2) This will fail if the current Inspector is not a MailItem, as objItem is
declared as a MailItem object:
Set objItem = objInspector.CurrentItem
If objItem.Class = olMail And _...
Check objInspector.CurrentItem.Class before setting your objItem variable.
3) I don't know what is happening with your ctrl object. Where are you
calling that procedure? During the Item_Send event?
--
Eric Legault - B.A, MCP, MCSD, Outlook MVP
--------------------------------------------------
{Private e-mails ignored}
Job: http://www.imaginets.com
Blog: http://blogs.officezealot.com/legault/
"Bragu" wrote:
> Hi,
>
> I tried also this way (see code) but I get the Automation Error.
> What I can do to skip this error ? I have already certificate my macro and
> setted the certificate as trusted.
>
>
> Sub mySend()
> Dim objApp As Outlook.Application
> Dim objInspector As Outlook.Inspector
> Dim objItem As MailItem
> Dim strRecipName As String
> Dim flgErr As Integer
> Dim ctrl As CommandBarControl
>
> flgErr = 0
> On Error GoTo errHandler
> Set objApp = CreateObject("Outlook.Application")
> Set objInspector = objApp.ActiveInspector
> If Not TypeName(objInspector) = "Nothing" Then
> Set objItem = objInspector.CurrentItem
> If objItem.Class = olMail And _
> objItem.Sent = False Then
> objItem.Save
> 'send ==== the next line return an automation Error !!!!
> Set ctrl = Application.ActiveInspector.CommandBars.FindControl(,
> 2617)
> ctrl.Execute
> End If
> End If
> Set objItem = Nothing
> Set objInspector = Nothing
> Set objApp = Nothing
> Exit Sub
> errHandler:
> Select Case flgErr
> Case 1:
> MsgBox "Il messaggio è stato salvato ma non è stato possibile
> eseguire il controllo ortografico", vbInformation, "Check Mail"
> Case 287:
> MsgBox "Mail non spedito come da vostra scelta.", vbInformation,
> "Check Mail"
> Case Else
> MsgBox "Errore : " & "(" & Err.Number & ")" & vbCrLf &
> Err.Description, vbCritical, "Errore nel controllo/invio mail"
> End Select
>
> End Sub
>
>
>
>
> "Bragu" wrote:
>
> > Hi Eric,
> >
> > I had already tryed what you suggest: trap the send event, but this event
> > is rised after the spellchecking has runned so for me it's to late --> maybe
> > the outlook as already crashed.
> >
> > As you say I could repaire my office installation but the problem exist on >
> > 100 PC of my Company so if I found a workround will be better.
> >
> > Do you know if there is a way to Know the answer a the spellcheker question:
> > "The spelling check was stopped before it finished. Do you want to send
> > anyay?" when you stop the spell check?
> > If I can trap this I resolve my problem using the code I posted and modifing
> > the function:
> >
> > Function CheckSpelling()
> > ' SpellChecker ID = 2
> >
> > Dim ctrl As CommandBarControl
> > ' Set cbrMenuBar = Application.ActiveInspector.CommandBars '("Standard")
> > ' cbrMenuBar.FindControl(, 2).Execute
> > Set ctrl = Application.ActiveInspector.CommandBars.FindControl(, 2)
> > If ctrl.Enabled Then
> > ctrl.Execute '==== How trap the spelling cancel button ?
> > End If
> > End Function
> >
> >
> > "Eric Legault [MVP - Outlook]" wrote:
> >
> > > Outlook provides no hooks into the spell checking event.
> > >
> > > If you want to ensure that messages are saved before sending, one way to do
> > > this without code is to turn on the AutoSave option in Advanced E-mail
> > > Options.
> > >
> > > BTW, the Send event is firing after the spell check is run because the user
> > > has clicked Send, which runs spell check first if it is turned on.
> > >
> > > If you must use code, simply trap the Send event for all new e-mails and
> > > call the Item.Save event. See this article on how to hook into this:
> > >
> > > Getting a Handle on Your E-mails with VBA:
> > > http://blogs.officezealot.com/legault/articles/2224.aspx
> > >
> > > If Outlook is crashing with no code running because of the spell check, you
> > > might want to try running Detect and Repair in Office Setup.
> > >
> > > --
> > > Eric Legault - B.A, MCP, MCSD, Outlook MVP
> > > --------------------------------------------------
> > > {Private e-mails ignored}
> > > Job: http://www.imaginets.com
> > > Blog: http://blogs.officezealot.com/legault/
> > >
> > > "Bragu" wrote:
> > >
> > > > We have a problem: if we have setted the option to spell the mail before
> > > > sending the outlook, sometimes, crash and we lose the mail.
> > > >
> > > > I want to write a macro that save the mail before sending, so if the
> > > > application crash we don't lose the mail.
> > > > But the event send of MailItem is rised after the spelling it's runned.
> > > > Is there any way to save it before the spelling start ?
> > > >
> > > > I wrote a macro (copy from explamples on internet) that work we commandbars
> > > > button (see Sub SaveSpellSend attached ) but it's not a nice way because if
> > > > somebody stop the spell checking the mail will be sended anyway.
> > > >
> > > > Thank's for any help ... and sorry for my english
> > > >
> > > > ps: Our system are w2k/ xp with office 2000 SR1 multilanguage pack with all
> > > > the last fix installed.
> > > >
> > > >
> > > >
> > > >
> > > > Sub SaveSpellSend()
> > > > Dim objApp As Outlook.Application
> > > > Dim objInspector As Outlook.Inspector
> > > > Dim objItem As MailItem
> > > > Dim strRecipName As String
> > > > Dim flgErr As Integer
> > > >
> > > > flgErr = 0
> > > > On Error GoTo errHandler
> > > > Set objApp = CreateObject("Outlook.Application")
> > > > Set objInspector = objApp.ActiveInspector
> > > > If Not TypeName(objInspector) = "Nothing" Then
> > > > Set objItem = objInspector.CurrentItem
> > > > If objItem.Class = olMail And _
> > > > objItem.Sent = False Then
> > > > objItem.Save
> > > > flgErr = 1
> > > > If CheckSpelling Then
> > > > objItem.Send
> > > > Else
> > > > MsgBox "Per poter eseguire il controllo ortografico il cursore
> > > > deve trovarsi nel body", vbExclamation
> > > > End If
> > > > End If
> > > > End If
> > > > Set objItem = Nothing
> > > > Set objInspector = Nothing
> > > > Set objApp = Nothing
> > > > Exit Sub
> > > > errHandler:
> > > > Select Case flgErr
> > > > Case 1:
> > > > MsgBox "Il messaggio è stato salvato ma non è stato possibile
> > > > eseguire il controllo ortografico", vbInformation, "Check Mail"
> > > > Case 287:
> > > > MsgBox "Mail non spedito come da vostra scelta.", vbInformation,
> > > > "Check Mail"
> > > > Case Else
> > > > MsgBox "Errore : " & "(" & Err.Number & ")" & vbCrLf &
> > > > Err.Description, vbCritical, "Errore nel controllo/invio mail"
> > > > End Select
> > > >
> > > > End Sub
> > > >
> > > >
> > > >
> > > >
> > > >
- Next message: Sue Mosher [MVP-Outlook]: "Re: Outlook Macro"
- Previous message: Eric Legault [MVP - Outlook]: "RE: How to save message before the spelling start ?"
- In reply to: Bragu: "RE: How to save message before the spelling start ?"
- Next in thread: Bragu: "RE: How to save message before the spelling start ?"
- Reply: Bragu: "RE: How to save message before the spelling start ?"
- Messages sorted by: [ date ] [ thread ]