WD2000: Run Time Error 4366 Using Application.Run Command (198840)
The information in this article applies to:
This article was previously published under Q198840 SYMPTOMS
When you run a Visual Basic For Applications macro containing the
"Application.Run Macroname:=" command in Microsoft Word or in another
Office program to automate Word, the following error
message may appear:
Run Time error '4366' : Unable to run the specified macro.
CAUSE
You have included a template name as part of the Macroname argument string.
WORKAROUND
To avoid naming conflicts among referenced projects, give your procedures
unique names, so that you can call a procedure without specifying a project
or module.
RESOLUTION
Remove the template name from the Macroname argument.
STATUSMicrosoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. MORE INFORMATIONMicrosoft 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.
In the online help, the Run method states that you can use the template name
in the Macroname argument string, and then it shows the following examples
as valid statements:
Application.Run "Normal.Module1.MAIN"
Application.Run "MyProject.MyModule.MyProcedure"
Application.Run "'My Document.doc'!ThisModule.ThisProcedure"
Visual Basic for Applications assigns names to macros in the following
order:
project.module.procedure.
When Visual Basic for Applications accesses the Microsoft Word Object
model, a project can be either a template or document with stored
procedures. In Visual Basic for Applications, the Word projects are named
in the following manner:
Normal | all modules stored in the Normal.dot | TemplateProject | all modules stored in the first file in the Startup folder (if more than one template is in the Startup folder, Word uses the one that was copied to the folder first and not the alphabetical listing order) | Project | additional startup templates, the template the open file is based on, or an open saved document with a module. |
The following illustration describes how Visual Basic for Applications
handles Microsoft Word macros of the same name or macros and modules of the
same name in different template and document projects that are active.
In Microsoft Word, if you open a document named MyDoc.doc that is based on
the template MyTemp.dot, both documents have a module called "Newmacros"
and a macro called "MyMacro." At Startup, a template called "MyStart.dot"
loads with the "Normal.dot" global template. Both of these templates have a
module called "Newmacros", and there is a macro called "MyMacro" in the
module.
With the three templates and one document active in Microsoft Word, when
the Macro dialog box appears, you see the following lines of code:
Normal.NewMacros.Mymacro
Project.NewMacros.Mymacro
Project1.NewMacros.Mymacro
TemplateProject.NewMacros.Mymacro
Open the Visual Basic Editor by pressing ALT+F11. Then, press CTRL+R to
view the following in Project Explorer:
Normal(Normal)
Project(MyTemp)
Project(MyDoc)
TemplateProject(MyStart)
If you want to run the macro in MyStart.dot, write your code as follows:
Application.Run "TemplateProject.NewMacro.macro1"
- or -
Normal.NewMacros.Mymacro = Normal.dot
Project.NewMacros.Mymacro = MyTemp.dot
Project1.NewMacros.Mymacro = MyDoc.doc
Modification Type: | Major | Last Reviewed: | 6/17/2005 |
---|
Keywords: | kbbug kbmacroexample kbnofix KB198840 |
---|
|