Мой работодатель приобрел стороннее средство OfficeConverter от Conveter Technology, которое автоматизирует преобразование / восстановление файлов в формате Office 2003 в формат Office 2007. Этот инструмент также позволяет автоматизировать перевод / изменение требований к коду макросов / VBA между форматами Office 2003 и 2007.
Моя проблема заключается в том, что во время этого преобразования инструмент открывает целевой продукт Office, скажем, Excel, а затем открывает целевой файл пользователя (т. Е. Report.xls) и затем проверяет любой код VBA / макроса на предмет требований к изменениям. Проблема заключается в том, что ЕСЛИ код файла Excel зависит от какого-либо внешнего инструмента, такого как файл .OCX, и если этого инструмента нет на ПК, на котором я выполняю это действие, в Excel появится сообщение о том, что объект имеет не был найден, останавливая весь процесс конвертации (тысячи файлов подряд), пока кто-то не придет и ВРУЧНУЮ не нажмет соответствующую кнопку, чтобы закрыть диалоговое окно.
Я подумал, что создание небольшого приложения для просмотра в VB6 (эй, я стар и мои навыки тоже) может сидеть на одном компьютере и наблюдать за этими диалоговыми окнами и, в зависимости от конкретного сообщения, нажимать соответствующую кнопку через вызов API SendMessage.
Проблема в том, что я не смог заставить SendMessage фактически нажать кнопку для меня, я пытался отправить ему значение ключа возврата (vbKeyReturn) или даже клавишу пробела (vbKeySpace), но действие никогда не приводит в диалоговом окне закрывается как надо. Я могу сфокусироваться на вкладке между любыми кнопками в диалоговом окне, но это все.
Я пытался использовать SendKeys, но это гораздо менее надежно и настоятельно не рекомендуется в текущей документации, с которой я столкнулся.
Есть предложения? :)