اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

هل هناك حل لمشكلة MISSING: Microsoft Excel 16.0 Object Library


الردود الموصى بها

السلام عليكم

ارجوكم  محتاجه الى حل فقدان المكتبات الخاصة بالاكسل فى حالة اختلاف النسح

MISSING: Microsoft Excel 16.0 Object Library

لو عندى اكتر من جهاز لازم افتح فى وضع التصميم علشان اغير لرقم نسخة الاوفيس او الاكسل بالاخص لو كان على الجهاز اصدار اخر

هل هناك حل برمجى

رابط هذا التعليق
شارك

وعليكم السلام:smile:

 

نعم ، تستطيعين ان تحذفين المرجع ، ثم

بدلا عن الربط المسبق
Early Bounding:
Dim AccApp as Excel.Application

تستخدمين الربط المتأخر
Late Bounding:
Dim AccApp as object

.

وهذا ينطبق على اي متغير للأكسس في الكود ،

ولكن الكود قد يحتاج الى تعديل بعض الاحيان ، وبعض الاحيان لا يمكن العمل بدون الربط المسبق ،

 

جعفر

رابط هذا التعليق
شارك

10 ساعات مضت, jjafferr said:

وعليكم السلام:smile:

 

نعم ، تستطيعين ان تحذفين المرجع ، ثم


بدلا عن الربط المسبق
Early Bounding:
Dim AccApp as Excel.Application

تستخدمين الربط المتأخر
Late Bounding:
Dim AccApp as object

.

وهذا ينطبق على اي متغير للأكسس في الكود ،

ولكن الكود قد يحتاج الى تعديل بعض الاحيان ، وبعض الاحيان لا يمكن العمل بدون الربط المسبق ،

 

جعفر

انا مش فاهمه حاجة كدة على فكرة

رابط هذا التعليق
شارك

السلام عليكم:smile:

 

اولا انا اعتذر بأني اخطأت في التسميات في مشاركتي السابقة ،

فبدل كلمة المرجع كان لازم اقول مكتبة ،

وبدل Bounding كان المفروض ان اقول Binding:blink:

 

 

الربط المسبق Early Binding:

1. ان تختار مكتبة الاكسل (طبعا لهذا المثال) ،

VBA-Tools-References.jpg

VBA-Reference-Screen-Office-2013.png

.

2. ثم الكود يكون شيء من هذا القبيل:

  Dim oExcel As Excel.Application

  Set oExcel = CreateObject("Excel.Application")

  oExcel.Visible = True

والمشكلة هنا ،

انه اذا اخترت مكتبة اكسل الاقل (مثلا اكسل 8) ، فأي كمبيوتر يحتوي على اكسل 8 او اكبر (9 ..12..15) فالمكتبة/البرنامج سوف يشتغل بطريقة صحيحه ،

بينما اذا كان عندك اكسل 6 ، فستحصل على خطأ ، ولن يعمل الكود:blink:

 

الميزة الموجودة في هذه الطريقة ،

انها اسرع في العمل ،

والاهم من هذا ، انها تساعدك في اعطائك الاوامر (مثلا تكتب امر معين ثم تكتب نقطة . فتظهر لك الاوامر التي تستطيع استعمالها).

 

 

اما اذا استعملنا

الربط المتأخر Late Binding

فإننا لا نحتاج الى اختيار مكتبة الاكسل ، ونكتب الكود اعلاه هكذا ، والذي يشتغل على جميع اصدارات الاكسل:

  Dim oExcel As Object

  Set oExcel = CreateObject("Excel.Application")

  oExcel.Visible = True

المشكلة هنا ،

اننا يجب ان نعتمد على انفسنا لعمل الكود ، فالاكسس لن يساعدنا ،

وهو ابطأ من الطريقة الاولى.

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

وعليكم السلام:smile:

 

نعم الامثلة كثيرة في المنتدى ،

والرابط التالي فيه كود يعمل بطريقة الربط المتأخر Late Binding

 

وستلاحظ ان مكتبة الاكسل غير مُختارة فيه ،

كما ستلاحظ هذين السطرين في اول الكود:

    Dim xlApp As Object  'Excel.Application
    Dim xlWB As Object   'Excel.Workbook

 

هذا معناه اني واثناء البرمجة ، استخدمت طريقة الربط المسبق Early Binding لكي تساعدني مكتبات الاكسل ، وعند الانتهاء من البرنامج حذفت مكتبة الاكسل وغيّرت السطرين اعلاه:smile:

والمهم هنا ان تُجرب البرنامج بعد تغييره الى الربط المتأخر Late Binding ، للتأكد ان الكود لايزال يعمل بطريقة صحيحة ، ومعظمها سيعمل ان شاء الله:smile:

 

ولكن ،

الرابط التالي يُخبرك انه لا تستطيع دائما ان تستخدم نفس الكود بين الربط المسبق والربط المتأخر:

 

 

جعفر

  • Like 2
رابط هذا التعليق
شارك

21 دقائق مضت, jjafferr said:

وعليكم السلام:smile:

 

الاجابة هي نفسها التي اقترحتها من اول مشاركة ، 

استخدمي Late Binding

 

جعفر

طيب معلش انا اسفه انا اتلخبط شويه

حضرتك قصدك استخدم المكتبه الجاهزة من الـ reference

انا اسفه يا استاذ @jjafferr تعبتك معايا

شكرا ليك

تم تعديل بواسطه عبق الرياحيين
رابط هذا التعليق
شارك

23 ساعات مضت, jjafferr said:

اما اذا استعملنا


الربط المتأخر Late Binding

فإننا لا نحتاج الى اختيار مكتبة الاكسل ، ونكتب الكود اعلاه هكذا ، والذي يشتغل على جميع اصدارات الاكسل:


  Dim oExcel As Object

  Set oExcel = CreateObject("Excel.Application")

  oExcel.Visible = True

 

  • Like 1
رابط هذا التعليق
شارك

أختي الفاضلة

 

سؤالك كان

في 7/30/2017 at 07:00, عبق الرياحيين said:

ارجوكم  محتاجه الى حل فقدان المكتبات الخاصة بالاكسل فى حالة اختلاف النسح

MISSING: Microsoft Excel 16.0 Object Library

لو عندى اكتر من جهاز لازم افتح فى وضع التصميم علشان اغير لرقم نسخة الاوفيس او الاكسل بالاخص لو كان على الجهاز اصدار اخر

 

والجواب هو

23 ساعات مضت, jjafferr said:

اما اذا استعملنا


الربط المتأخر Late Binding

فإننا لا نحتاج الى اختيار مكتبة الاكسل ، ونكتب الكود اعلاه هكذا ، والذي يشتغل على جميع اصدارات الاكسل:

 

اما

9 دقائق مضت, عبق الرياحيين said:

بس حضرتك قولت 

المشكلة هنا ،

1. اننا يجب ان نعتمد على انفسنا لعمل الكود ، فالاكسس لن يساعدنا ،

2. وهو ابطأ من الطريقة الاولى.

1. فأنتي المفروض انه عندك الكود جاهز ، لهذا السبب انتي طرحتي هذا السؤال ، ومعظم المبرمجين لا يعرفون كيف يستفيدون من كود مكتبات البرامج الاخرى غير الاكسس ،

2. ابطأ من الطريقة الاولى ، وليس بطيء

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information