2014-09-26 3 views
3

Я следующие два Sub, определенный в моем Слово Addin (.dotm), который я поставил в каталог StartUpПередача аргумента с Application.Run в слове VBA

Public Sub SayHi1() 
    MsgBox "Hi......." 
End Sub 

Public Sub SayHi2(ByVal n As String) 
    MsgBox "Hi " & n 
End Sub 

Тогда из нового документа, я могу называть 1-Sub без аргумента, как показано ниже:

Sub AppRun_AddIn_NoArg() 
    Application.Run "MyProject.Module1.SayHi1" 
End Sub 

Но когда я пытаюсь запустить 2-ой Sub с аргументом я получаю ошибку о том, «Объект не поддерживает это свойство или метод»

Sub AppRun_AddIn_WithArg() 
    Application.Run "MyProject.Module1.SayHi2", "Tejas" 
End Sub 

Сообщение об ошибке: enter image description here

+3

По какой-то причине он работает, если вы удаляете бит MyProject, но тогда, возможно, вы можете вызвать неправильный макрос. По-видимому, это имеет какое-то отношение к [«Если вы укажете имя документа, ваш код может запускать макросы только в документах, связанных с текущим контекстом, а не только с любым макросом в любом документе»] (http://msdn.microsoft.com/ ан-нас/библиотека/офис/ff838935.aspx). – GSerg

+0

Есть ли причина, по которой вы не используете Call? –

+0

@GSerg Yeah, Без имени проекта и имени модуля он работал. – Tejas

ответ

2

Это, как представляется, давняя проблема с Word.

Как KB190235 suggests:

Причина:
Вы включили имя шаблона в качестве части аргумента строки имя_макроса.

Разрешение:
Удалить имя шаблона из аргумента имя_макроса.

Обход:
Чтобы избежать конфликтов имен среди упомянутых проектов, дают ваши процедуры уникальные имена, так что вы можете вызвать процедуру без указания проекта или модуля.

+0

Это сработало. Благодаря! – Tejas

Смежные вопросы