2010-09-07 40 views
1

的Ruby版本1.9.1p430工作與Office 2010紅寶石辦公自動化 - 不能讓事件處理中的MSWord

我試圖趕上DocumentBeforeClose事件上W7運行,但我甚至無法接近得到它的工作!

我跟着一些使用Excel處理SheetSelectionChange的例子。它工作沒有任何問題。

使用相同的過程,我想處理上述Word事件。

我的代碼在WIN32OLE_EVENT.new語句失敗。這裏是我使用的是什麼:

require 'win32ole' 

wd = WIN32OLE.connect('Word.Application') 
wd.visible = true 
doc = wd.Documents.Add 

ev = WIN32OLE_EVENT.new(doc, 'ApplicationEvents4') 

我得到的錯誤是:

ev = WIN32OLE_EVENT.new(doc, 'ApplicationEvents4') 
RuntimeError: failed to query IConnectionPoint 
    HRESULT error code:0x80040200 

我爲在WIN32OLD_EVENT聲明水槽的名稱正確的內容廣泛的看了,但這個是最好的我已經想出了,這顯然是不正確的!

如果有人能指出我正確的方向,我將不勝感激。如果有人成功地從Ruby處理Word事件,我會很感興趣。

+0

@grimbo:應該在這個問題上的左邊打勾。如果錯誤被打包,你可以點擊勾號。 - Andrew Grimm – 2010-09-08 04:38:33

回答

1

我想你應該在WIN32OLE_EVENT調用中使用Word對象而不是doc對象,因爲'ApplicationEvents4'涉及到Word.Application。

ev = WIN32OLE_EVENT.new(wd, 'ApplicationEvents4') 

PS
不要忘了消息循環

loop do 
    WIN32OLE_EVENT.message_loop 
end 
+0

@grimbo:這個問題的左側應該有一個勾號。如果錯誤被打包,你可以點擊勾號。 – 2010-09-07 23:04:59