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

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

قام بنشر

السلام عليكم

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information