سؤال

لدي تطبيق Access-vba الذي يستخدم أيضًا word-vba.أثناء تشغيل التطبيق على جهازي المحلي، فإنه يعمل بشكل جيد.بمجرد نقله إلى الآخرين (نفس إصدارات الوصول والكلمة)، فسوف يتعطل عندما يتعلق الأمر بجزء vba من الكلمة.تفشل أوامر مثل document.open أو .saveas2: Method 'SaveAs2' of object failed على سبيل المثال.

لقد لاحظت أيضًا أن المكتبات التي أشرت إليها في التطبيق مطلوبة من قبل أي مستخدم نهائي آخر.أنا معتاد على التجميع باستخدام المكتبات فقط ومن هذه النقطة يتم تضمينها دائمًا في .jar/.exe/etc، ولكن يبدو أنه عند نقل التطبيق إلى أجهزة كمبيوتر أخرى فإنه يحاول دائمًا إعادة الترجمة؟

أنا لست على دراية جيدة بـ VBA لذا أعتقد أن فشل وظائف Word-vba الخاصة بي يرجع إلى خطأ في المرجع، هل هناك أي أفكار أخرى؟

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

المحلول

"المكتبات" التي يمكن لـ VBA الرجوع إليها هي في الواقع كائنات كوم, ، وعادة ما يتم تعبئتها كملفات DLL.إنها كائنات يتم إنشاء مثيل لها ديناميكيًا في وقت التشغيل (إذا لم تكن كذلك بالفعل) عند الطلب.يتم تحميلها بواسطة Windows في الذاكرة ويستخدم برنامجك معيار COM للتفاعل معها، واستدعاء الأساليب والحصول على الخصائص أو تعيينها (الاتصال بين العمليات).هناك بشكل عام طريقتان للتفاعل معهم:الربط المبكر والربط المتأخر.

باستخدام الربط المبكر، يمكنك إضافة مرجع إلى المكتبة بينما لا تزال تكتب التعليمات البرمجية، مما يسمح لـ VBA IDE بتوفير الإكمال التلقائي وبعض التحقق من الأخطاء في وقت الترجمة.يمكنك إنشاء كائنات باستخدام الكلمة الأساسية "الجديدة" وبكتابة اسم الكائن مباشرةً.ومع ذلك، يتطلب الربط المبكر تحديد ملف dll محددًا وربما إصدارًا محددًا من الواجهة.يمكن أن يؤدي هذا إلى حدوث مشكلات إذا قمت بالرجوع إلى إصدار واجهة محدد لا يمتلكه أحد المستخدمين.

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

أما بالنسبة للخطأ الذي يظهر لك، فقد ترغب في التحقق من إصدار Office الموجود على أجهزة المستخدم - حفظ باسم2 تمت اضافته في اوفيس 2010

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