Ruby Office Automation - لا يمكن الحصول على معالجات الأحداث للعمل في Msword
-
01-10-2019 - |
سؤال
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