RE: How to save message before the spelling start ?

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance

From: Bragu (Bragu_at_discussions.microsoft.com)
Date: 03/09/05


Date: Wed, 9 Mar 2005 02:59:03 -0800

Hi Eric,

thank's for the answer and to show me some error on my code.

My Idea was to add to the tools bar a button executing mySend Macro .
This button will be used instead of the standard Send button.
The Ctrl is pointing to the commandBars button &send, so triing to executing
it ,after have saved the mail, will send the mail (and executing the spell
chek).
But when I exec tha ctrl I get : Automation Error
I think this is a security protection error

Anyway I will do what your suggest: opening incident with MS Product
Support, because the problem is prensent also on PC with o2k sp3
multilanguage pack (vocabulary Italian).

Thank's again

"Eric Legault [MVP - Outlook]" wrote:

> 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
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >


Quantcast