Доброго времени суток Всем.
продолжу в этой теме.... ........ про WshShell
Год назад написал я макрос для Excel- файла с целью автоматизации деятельности своей и моих коллег. Суть макроса - запуск внешней ЕХЕ программы (самописаной) для получения от прибора данных и последующая интеграция данных в книгу Excel/
Файл с макросом работал полгода на пяти разных компьютерах (Win7, Win10, разные версии офиса...). Потом на одном компе при запуске макроса стала выскакивать ошибка 429.Всегда. Через месяц - на втором компе "поломалось"/ Ещё через два месяца перестало работать на третьем. На оставшихся двух пока работает.
Компы "корпоративные" и админятся очень издалека.... обновления ОС и офиса выполняются согласно корпоративной политике (автоматически). Пользователи сами ничего в настройках не меняли.
Текст макроса прост и процедура запуска взята копипастом на просторах интернета:
Код |
---|
Range("C20").Select
ActiveCell.FormulaR1C1 = 255
Set WshShell = CreateObject("WScript.Shell") <<<< на эту строку ругается дебагер и подсвечивает её жёлтым
intReturn = WshShell.Run("C:\ABC\GetData.exe X", 0, True)
Range("C20").Select
ActiveCell.FormulaR1C1 = intReturn |
Основная проблема в том, что я не понимаю, почему перестало работать то, что полгода работало без проблем. Если-бы админы изменили что-то в политике безопасности, то у всех коллег одновременно перестало-бы работать. А так - через большие промежутки времени. Более того, что такого страшного в строке
Set WshShell = CreateObject("WScript.Shell"). Судя по статьям в интернете - это нечто стандартное и применяется миллионными тиражами....
Именно на ней затыкается макрос и подсвечивается она в дебагере. То есть до запуска моей программы самописаной дело не доходит.
Прочитал весь интернет

убил уже наверное часов сто на это. Ничего не нашёл . Всякие
Dim WshShell As Object дописывал, ....
VBA.CreateObject не меняет ничего....
/RegServer исполнял ....
HKEY_CLASSES_ROOT\CLSID смотрел....
на одном компе переустановили офис (365) - не помогло;
Где косяк? Почему перестало работать и как всё починить?
Может есть другой способ запуска стороннего ЕХЕ-файла с параметрами (консольное приложение написано в CodeBlocks) и обязательным ожиданием ответного кода-завершения от него? (простой Shell не подходит)???