powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вызвать макрос из VBScript
13 сообщений из 13, страница 1 из 1
Вызвать макрос из VBScript
    #35228963
avk-75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа на VBScript: открывается новый Word’овый документ на основе шаблона . В шаблоне имеется некоторый макрос. Вопрос: можно ли вызвать этот макрос из VBScript?

Set WordApp = CreateObject("Word.Application")
WordApp.Visible = true
WordApp.Activate
Set WordDoc = WordApp.Documents.Add(< имя файла-шаблона >)
[Здесь хочу вызвать макрос из шаблона, на основе которого создан WordDoc]

Спасибо.
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #35231154
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
WordApp.Run("MyModule.MyMacros", "parm1", "param2")
Имя модуля можно опускать.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вызвать макрос из VBScript
    #38338727
Munka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
WordApp.Run("MyModule.MyMacros", "parm1", "param2")



при попытке передачи параметров макросу появляется ошибка:
Недопустимо использование скобок при вызове процедуры Sub

эти варианты тоже не срабатывают.
Код: vbnet
1.
2.
WordApp.Run("MyModule.MyMacros" & "parm1")
WordApp.Run("Call MyModule.MyMacros (parm1)")



как вызвать макрос из vbs с передачей параметров?
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #38338821
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Munka,

То есть, вам run-time прямо пишет, что скобки не нужны и все равно не ясно где ошибка? Ну тогда попробуйте вот так:

Код: vbnet
1.
WordApp.Run "MyModule.MyMacros", "parm1", "param2"
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #38338862
Munka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lbppb,

Объект не поддерживает это свойство или метод
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #38338882
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Munka,

Значит вы неверно указали имя процедуры, количество параметров или их тип.
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #38338964
Munka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lbppb,

фокус заключается в том, что происходит вызов макроса с необязательными параметрами

Код: vbnet
1.
2.
Sub TableAct (Optional strPath)
...
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #38339079
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Munka,

Это не должно ни как влиять. Попробуйте явно указать уровень доступа процедуры и тип переменной:

Код: vbnet
1.
Public Sub TableAct (Optional strPath As String)



И еще, как я понимаю вы путь передаете, иногда проблемы бывают с особыми симоволами, например, пробел.
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #38339092
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле существует проблема подобного вызова макроса с параметрами даже из соседней книги, тема здесь была, и проблема, насколько я помню, так решена и не была. Без параметров при этом макрос вызывался без проблем
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #38339149
Munka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
аналогично. макрос без параметров вызывается, с ними - нет

lbppb,
указание явного уровня доступа ситуации не меняет. при указании явного типа переменной процедура воспринимается уже не макросом, а просто процедурой и vbs его соответственно не находит. в передаваемой строке адреса никаких спецсимволов нет, как и пробелов. только русские и английские буквы
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #38339191
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MunkaShocker.Pro,
аналогично. макрос без параметров вызывается, с ними - нет

lbppb,
указание явного уровня доступа ситуации не меняет. при указании явного типа переменной процедура воспринимается уже не макросом, а просто процедурой и vbs его соответственно не находит. в передаваемой строке адреса никаких спецсимволов нет, как и пробелов. только русские и английские буквы

Я сделал маленький тестовый проект. Word 2010, вставил в модуль:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Option Explicit

Public Sub test(Optional msg As String)

If LenB(msg) = 0 Then
    msg = "Default"
End If

MsgBox msg

End Sub



И vbs файлик:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim wd
Dim dc

Set wd = CreateObject("Word.Application")

Set dc = wd.Documents.Open("путь к документу")

wd.Visible = True
wd.Run "test", "Hello World!"



И все работает без проблем. Ищите тему на которую ссылается Shocker.Pro или в качестве обходного пути пишите пеменную куда-нибудь (в отдельный файл или базу данных) и пусть ваш макрос (без параметров) знает, где искать путь.
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #38339240
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lbppbв качестве обходного пути пишите пеменную куда-нибудьв ворде у документа есть коллекция variables, можно через нее делать обмен

та тема, была про эксель, кстати
может в 2010 уже и починили все, тогда все тестировалось на <2007
...
Рейтинг: 0 / 0
Вызвать макрос из VBScript
    #38339347
Munka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем спасибо, решение нашла. если не прописывать модуль, где находится макрос, а только его имя, то все срабатывает
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вызвать макрос из VBScript
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]