Macro works in Word 2007, but not in Outlook 2007

G

Guest

For years I used a macro in Outlook Xp which I recorded in Word XP. I think
it had something to do with th fact that in that program Word was my email
editor.
The same macro now works in Word 2007 as it should, but when I try to run it
in Outlook 2007 I get a "Runtime error 424. Object required" error warning.
I have never written a macro, I merely recorded the last one, so please be
gently with me in your reply :)

Regards; Les
 
G

Guest

Hi Michael,
thank you for your reply. It highlights the line:
"Selection.Find.ClearFormatting" and then "With Selection.Find"
As I mentioned, it works perfectly fine in Word.
I hope this is what you mean by showing the code:

Sub Magyar()
'
' Magyar Macro
' Macro recorded 29/09/00 by LGaram
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "aa"
.Replacement.Text = "á"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "ee"
.Replacement.Text = "é"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "ii"
.Replacement.Text = "í"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "oo"
.Replacement.Text = "ó"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "uu"
.Replacement.Text = "ú"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "o:"
.Replacement.Text = "ö"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "u:"
.Replacement.Text = "ü"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "o"""
.Replacement.Text = "ô"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "u"""
.Replacement.Text = "û"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
 
M

Michael Bauer [MVP - Outlook]

Yes, that's what I meant. For sure, that code never ran in Outlook :)

You might try the following: Add a reference to Word's object library, in
Outlook via Tools/References. Then replace "Selection" by wdSelection and
insert a few lines at the beginning:

Dim wdSelection As Word.Selection
Dim wdDoc as Word.Document

Set wdDoc=Application.ActiveInspector.CurrentItem.WordEditor
Set wdSelection=wdDoc.ActiveWindow.Selection

That should give you the selection of the currently opened e-mail.

--
Viele Gruesse / Best regards
Michael Bauer - MVP Outlook
Keep your Outlook categories organized!
http://www.shareit.com/product.html?productid=300120654&languageid=1
(German: http://www.VBOffice.net/product.html?pub=6)

Am Fri, 2 Mar 2007 02:48:25 -0800 schrieb LesG:
 
G

Guest

Hi Michael

thanx for the tips. I found the Word's object library reference OK. But i
have trouble with the rest; this is what I did and now i get a "Run time
error 438. Object doesn't support this property or method". Anyway, this is
the first part of the macro:
(and thank you for your patience with me :)

Sub Magyar()
'
' Magyar Macro
' Macro recorded 29/09/00 by LGaram
'
Dim wdSelection As Word.Selection
Dim wdDoc As Word.Document

Set wdDoc = Application.ActiveInspector.CurrentItem.WordEditor
Set wdSelection = wdDoc.ActiveWindow.Selection

wdSelection.Find.ClearFormatting
wdSelection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "aa"
.Replacement.Text = "á"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
 
H

Howard Kaikow

With wdSelection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "aa"
.Replacement.Text = "á"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
End With
 
G

Guest

It doesn't highlight anything this time. It just gives the error.
This is becoming really difficult, because i have NO idea what am i doing.
I just simply do not understand the reason behind having a previous version
of Outlook running a macro from Word perfectly well, but a supposedly
"superior" package is not capable to do so, without major changes. That is a
major step - backwards.
And as I mentioned, the very same macro runs in Word perfectly.
 
G

Guest

Thanks Howard!
You were a great help providing the code as I have no experience with macro
code, I only used a "recorder" to create the one in question.
I copied the code you wrote, replacing the original, but I get a Run-time
error '438'
Regards; Les
 
M

Michael Bauer [MVP - Outlook]

Les, as mentioned, the code never ran in Outlook. The code was recorded
within Word and only Word knows what to do with it.

One error I see now, which I made myself:
Set wdDoc = Application.ActiveInspector.CurrentItem.WordEditor

must be:
Set wdDoc = Application.ActiveInspector.WordEditor

If it still doesn't work, you can go through the code step by step: Select
the first line (Sub Magyar) and press f9 for a breakpoint. Start the
procedure, then it stops at that breakpoint. Now press f8 for the next step
and so on. Watch, what line causes an error.

--
Viele Gruesse / Best regards
Michael Bauer - MVP Outlook
Keep your Outlook categories organized!
http://www.shareit.com/product.html?productid=300120654&languageid=1
(German: http://www.VBOffice.net/product.html?pub=6)


Am Sat, 3 Mar 2007 16:18:00 -0800 schrieb LesG:
 
G

Guest

Michael, I copied the corrected line and now that line gives a RT error 91:
Object variable or With block variable not set. I am thinking that i just
write my accented letters in Word and send them from there. Much easier, as I
have no idea what am I writing these codes. Thankx for your help and time.

Regards; Les
 
G

Guest

Thanks Michael, I just briefly describe what this macro used to do; when i
wrote a hungarian letter on my aussie(US) keyboard I didn't have any accents
on the letters. So, as you can see it from the macro code, when I typed a
double aa or a double ee and hit the icon i placed on my toolbar (i did not
assign a keyboard shortcut) it changed all these aa's and oo's to á and ó'.
Of course there were others, like, ü, etc. It was fast and very convenient.
I am willing to pay you an pre-agreed amount if you make this macro work
like it used to. Please contact me on (e-mail address removed) if you're
interested in doing this.
Regards; Les
 
H

Howard Kaikow

LesG said:
Thanks Howard!
You were a great help providing the code as I have no experience with macro
code, I only used a "recorder" to create the one in question.
I copied the code you wrote, replacing the original, but I get a Run-time
error '438'

See http://www.standards.com/index.html?MacroRecording.
Take a look at http://www.slipstick.com/books/jumpstart.htm/

For further help, you would need to post your ENTIRE macro, and specify the
line to which the error message refers, and the exact wording of the
message.

Then you have to hope that somebody can take the time to figure it out.
 

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