لا يتم تحميل الوظائف الإضافية عند استخدام أمر 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 (محتوى لم تتم ترجمته بعد)
personal.xls مصنف الماكرو الشخصي XL2000 XL2002 XL2003 XL2007
خصائص

رقم الموضوع: 213489 - آخر مراجعة: 09/18/2011 23:14:00 - المراجعة: 2.0

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition

  • kbautomation kbvba kbexpertiseinter kbdtacode kbprb kbprogramming KB213489
تعليقات