IBM PCOMM - не удается запустить макрос VBS из другого макроса VBS
Я создал макрос для ввода учетных данных с помощью средства записи макросов IBM Personal Communications 12.0.3.0. Он просто вводит мое имя пользователя и пароль при вызове.
sub Credentials()
Dim username
Dim password
username = "myUser"
password = "myPass"
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys username
autECLSession.autECLPS.SendKeys "[enter]"
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys password
autECLSession.autECLPS.SendKeys "[enter]"
end sub
Во время других рабочих процессов мне часто приходится вводить свое имя пользователя / пароль несколько раз для переключения между окнами, поэтому я подумал, что для этих новых макросов будет проще просто вызвать Credentials()
когда этот тип подсказки появляется. Мне также приходится часто менять пароль мэйнфрейма, поэтому заменять текст пароля нужно только один раз в Credentials()
Макрос был бы идеальным.
Вот пример, где я хотел бы использовать сохраненный Credentials()
процедура:
sub Login()
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "server name"
autECLSession.autECLPS.SendKeys "[enter]"
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLPS.StartMacro "Credentials"
end sub
Моя проблема существует в линии autECLSession.autECLPS.StartMacro "Credentials"
, С другими попытками, когда я пытался использовать более классические команды vbscript для запуска макроса, я получал ошибку выполнения, но с ... .StartMacro "Creds"
линия - ничего не происходит
Основываясь на этой документации IBM, StartMacro(String MacroName)
метод должен запускать файл макроса, расположенный в каталоге данных приложения пользовательского класса PCOMM, указанном MacroName
параметр. У меня оба макроса хранятся как отдельные .mac
файлы в каталоге данных приложения пользовательского класса ("C:\Users\%USERNAME%\AppData\Roaming\IBM\PersonalCommunications"
) как указано здесь в разделе "типичная установка".
Это то, что я имел в виду под типичной попыткой VBS вызвать другой макрос (вместо StartMacro()
):
'doesn't work
Shell "C:\Users\marcucciboy2\AppData\Roaming\IBM\Personal Communications\Credentials.mac"
'neither works
dim ObjShell
Set objShell = CreateObject("WScript.Shell")
ObjShell.Run "cscript C:\Users\marcucciboy2\AppData\Roaming\IBM\Personal Communications\Credentials.mac"
'ObjShell.Run "cscript \\C:\Users\marcucciboy2\AppData\Roaming\IBM\Personal Communications\Credentials.mac"
Вот два связанных вопроса, которые я нашел в своем исследовании один, два, но, к сожалению, ни один из них не имеет рабочего ответа.
Любой совет будет принят во внимание!
2 ответа
Первая ссылка из вашего исследования гласит, что если (файл макроса) имеет расширение, вам необходимо либо удалить расширение, чтобы вызов мог найти файл макроса, либо добавить расширение к имени файла оператора вызова. Вы упомянули, что оба.mac
файлы, чтобы вы могли попробовать:
autECLSession.autECLPS.StartMacro "Credentials.mac"
Там также написано, что длинные имена файлов не поддерживаются. например, более 8 символов. Попробуйте более короткое имя для этого файла макроса.
Параметры:String MacroName Имя файла макроса, расположенного в каталоге данных приложения пользовательского класса PersonalCommunications (указанного при установке), без расширения файла. Этот метод не поддерживает длинные имена файлов.
Замечания по использованию: В качестве имени макроса необходимо использовать короткое имя файла. Этот метод не поддерживает длинные имена файлов.