سؤال

أنا أستخدم توربو دلفي 2006.

سيتم استدعاء DLL من داخل Excel كجزء من مجموعة VBA/DLL.

يحاول الجزء الأول من المشكلة معرفة كيفية تمرير مرجع إلى جلسة Excel الحالية إلى مكتبة الارتباط الحيوي (DLL).معظم التعليمات البرمجية الأخرى التي رأيتها هي أنها أطلقت نسخة منفصلة من Excel بخلاف تلك التي تستخدمها.

لقد رأيت بعض أكواد C++ التي تنشئ مثيلاً لـ IDispatch ثم يقوم بتمرير شيء ما إلى أسلوب كائن IDispatch، ولكن لا يعرف الكثير عن لغة C++.

أيه أفكار؟

هل كانت مفيدة؟

المحلول

ما تصفه يسمى كتابة ملحق COM.تحتاج إلى إنشاء ملف DLL للأتمتة وتنفيذ ملف IDTExtensibility2 واجهه المستخدم.سوف تتلقى بعد ذلك Excel Application واجهة كمعلمة ل OnConnection طريقة.

سوف تحتاج أيضا إلى يسجل DLL الخاص بك كوظيفة إضافية لذلك سيقوم Excel بتحميله تلقائيًا.

يحرر: نسيت أن أذكر:قد ترغب في إلقاء نظرة على الوظيفة الإضافية اكسبرس.يجعل إطار العمل والمكونات الخاصة بهم البدء في إنشاء وظائف Office الإضافية أمرًا سهلاً للغاية.بالتأكيد لن تضطر إلى الاهتمام بالتفاصيل IDTExtensibility2.كل ذلك يأتي بسعر (مبرر جيدًا).

نصائح أخرى

ودلفي يأتي مع مجموعة من عناصر تحكم ActiveX لمنح حق الوصول الكامل إلى Excel وغيرها من تطبيقات Office. يجب أن تكون على "خوادم" علامة التبويب لوحة أداة.

وإذا كان ليست هناك، ثم تحديد مكونات |. قم بتثبيت الحزم، وانتقل إلى أسفل القائمة هناك حتى النهاية، وحدد الحزمة الصحيحة

في تثبيت افتراضي، فإنها ينبغي أن تسمى:

ومايكروسوفت أوفيس عينة أتمتة خادم التفاف مكونات

ويجب أن يكون هناك واحد لXP وWIN2K. وتلك XP يعمل لفيستا.

والآن أنه إذا إذا كنت ترغب في أتمتة Excel.

إذا كنت تريد فقط لإضافة وظائف إلى Excel باستخدام دلفي، كنت تشير الى استخدام كائن COM، كما أظن أن Excel يقبل جدا من كائنات COM. خلاف ذلك، يمكنك إنشاء DLL على التوالي، واستخدام ذلك بنفس الطريقة التي يستخدم Excel أي DLL الأخرى.

لا أعرف الكثير عن Office، ولكن أعتقد أنه يجب عليك استخدام COM/ActiveX.ثم تحصل أيضًا على IDispatch الخاص بك.يرى http://delphi.about.com/od/comoleactivex/OLE_COM_DCOM_Automation_ActiveX_Delphi_knowledge_base.htm

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