When you are using WordMail and you try to automate Word from anotherprogram, you may encounter problems processing some Word commands. Forexample, you may receive Automation errors such as "This method or propertyis not available" or other errors.
This article describes how to check whether WordMail is running when you are usingAutomation to automate Word from another program.
This problem occurs when all of the following conditions are true:
- You use the GetObject function to automate Word from another program.
- You are running WordMail as your e-mail editor.
- There is a current e-mail message open for editing.
function allows you to retrieve the current or runninginstance of Word. However, because WordMail uses a hidden or non-visibleinstance of Word, GetObject
may return the WordMail instance. There is noway to control which instance of Word is returned.
For example, the following Visual Basic for Applications code sample maycause the error
Run-time error '4605': "The Open method or property is not available"
if the current selection is within a WordMail message instead of the Wordmain document window:
Dim wdObj As Word.Application Set wdObj = GetObject(, "word.application") wdObj.Documents.Open "c:\my documents\doc1.doc"
Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals 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 needs.
If you have limited programming experience, you may want to contact a Microsoft Certified Partner or Microsoft Advisory Services. For more information, visit these Microsoft Web sites:
Microsoft Certified Partners - https://partner.microsoft.com/global/30000104
Microsoft Advisory Services - http://support.microsoft.com/gp/advisoryservice
For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS
To determine if the focus is in a WordMail message, use theSelection.Information
property together with the FocusInMailHeader
propertyto determine whether a WordMail instance or a Word instance has the focus.
property returns True if the insertion point is in aWordMail header field (the To field, for example).
Use the Selection.Information
property to return information about thespecified or current selection.
The syntax of the Selection.Information
is a constant specifying the information to return.
as the Type
constant to return a value that indicates theWordMail location of the selection, as shown in the following table:
Value WordMail Location ----------------------------- 0(zero) The selection or range is not 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.
The following sample code demonstrates how to use these properties todetermine 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 = NothingEnd SubFunction 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 IfEnd Function
For more information about the Information
property, in the Visual BasicEditor, click the Office Assistant, type "Information property
, and then click to view "Information Property."
For more information about the FocusInMailHeader
property, in the VisualBasic Editor, click the Office Assistant, type "FocusInMailHeaderproperty
", click Search
, and then click to view "FocusInMailHeaderProperty."
For more information about the GetObject
function, in the VisualBasic Editor, click the Office Assistant, type "GetObject
", click Search
,and then click to view "GetObject function."NOTE
: If the Assistant is hidden, click the Office Assistant button on theStandard toolbar. If the Assistant is not able to answer your query, pleasesee the following article in the Microsoft Knowledge Base:
OFF: Office Assistant Not Answering Visual Basic Questions