الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تنفيذ إجراءات الماكرو من داخل VBA

مغلق
بدأه ؛ أحمد ؛ في 25 يناير 2007 · 5 رد · 2,280 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

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

وبعد

فأحببت أن تكون أول مشاركاتي في قسم برمجة الأكسس عبارة عن مجموع دروس تنفيذ إجراءات الماكرو من داخل VBA

وأرجو منكم التفضل بالتعليق على الموضوع وإفادتي إن كان الموضوع موجود من قبل حيث أني لم أجده في المنتدى ولا أعلم إن كان أحد قد سبقني إلى تقديمه من قبل أم لا

بداية يجب أن نضع ملحوظة مهمة وهي

أننا سوف نتعامل وع إجراءات الماكرو بواسطة VBA عن طريق الأمر docmd فيقوم الأمر بإخبار البرنامج بأني سأقوم بتنفيذ ماكرو

وأول إجراء نبدأ به هو إجراء Close وهو يستخدم لغلق أحد عناصر قاعدة البيانات

وصيغته العامة:

docmd.close opjecttype, objectname, save

حيث استخدمنا الأمر docmd كما قلنا لنخبر البرنامج أننا سنقوم باستخدام أحد إجراءات الماكرو ثم نضع نقطة فيقوم البرنامج بعرض قائمة بها الإجراءات أختار منها الإجراء close وبقية الكود عبارة عن الوسائط المستخدمة في الإجراء وهي بالترتيب نوع الكائن، اسم الكائن، حفظ

فمثلا لإغلاق نموذج معين من خلال رز نقوم بعمل الخطوات التالية

أولا: نقوم برسم زر على النموذج

ثانيا: من نافذة الكود الخاصة بالزر نكتب الكود التالي

Docmd.close form, formname, save

وبهذا نكون انتهينا من شرح الإجراء close أرجو أن تقوموا بالتعليق وإسداء النصح

وجزاكم الله خيرا

#2

اخي الفاضل asn

السلام عليكم ورحمة الله وبركاته

بارك الله فيك على هذا الشرح

ولنا بعض التعليقات على هذا الموضوع فكما تعلم ان الماكرو ما هو الا اجراء معين لحدث او عدة احداث يمكن جمعها في ماكرو واحد ولا يرتقي هذا الماكرو الى كود بمعنى الكلمة او دالة فهو اصغر من الكود نظرا لمحدوديته في التعامل مع الاحداث الكبيره .

لهذا فقد نحتاج في بعض الاحيان الى انشاء ماكرو ويمكن استدعاؤه عن طريق الكود من الـ VBA من خلال الدالة RunMacro

DoCmd.RunMacro "هنا يتم وضع اسم الماكرو"

او يمكن تحويل الماكرو الى كود VBA من خلال الدالة RunCommand والاجراء acCmdConvertMacrosToVisualBasic ولكن يجب قبلها اختيار اسم الكائن وهو هنا الماكرو ثم يتم استدعاء هذا الحدث من خلال زر امر

Private Sub ConvertMacro_Click()
DoCmd.SelectObject acMacro, "A", True
DoCmd.RunCommand acCmdConvertMacrosToVisualBasic
End Sub

السطر الأول هو لإختيار الكائن وهو هنا ماكرو بإسم A ويجب ان يكون على True اي يتم الإنتقال اليه عن طريق كائنات قاعدة البيانات

السطر الثاني اجراء التحويل من الماكرو الى وحدة نمطية او كود VBA

#3

الأخت الفاضلة / زهرة

السلام عليكم ورحمة الله وبركاته

جزاك الله خيرا على تفاعلك وعلى إضاح عدة نقاط لي وعلى جهدك الرائع في هذا المنتدى

وأسأل الله سبحانه وتعالى أن يبارك فيك وأن يزيدك علما وأن ينفع بك وأن يجعل عملك خالصا لوجهه وفي ميزان حسناتك

أما بعد

أختي الفاضلة

أردت في هذه الدروس أن أقوم بشرح فكرة إنشاء الماكرو نفسها وليس استدعاء الماكرو

فأنا عندما أريد أن أضع زرا في النموذج وأردت أن أضع له حدث معين على سبيل المثال الغلق في المثال المشروح أعلاه فيمكنني أن أقوم بعمله عن طريق الماكرو باختيار الإجراء أو يمكنني أن أقوم بعمل وليس فتح الماكرو ولكن إنشاءه عن طريق الكود بالطريقة السابقة وسوف نرى إن شاء الله في الأمثلة التالية كيفية إنشاء العديد من التطبيقات الخاصة بالماكرو عن طريق الكود مثل إجراء find record أو الإجراء copy object أو domenuitem

وأخيرا أرجو أن تتقبلي فائق احترامي وتقديري

#4

السلام عليكم

اضافة أخرى أرى أنها مهمة

يمكن حفظ الماكرو من حفظ باسم بصيغة وحدة نمطية عندها سيتحول الماكرو

الى كود ممكن ان تستخدمه في الجزء الذي تلاغب من برنامجك وهذا مفيد عند رغبة إخفاء الماكرو

تحياتي Ekseer

تم تعديل هذه المشاركة بواسطة ekseer في 27 يناير 2007 في 14:44

#5

بسم الله

نواصل أخوتي الكرام موضوع إنشاء إجراءات الماكرو عن طريق الكود

والإجراء التالي هو إجراء gotocontrol

ويستخدم هذا الإجراء للانتقال إلى عنصر معين من عناصر التحكم فوق النموذج كمربع نص أوحقل معين في الجدول

وصيغته العامة

Docmd.gotocontrol controlname

ولا يوجد لهذا الإجراء أي وسائط

الإجراء findrecord

يستخدم هذا الإجراء للبحث عن قيمة معينة

الصيغة العامة

Docmd.findrecord findwhat, match, matchcase, searchdirection, searchasformatted, onlycurrentfield, findfirst

وسائط الإجراء:

Findwhat: نقوم بتحديد القيمة المراد البحث عنها

Match: تحديد مكان البحث داخل الحقل

Matchcase: حالة الأحرف من حيث كونها capital or small وهو بالطبع خاص باللغة الإنجليزية دون العربية

Searchdirection: لتحديد اتجاه البحث فإذا كتبنا acdown سيتم البحث في السجلات التي تلي هذا السجل وفي حالة كتابة acup سيتم البحث داخل السجلات التي تسبق هذا السجل أما إذا أردنا أن نقوم بالبحث داخل جميع السجلات وهو الوضع الافتراضي لهذا الإجراء نكتب acsearchall

Searchasformated: لتحديد تنسيق معين للالقيمة وتكون يقيمتي true or false لتحديد التقيد بالتنسيق من عدمه

Onlycurrentfield: لتحديد الحقل المراد البحث داخله فإذا أردنا البحث داخل جميع الحقول نكتب acall

أما إذا أردنا البحث داخل الحقل الحالي نكتب accurrent

Firstfield: إذا اخترت true فسيتم البحث من أول سجل أما إذا اخترت false فسيتم البحث بداية من السجل التالي

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

ملحوظة

أحبتي في الله لا تنسوا صيام يومي الغد وبعد الغد وهما يومي 9 – 10 محرم الموافق 28 – 29 يناير للأحاديث الواردة عن النبي صلى الله عليه وسلم في فضل صيامهما ولمعرفة هذه الأحاديث يمكن الذهاب إلى هذا الرابط

www.altawhed.com

#6

نواصل موضوع إنشاء ماكرو بواسطة الكود

سنقوم الآن بعمل قاعدة بيانات خاصة بطلاب مدرسة

فنقوم بعمل سجلات لكل من

1- اسم الطالب ونضع له الاسم name

2- السنة الدراسية ونضع له الاسم class

3- العنوان address

4- رقم الهاتف phone

ثم نقوم بعمل نموذج لهذا الجدول ونضع فيه زرين لتجربة الأكواد التي قمنا بشرحها

الزر الأول نقوم بوضع تسمية توضيحية له باسم خروج

والثاني بحث

ثم في نافذة الكود الخاصة بالزر الأول نكتب الكود التالي :

Docmd.close

فيقوم البرنامج بإنشاء ماكرو لغلق هذا النموذج

وفي زر البحث نكتب الكود التالي:

Dim x as string

نقوم بتعريف متغير من النوع النصي

X = inputpox ("أدخل اسم الطالب")

نجعل هذا المتغير يقوم باستدعاء صندوق إدخال لإدخال اسم الطالب المراد البحث عنه

Docmd.gotocontrol "name"

للبحث في خانة الاسم وعمل البحث في هذه الخانة فقط

Docmd.findrecord x

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

نواصل موضوع إنشاء ماكرو بواسطة الكود

سنقوم الآن بعمل قاعدة بيانات خاصة بطلاب مدرسة

فنقوم بعمل سجلات لكل من

1- اسم الطالب ونضع له الاسم name

2- السنة الدراسية ونضع له الاسم class

3- العنوان address

4- رقم الهاتف phone

ثم نقوم بعمل نموذج لهذا الجدول ونضع فيه زرين لتجربة الأكواد التي قمنا بشرحها

الزر الأول نقوم بوضع تسمية توضيحية له باسم خروج

والثاني بحث

ثم في نافذة الكود الخاصة بالزر الأول نكتب الكود التالي :

Docmd.close

فيقوم البرنامج بإنشاء ماكرو لغلق هذا النموذج

وفي زر البحث نكتب الكود التالي:

Dim x as string

نقوم بتعريف متغير من النوع النصي

X = inputpox ("أدخل اسم الطالب")

نجعل هذا المتغير يقوم باستدعاء صندوق إدخال لإدخال اسم الطالب المراد البحث عنه

Docmd.gotocontrol "name"

للبحث في خانة الاسم وعمل البحث في هذه الخانة فقط

Docmd.findrecord x

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

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…