Ruby Office Automation - لا يمكن الحصول على معالجات الأحداث للعمل في Msword

StackOverflow https://stackoverflow.com/questions/3657070

سؤال

Ruby Version 1.9.1p430 يعمل على W7 مع Office 2010.

أحاول التقاط حدث DocumentBeforeClose لكن لا يمكنني حتى الاقتراب من العمل!

لقد اتبعت بعض الأمثلة باستخدام Excel حيث يتم التعامل مع SheetSelectionChange. إنه يعمل دون أي مشكلة.

باستخدام نفس العملية ، أردت التعامل مع حدث الكلمات أعلاه.

فشل الكود الخاص بي في بيان 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 بدلاً من كائن DOC في مكالمة Win32ole_event ، بسبب "ApplicationEvents4" يتعلق بـ Word.Application.

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

ملاحظة
لا تنسى حلقة الرسالة

loop do
    WIN32OLE_EVENT.message_loop
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top