Автоматическое подтверждение Msgbox в коде Excel VBA - PullRequest
2 голосов
/ 26 января 2012

Я использую ruby ​​WIN32OLE для автоматизации выполнения макросов Excel с помощью планировщика Windows.

У меня все это работает должным образом.Моя проблема связана с необходимостью запуска макроса, встроенного в файл Excel внешней стороны (т.е. я не могу контролировать макрос).Я могу вызвать макрос без проблем, однако код содержит пользовательские подсказки (в форме Msgbox операторов)

Короче говоря, как мне сказать msgbox "да" или "ок" через WIN32OLE?

Что я пробовал

  • Обработка событий: Msgbox не генерирует событие рабочего листа.Я должен был бы думать, что Windows генерирует событие где-то для Msgbox (но я не достаточно опытен, чтобы захватить его с помощью WIN32OLE)

-Threading и Sendkeys: я также не смог получить msgboxответить на sendkeys.Еще более проблематично было то, что я не смог заставить работать потоки с объектом WIN32OLE (он работал нормально, когда я использовал put и sleep для имитации запуска макроса.)

Кажется, я застрял с копированием кодав другую книгу и без удаления отчетов msgbox я не очень хочу этого делать, потому что тогда она будет добавлять работу по обслуживанию каждый раз, когда меняется бизнес-логика стороннего кода.

1 Ответ

1 голос
/ 26 января 2012

Вот один из способов, установить Autoit и затем сделайте:

au3 = WIN32OLE.new("AutoItX3.Control")
au3.ControlClick("MessageBox Title",'', 'OK')
...