CAUSE
This problem can occur when all of the following conditions are true:
- You use the GetObject function to automate Word from another program.
- You are using Microsoft Word to edit e-mail messages (in Microsoft Outlook 2000, on the Tools menu, click Options and then click the Mail Format tab).
- There is an e-mail message open for editing.
The
GetObject function allows you to retrieve the current or running
instance of Word. However, because using Word to edit e-mail messages uses a hidden or non-visible instance of Word,
GetObject may return the WordMail instance. There is no way to control which instance of Word is returned.
For example, the following Visual Basic for Applications code sample may
cause the following error message:
Run-time error '4605': "The Open method or property is not available
if the current selection is within a WordMail message instead of the Word
main document window:
Dim wdObj As Word.Application
Set wdObj = GetObject(, "word.application")
wdObj.Documents.Open "c:\my documents\doc1.doc"
RESOLUTION
Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
To determine whether the focus is in a WordMail message, use the
Selection.Information property together with the
FocusInMailHeader property to determine whether a WordMail instance or a Word instance has the focus.
FocusInMailHeader Property
The
FocusInMailHeader property returns
True if the insertion point is in a WordMail header field (the
To field, for example).
Selection.Information Property
Use the
Selection.Information property to return information about the specified or current selection.
The syntax of the
Selection.Information property is
Selection.Information(Type)
where Type is a constant specifying the information to return.
Use wdInWordMail as the Type constant to return a value that indicates the
WordMail location of the selection, as shown in the following table:
Value WordMail Location
-----------------------------
0(zero) The selection or range isn't in a WordMail message.
1 The selection or range is in a WordMail send note.
2 The selection or range is in a WordMail read note.
Example
The following sample code demonstrates how to use these properties to
determine whether WordMail or Word has the current focus:
Sub CheckForWordMail()
Dim wdObj As Word.Application
Dim boolWordMail As Boolean
' Initialize values.
boolWordMail = False
' If Word is running or a WordMail e-mail
' message is open, use GetObject. If Word
' or WordMail is not running, an error will occur.
On Error Resume Next
Set wdObj = GetObject(, "word.application")
If Err.Number = 0 Then
' If no error has occurred, call isWordMail Function
' to see if Word instance is Word or WordMail.
boolWordMail = isWordMail(wdObj)
Else
' If an error has occurred, create
' new instance of Word.
Set wdObj = CreateObject("word.application")
wdObj.Documents.Add
End If
If boolWordMail Then
' <Code to use for WordMail Instance>, for example:
MsgBox "Focus in WordMail."
Else
' <Code to use for Word Instance>, for example:
MsgBox "Focus in Word."
End If
' Free the object variable in memory.
Set wdObj = Nothing
End Sub
Function isWordMail(oWord As Word.Application) As Boolean
' Is focus in a WordMail Header (To, CC or Subject line)?
If oWord.Application.FocusInMailHeader Then
isWordMail = True
Exit Function
End If
' If not in WordMail Header, is focus in
' the body of a WordMail message?
If oWord.Selection.Information(wdInWordMail) Then
isWordMail = True
End If
End Function
For more information about Information property, in the Visual Basic Editor, click
Microsoft Visual Basic Help on the
Help menu, type
Information property in the Office Assistant or the Answer Wizard, and then click
Search to view the topic.
For more information about FocusInMailHeader property, in the Visual Basic Editor, click
Microsoft Visual Basic Help on the
Help menu, type
FocusInMailHeader property in the Office Assistant or the Answer Wizard, and then click
Search to view the topic.
For more information about GetObject Function, in the Visual Basic Editor, click
Microsoft Visual Basic Help on the
Help menu, type
GetObject Function in the Office Assistant or the Answer Wizard, and then click
Search to view the topic.
REFERENCES
For additional information about using automation with Word, click the article number below
to view the article in the Microsoft Knowledge Base:
237337 OFF2000: How to Use (OLE) Automation with Word
For more information about how to use the sample code in this article, click
the article number below to view the article in the Microsoft Knowledge
Base:
212536
OFF2000: How to Run Sample Code from Knowledge Base Articles