2

我正在使用 ruby​​ a WIN32OLE 来使用 Windows 调度程序自动执行 Excel 宏。

我让所有这些都正常工作。我的问题在于必须运行嵌入在外部方的 excel 文件中的宏(即我无法控制宏)。我可以毫无问题地调用宏,但是代码包含用户提示(以Msgbox语句的形式)

简而言之,我如何msgbox通过 WIN32OLE 告诉“是”或“确定”?

我试过的

  • 事件处理:Msgbox 不会引发工作表事件。我不得不认为 Windows 会在某处为 Msgbox 抛出一个事件(但我不够熟练,无法用 WIN32OLE 捕获它)

-Threading 和 Sendkeys:我也无法让 msgbox 响应 sendkeys。更大的问题是我无法让线程与 WIN32OLE 对象一起工作(当我使用 puts 和 sleeps 来模拟宏运行时它工作得很好。)

看来我坚持将代码复制到另一个工作簿并删除 msgbox 语句,我真的不想这样做,因为每次第 3 方代码的业务逻辑发生更改时,它都会增加维护工作。

4

1 回答 1

1

这是一种方法, 安装 Autoit 然后执行:

au3 = WIN32OLE.new("AutoItX3.Control")
au3.ControlClick("MessageBox Title",'', 'OK')
于 2012-01-26T02:55:20.393 回答