Sub test_add_teml()
ActiveDocument.AttachedTemplate = "c:\Users\Fil\AppData\Roaming\Microsoft\Шаблоны\Kraft.dot"
Call Kraft.MyWork.Start001 [COLOR="DarkRed"]'пишет object required[/COLOR]
End Sub
Как вызвать процедуру из друго модуля?
Есть шаблон с именем Kraft.dot, в нем сидит модуль myWork, а в нем процедура Start001. Пробую запустить ее так:
Код:
Код:
Application.Run Macro:="Лист1.GetDocuments" 'Run "Лист1.GetDocuments"
Если же существует вероятность изменения кодового(программного) имени рабочего листа (хотя, как правило, меняют просто имя), то :
Код:
Application.Run Macro:=Worksheets("Имя_рабочего_листа").CodeName & ".GetDocuments"
Run Worksheets(Индекс_рабочего_листа).CodeName & ".GetDocuments"
Run Worksheets(Индекс_рабочего_листа).CodeName & ".GetDocuments"
Обратите внимание на то, что в данном случае, процедура GetDocuments может быть личной, т.е. Private Sub GetDocuments()
Собственно метод Run наличествует и в MS Word, и если процедура Start001 общая, т.е. Sub Start001() = Public Sub Start001(), то :
Код:
ActiveDocument.AttachedTemplate = "C:\Users\Fil\AppData\Roaming\Microsoft\Шаблоны\Kraft.dot"
Application.Run MacroName:="Start001"
Application.Run "MyWork.Start001"
Application.Run MacroName:="Start001"
Application.Run "MyWork.Start001"
P.S. Возвращаясь к первому вопросу, использование инструкции Call не носит обязательного характера, поэтому Call Лист1.GetDocuments можно заменить на Лист1.GetDocuments
А проблема в том, что надо запустить макрос-процедуру не просто из другого модуля, а еще и из другого проекта, который подключается командой
ActiveDocument.AttachedTemplate = "C:\Users\Fil\AppData\Roaming\Microsoft\Шаблоны\Kraft.dot"
Изначально идея была разнести по разным проектам разные не связанные модули. А то размер Normal.dot/Project оч. большой получается. А в работе в конкретный момент используется только один модуль.
И вот при попытке запуска пишется, что [COLOR="DarkRed"]object required[/COLOR].
Т.е. можно ли в путь к процедуре подписатьне только модуль, но и проект. Вроде был какой-то вариант с восклицательным знаком в строке сложного пути?
P.S. Если очень хочется найти вариант с указанием полного пути, то для начала можно прочитать справку, касательно уже неоднократно упомянутого метода Run.
Да и в Help, действительно, все про путь написано (я мог бы и сразу посмотреть).
Большое спасибо за подсказку.
Добиться пошаговой отладки процедуры, вызываемой с помощью метода Run, довольно легко, для этого достаточно всего лишь поместить в начало вызываемой процедуры инструкцию Stop. Естественно, после отладки, эту инструкцию нужно удалить/закомментировать.