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

لماذا نحتاج إلى إضافة المراجع يدوياً إلى محرر الفيجوال ؟


Hamdi Edlbi-khalf

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

في ١٠‏/١٠‏/٢٠١٨ at 22:14, Khalf said:

لماذا نحتاج إلى إضافة المراجع يدوياً في محرر الفيجوال و لا تضاف تلقائياً ؟

أخي الكريم اعتقد يمكن ذلك بكود لنسخ هذه المراجع من جهازك كمبرمج ثم اضافتها لجهاز العميل .....

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

السلام عليكم ..

22 ساعات مضت, kanory said:

اعتقد يمكن ذلك بكود لنسخ هذه المراجع من جهازك كمبرمج ثم اضافتها لجهاز العميل ...

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

إن سؤالي هو  لماذا لا تضاف المراجع تلقائياً في محرر فيجوال و لماذا وجدت أصلاً بهذه الصورة الموزعة ؟

لم على المستخدم إضافة هذه المكتبات و لم تكون مفقودة في بعض الأحيان ؟و ما الحل لذلك ؟

هل يمكن إضافة مكتبات مفتوحة المصدر مثل الچاڤا  ؟

 

شكراً لكم كنت أتمنى أن أضع أجوبتي على هذه الأسئلة إلا أن البحث لم يسعفني ..

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

هذا الرابط ..  حول إضافة المراجع آلياً للبرنامج .. و أحسب أنه الأفضل بناء على ما جاء التعليقات ، لم أجربه و ربما قد أحتاج للمساعدة عند تطبيقه .

https://www.tek-tips.com/viewthread.cfm?qid=903662

Maybe these examples will help you.


Function FixUpRefs()
    Dim loRef As Access.Reference
    Dim intCount As Integer
    Dim intX As Integer
    Dim blnBroke As Boolean
    Dim strPath As String

    On Error Resume Next

    'Count the number of references in the database
    intCount = Access.References.Count
  
    'Loop through each reference in the database
    'and determine if the reference is broken.
    'If it is broken, remove the Reference and add it back.
    Debug.Print "----------------- References found -----------------------"
    Debug.Print " reference count = "; intCount

    For intX = intCount To 1 Step -1
      Set loRef = Access.References(intX)
      With loRef
        Debug.Print " reference = "; .FullPath
        blnBroke = .IsBroken
        If blnBroke = True Or Err <> 0 Then
          strPath = .FullPath
          Debug.Print " ***** Err = "; Err; " and Broke = "; blnBroke
          With Access.References
            .Remove loRef
            Debug.Print "path name = "; strPath
            .AddFromFile strPath
          End With
        End If
       End With
    Next
     '''Access.References.AddFromFile "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"
    
  Set loRef = Nothing
  
  ' Call a hidden SysCmd to automatically compile/save all modules.
  Call SysCmd(504, 16483)
End Function


Function AddRefs()
    Dim loRef As Access.Reference
    Dim intCount As Integer
    Dim intX As Integer
    Dim blnBroke As Boolean
    Dim strPath As String

    On Error Resume Next
  
    'Loop through each reference in the database
    'Add all references
    Debug.Print "----------------- Add References -----------------------"
    
          With Access.References
            .AddFromFile "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"
            .AddFromFile "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll"
            .AddFromFile "C:\Program Files\Microsoft Office\Office\msacc9.olb"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msado15.dll"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msado25.tlb"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msadox.dll"
            .AddFromFile "C:\WINNT\System32\stdole2.tlb"
            .AddFromFile "C:\WINNT\System32\scrrun.dll"
          End With
      
  ' Call a hidden SysCmd to automatically compile/save all modules.
  Call SysCmd(504, 16483)
End Function

 

و يبقى السؤال قائماً 

29 دقائق مضت, Khalf said:

سؤالي هو  لماذا لا تضاف المراجع تلقائياً في محرر فيجوال و لماذا وجدت أصلاً بهذه الصورة الموزعة ؟

لم على المستخدم إضافة هذه المكتبات و لم تكون مفقودة في بعض الأحيان ؟و ما الحل لذلك ؟

هل يمكن إضافة مكتبات مفتوحة المصدر مثل الچاڤا  ؟

 

شكراً لكم كنت أتمنى أن أضع أجوبتي على هذه الأسئلة إلا أن البحث لم يسعفني ..

 

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

25 دقائق مضت, Khalf said:

هذا الرابط ..  حول إضافة المراجع آلياً للبرنامج .. و أحسب أنه الأفضل بناء على ما جاء التعليقات ، لم أجربه و ربما قد أحتاج للمساعدة عند تطبيقه .

https://www.tek-tips.com/viewthread.cfm?qid=903662


Maybe these examples will help you.


Function FixUpRefs()
    Dim loRef As Access.Reference
    Dim intCount As Integer
    Dim intX As Integer
    Dim blnBroke As Boolean
    Dim strPath As String

    On Error Resume Next

    'Count the number of references in the database
    intCount = Access.References.Count
  
    'Loop through each reference in the database
    'and determine if the reference is broken.
    'If it is broken, remove the Reference and add it back.
    Debug.Print "----------------- References found -----------------------"
    Debug.Print " reference count = "; intCount

    For intX = intCount To 1 Step -1
      Set loRef = Access.References(intX)
      With loRef
        Debug.Print " reference = "; .FullPath
        blnBroke = .IsBroken
        If blnBroke = True Or Err <> 0 Then
          strPath = .FullPath
          Debug.Print " ***** Err = "; Err; " and Broke = "; blnBroke
          With Access.References
            .Remove loRef
            Debug.Print "path name = "; strPath
            .AddFromFile strPath
          End With
        End If
       End With
    Next
     '''Access.References.AddFromFile "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"
    
  Set loRef = Nothing
  
  ' Call a hidden SysCmd to automatically compile/save all modules.
  Call SysCmd(504, 16483)
End Function


Function AddRefs()
    Dim loRef As Access.Reference
    Dim intCount As Integer
    Dim intX As Integer
    Dim blnBroke As Boolean
    Dim strPath As String

    On Error Resume Next
  
    'Loop through each reference in the database
    'Add all references
    Debug.Print "----------------- Add References -----------------------"
    
          With Access.References
            .AddFromFile "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"
            .AddFromFile "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll"
            .AddFromFile "C:\Program Files\Microsoft Office\Office\msacc9.olb"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msado15.dll"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msado25.tlb"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msadox.dll"
            .AddFromFile "C:\WINNT\System32\stdole2.tlb"
            .AddFromFile "C:\WINNT\System32\scrrun.dll"
          End With
      
  ' Call a hidden SysCmd to automatically compile/save all modules.
  Call SysCmd(504, 16483)
End Function

 

و يبقى السؤال قائماً 

 

اخي Khalf

انا جربت هذا الكود عملته بداله ثم استدعيته عند الفتح

وهو شغال

Function AddRefs()
    Dim loRef As Access.Reference
    Dim intCount As Integer
    Dim intX As Integer
    Dim blnBroke As Boolean
    Dim strPath As String

    On Error Resume Next
  
    'Loop through each reference in the database
    'Add all references
    Debug.Print "----------------- Add References -----------------------"
    
          With Access.References
            .AddFromFile "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"
            .AddFromFile "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll"
            .AddFromFile "C:\Program Files\Microsoft Office\Office\msacc9.olb"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msado15.dll"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msado25.tlb"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msadox.dll"
            .AddFromFile "C:\WINNT\System32\stdole2.tlb"
            .AddFromFile "C:\WINNT\System32\scrrun.dll"
            .AddFromFile "C:\windows\syswow64\scrrun.dll"
          End With
      
  ' Call a hidden SysCmd to automatically compile/save all modules.
  Call SysCmd(504, 16483)
End Function

 

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

مرحباً 

تماماً .. هذا الماكرو  الثاني في الرابط 

و في الواقع لقد انتقيته من بين اقتراحات جوجل بناء على التعليقات و التي أبدت الرضا عنه .

و لكن ليكون العمل مكتملاً فلا بد من استخدام الماكرو الأول المتعلق باصلاح المراجع المعطوبة . 

فالرابط و الكود المدرج عن دالتين إحداهما تزيل المراجع المعطوبة و الثانية تضيف المراجع .

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

1 ساعه مضت, Khalf said:

مرحباً 

تماماً .. هذا الماكرو  الثاني في الرابط 

و في الواقع لقد انتقيته من بين اقتراحات جوجل بناء على التعليقات و التي أبدت الرضا عنه .

و لكن ليكون العمل مكتملاً فلا بد من استخدام الماكرو الأول المتعلق باصلاح المراجع المعطوبة . 

فالرابط و الكود المدرج عن دالتين إحداهما تزيل المراجع المعطوبة و الثانية تضيف المراجع .

وهو كذلك

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

19 ساعات مضت, ابو ياسين المشولي said:

اخي Khalf

انا جربت هذا الكود عملته بداله ثم استدعيته عند الفتح

وهو شغال


Function AddRefs()
    Dim loRef As Access.Reference
    Dim intCount As Integer
    Dim intX As Integer
    Dim blnBroke As Boolean
    Dim strPath As String

    On Error Resume Next
  
    'Loop through each reference in the database
    'Add all references
    Debug.Print "----------------- Add References -----------------------"
    
          With Access.References
            .AddFromFile "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"
            .AddFromFile "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll"
            .AddFromFile "C:\Program Files\Microsoft Office\Office\msacc9.olb"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msado15.dll"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msado25.tlb"
            .AddFromFile "C:\Program Files\Common Files\System\ado\msadox.dll"
            .AddFromFile "C:\WINNT\System32\stdole2.tlb"
            .AddFromFile "C:\WINNT\System32\scrrun.dll"
            .AddFromFile "C:\windows\syswow64\scrrun.dll"
          End With
      
  ' Call a hidden SysCmd to automatically compile/save all modules.
  Call SysCmd(504, 16483)
End Function

 

ممكن عمل مثال مصغر يابو ياسين كي تعمل الفائده

نشكر  الاستاذ@Khalf على السوال الرائع 

تحياتي احبتي

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

2 ساعات مضت, ابو زاهر said:

ممكن عمل مثال مصغر يابو ياسين كي تعمل الفائده

نشكر  الاستاذ@Khalf على السوال الرائع 

تحياتي احبتي

311656856_.jpg.c0362d5b364c928589ffff3cbe8e87b1.jpg

Database25.accdb

قبل.jpg

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

39 دقائق مضت, Khalf said:

السلام عليكم

لقد ظهر هذا الخطأ أثناء فتح مثال التطبيق المرفق و لم يقتصر عليه بل أصبح يظهر في سائر برامج الأكسسUntitled.png.f0b4c2c741c91827fd8fada04f4fb97e.png

 

 

ايش هو الاكسس اللي عندك

انا اكسس 2010

شوف الفيديو

 

 

bandicam 2018-10-15 21-14-38-432.rar

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

مرحباً

الآن أقوم بإصلاح الأوفيس .... خلال بحثي وجدت عدة أسباب لهذا الخطأ

 لقد سبق ظهور هذا الخطأ آخرُ له علاقة بالمراجع .

المهم ...

الآن عرفت لماذا لا تضاف المراجع آلياً ؟

السبب الرئيسي هو عدم توافق المراجع مع جميع نسخ الأفيس أو نسخ الويندوز فيجب أن تكون إضافتها مدروسة لقد كانت هذه التجربة دليلاً على ذلك  !

الأوفيس لدي 2010 و لكنه غير مفعل بعض الروابط اتهمت 2010 sp1 .

أما أقرب التعليلات فهي :

المشكلة في ملفات EXE و توافقها مع ملفات DLL

 

 

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

في ١٥‏/١٠‏/٢٠١٨ at 21:35, Khalf said:

مرحباً

الآن أقوم بإصلاح الأوفيس .... خلال بحثي وجدت عدة أسباب لهذا الخطأ

 لقد سبق ظهور هذا الخطأ آخرُ له علاقة بالمراجع .

المهم ...

الآن عرفت لماذا لا تضاف المراجع آلياً ؟

السبب الرئيسي هو عدم توافق المراجع مع جميع نسخ الأفيس أو نسخ الويندوز فيجب أن تكون إضافتها مدروسة لقد كانت هذه التجربة دليلاً على ذلك  !

الأوفيس لدي 2010 و لكنه غير مفعل بعض الروابط اتهمت 2010 sp1 .

أما أقرب التعليلات فهي :

المشكلة في ملفات EXE و توافقها مع ملفات DLL

 

 

هنا اضفت اكثر من 8 مكتبات

Database25.accdb

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

في October 20, 2018 at 13:49, ابو ياسين المشولي said:

هنا اضفت اكثر من 8 مكتبات

Database25.accdb

مرحباً

أولاً أعتذر عن تأخري بالرد حتى الآن و لكن تمهلت بالإجابة ريثما أقوم ببحث إضافي .

المشكلة في تطبيق هذا الأمر أن بعض النسخ( أوفيس و ويندوز)  لسبب أو لآخر تفتقد بعض ملفات DLL

أو أنها تحمل أسماء و مسارات أخرى .

و في حالة ملفات EXE فقد تكون المكتبة المراد إضافتها لا تتوافق مع الملف .

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

في October 13, 2018 at 22:33, Khalf said:

هذا الرابط ..  حول إضافة المراجع آلياً للبرنامج .. و أحسب أنه الأفضل بناء على ما جاء التعليقات ، لم أجربه و ربما قد أحتاج للمساعدة عند تطبيقه .

إن لصق الكود في محرر الفيجوال بيزيك و استدعائه بالأحداث ليس بالمسألة المعقدة و لكن  معاناتي مع نسخ الأوفيس الناقصة و المختلفة (حتى تلك المشتراة عن طريق النت ) هي ما دعتني لطلب المساعدة.

فالمسألة أكثر تعقيداً من إضافة مكتبة فحسب .

كنت أتمنى أن يحظى السؤال باهتمام أكبر عدد من الخبراء ممن أنست منهم معرفة عميقة بملفات النظام و علاقتها بمكتبات الفيجوال ...  - مع الشكر العميق للأستاذ @ابو ياسين المشولي  على مساهمته القيمة و وقته الثمين - مما سيثري الموضوع أكثر ...

فواحدة من أكبر مشكلات البرمجة كما مر معي :

"PLATFORMS COMPATIBILITY  "

فلو كنت قادراً على تبديل نسخة الأفيس على جهاز أو اثنين فكيف بعشرات الأجهزة التي سيعمل البرنامج عليها ، أو على أقل تقدير عمليات جراحية لاستبدال ملف تالف أو تسجيل آخر مفقود أو البحث عن ثالث ضائع !!

كنت قد هممت بتوجيه السؤال لأسماء محددة من رواد الموقع دون إهمال أي من رواده الأكارم إلا أن ذلك قد يدعو بعض الأعضاء من أصحاب الخبرة للإحجام عن المشاركة .

تم تعديل بواسطه Khalf
  • Like 1
رابط هذا التعليق
شارك

3 ساعات مضت, Khalf said:

مرحباً

أولاً أعتذر عن تأخري بالرد حتى الآن و لكن تمهلت بالإجابة ريثما أقوم ببحث إضافي .

المشكلة في تطبيق هذا الأمر أن بعض النسخ( أوفيس و ويندوز)  لسبب أو لآخر تفتقد بعض ملفات DLL

أو أنها تحمل أسماء و مسارات أخرى .

و في حالة ملفات EXE فقد تكون المكتبة المراد إضافتها لا تتوافق مع الملف .

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

إن لصق الكود في محرر الفيجوال بيزيك و استدعائه بالأحداث ليس بالمسألة المعقدة و لكن  معاناتي مع نسخ الأوفيس الناقصة و المختلفة (حتى تلك المشتراة عن طريق النت ) هي ما دعتني لطلب المساعدة.

فالمسألة أكثر تعقيداً من إضافة مكتبة فحسب .

كنت أتمنى أن يحظى السؤال باهتمام أكبر عدد من الخبراء ممن أنست منهم معرفة عميقة بملفات النظام و علاقتها بمكتبات الفيجوال ...  - مع الشكر العميق للأستاذ @ابو ياسين المشولي  على مساهمته القيمة و وقته الثمين - مما سيثري الموضوع أكثر ...

فواحدة من أكبر مشكلات البرمجة كما مر معي :

"PLATFORMS COMPATIBILITY  "

فلو كنت قادراً على تبديل نسخة الأفيس على جهاز أو اثنين فكيف بعشرات الأجهزة التي سيعمل البرنامج عليها ، أو على أقل تقدير عمليات جراحية لاستبدال ملف تالف أو تسجيل آخر مفقود أو البحث عن ثالث ضائع !!

كنت قد هممت بتوجيه السؤال لأسماء محددة من رواد الموقع دون إهمال أي من رواده الأكارم إلا أن ذلك قد يدعو بعض الأعضاء من أصحاب الخبرة للإحجام عن المشاركة .

والمشكله انه كل اوفيس وله رقم

10 يعني 2003

12 يعني 2007

14 يعني 2010

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

16 دقائق مضت, ابو ياسين المشولي said:

والمشكله انه كل اوفيس وله رقم

10 يعني 2003

12 يعني 2007

14 يعني 2010

مرحباً أخي

المسألة حسب ما رأيت أعقد من ذلك فأسماء الملفات و مساراتها و الملفات المفقودة كلها لها دور في جعل الاعتماد على ملفات DLL أمراً غير مستحب .

أما أن نضع متطلبات للتشغيل كالبرامج الكبيرة و الألعاب فهو أمر (( غير مقبول )) في حال كان العمل مجرد ملف إكسل أو قاعدة أكسس صغيرة للعمل في بيئة عمل مغلقة .

 

  • 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