2012-01-25 2 views
2

ruby를 사용하여 WIN32OLE을 사용하여 Windows 스케줄러로 Excel 매크로를 자동으로 실행합니다.Excel에서 Msgbox 자동 확인 VBA 코드

나는이 모든 것이 제대로 작동하고 있습니다. 내 문제는 외부 당사자의 Excel 파일에 포함 된 매크로를 실행해야하는 경우에 발생합니다 (즉, 매크로를 제어 할 수 없음). 문제가없는 매크로를 호출 할 수 있지만 코드에 사용자 프롬프트 (Msgbox 문 형식)가 포함되어 있습니다.

간단히 말해서 WIN32OLE을 통해 msgbox에 "예"또는 "ok"라고 어떻게 말합니까? 내가

  • 이벤트 처리를 시도 무엇

    다음 MSGBOX 워크 시트 이벤트가 발생하지 않습니다. 나는 창문이있는 MsgBox 어딘가에 이벤트를 발생 생각해야 할 것이다 (하지만 난 WIN32OLE 그것을 포착 할 수있을만큼 숙련 아니다)

-Threading 및 SendKeys 매크로 : 나는 또한 SendKeys 매크로에 응답 할 MSGBOX을 얻을 수 없습니다 . 문제가되는 것은 스레드를 WIN32OLE 개체와 함께 작동시키지 못했기 때문입니다. 매크로를 실행하기 위해 puts와 sleeps를 사용할 때 잘 동작했습니다.

코드를 다른 것으로 복사하는 것으로 나타납니다. 통합 문서를 제거하고 msgbox 문장을 제거한 후에는 제 3 자 코드의 비즈니스 로직이 변경 될 때마다 유지 보수 작업을 추가하기 때문에 실제로 그렇게하지 않으려 고합니다.

답변

1

여기 install Autoit 하나의 방법 다음을 수행하십시오

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