لا يتم تحميل الوظائف الإضافية عند استخدام أمر CreateObject في Excel

الأعراض

عند وصولك إلى Microsoft Excel ككائن التنفيذ التلقائي لـ OLE باستخدام الأمر CreateObject، لا يتم تحميل ملفات الوظائف الإضافية التي تقع في دليل XLStart والمصنف الجديد الافتراضي.

السبب

عندما تحاول تحميل الوظائف الإضافية والملفات، يقوم Excel بإرسال رسالة إلى التطبيق المُستدعى، مثل Visual Basic، والذي يكون غير جاهز للاستجابة على الطلب وللمحاولة مرة أخرى لاحقًا. وقد يتعذر على التطبيق المُستدعي التعامل مع هذا الطلب ومواصلة بقية الأوامر.

الحل البديل

تقدم Microsoft الأمثلة البرمجية بغرض التوضيح فقط، دون أي ضمان صريح أو ضمني. ويتضمن ذلك، على سبيل المثال لا الحصر، الضمانات الضمنية الخاصة بالتسويق أو الملاءمة لغرض معين. تفترض هذه المقالة أنك معتاد على لغة البرمجة التي يتم شرحها والأدوات المستخدمة لإنشاء الإجراءات وتصحيحها. يمكن لمهندسي الدعم لدى Microsoft شرح وظيفة إجراء محدد. على الرغم من ذلك، لن يقوموا بتعديل هذه الأمثلة لتقديم وظيفة إضافية أو إنشاء إجراءات لاستيفاء متطلباتك الخاصة.

لتحميل ملف وظيفة إضافية عند تشغيل Excel ككائن التنفيذ التلقائي لـ OLE، قم بتحميل الوظيفة الإضافية يدويًَا. وفيما يلي أمثلة على هذا الأسلوب.

برنامج Microsoft Office Excel 2007

Sub LoadAddin()

' متغير البعد xl كنوع كائن.
Dim xl As Object

' قم بتنشيط Microsoft Excel xl وتعيينه إلى المتغير xl.
Set XL = CreateObject("Excel.Application")‎

' افتح ملف الوظيفة الإضافية الذي تريده، والذي يعد في هذا المثال، XLQUERY.XLAM.
XL.Workbooks.Open (XL.librarypath & "\MSQUERY\XLQUERY.XLAM")‎

' إذا كنت بحاجة إلى تسجيل الوظائف والأوامر
' الموجودة في مورد (XLL)، استخدم أسلوب RegisterXLL.
' في المثال أدناه، تم تسجيل كافة وظائف
' Analys32.xll.
' XL.RegisterXLL "Analys32.xll"

' قم بتشغيل أي ماكرو تلقائي موجود في ملف الوظيفة الإضافية
' لا يعمل الماكرو التلقائي عندما تقوم بفتح أحد الملفات
' باستخدام الأسلوب "فتح".
XL.Workbooks("xlquery.xlam").RunAutoMacros 1

Set XL = Nothing
End Sub

الإصدار Microsoft Office Excel 2003 والإصدارات السابقة من برنامج Excel

Sub LoadAddin()

' متغير البعد xl كنوع كائن.
Dim xl As Object

' قم بتنشيط Microsoft Excel xl وتعيينه إلى المتغير xl.
Set XL = CreateObject("Excel.Application")‎

' فتح ملف الوظيفة الإضافية الذي تريده، في هذا المثال، XLQUERY.XLA.
XL.Workbooks.Open (XL.librarypath & "\MSQUERY\XLQUERY.XLA")‎

' إذا كنت بحاجة إلى تسجيل الوظائف والأوامر
' الموجودة في مورد (XLL)، استخدم أسلوب RegisterXLL.
' في المثال أدناه، تم تسجيل كافة وظائف
' Analys32.xll.
' XL.RegisterXLL "Analys32.xll"

' قم بتشغيل أي ماكرو تلقائي موجود في ملف الوظيفة الإضافية
' لا يعمل الماكرو التلقائي عندما تقوم بفتح أحد الملفات
' باستخدام الأسلوب "فتح".
XL.Workbooks("xlquery.xla").RunAutoMacros 1

Set XL = Nothing
End Sub

معلومات أخرى

نظرًا لأنه عندما تقوم باستدعاء Excel ككائن التنفيذ التلقائي لـ OLE فإنه لا يُحمل وظائف إضافية أو ملفات في دليل XLStart، فإن لديك تحكمًا كاملاً في عملية التحميل. إذا أردت تحميل وظيفة إضافية فيمكنك تحميلها يدويًا.

ويعني هذا السلوك عدم وجود أخطاء ماكرو أو تنبيهات ملف مؤمّن أو تنبيهات ملف للقراءة فقط تمنع Excel من التحميل عندما يتم استدعاؤه بواسطة الأمر CreateObject. كما توجد فائدة أخرى لهذا الإجراء، وهي أنه يستغرق وقتًا لتحميل Excel أقل مما يستغرقه عند تحميل وظائف إضافية أو ملفات.

مراجع

لمزيد من المعلومات حول كيفية الحصول على مساعدة Visual Basic for Applications، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":

226118 قائمة من المصادر المتوفرة لمساعدتك على تعلم برمجة Visual Basic for Applications (محتوى لم تتم ترجمته بعد)

خصائص

رقم الموضوع: 213489 - آخر مراجعة: 09‏/01‏/2017 - المراجعة: 1

تعليقات