واحدة من أكثر الصفات البارزة في Visual Basic هو أنه اكتمال بيئة التطوير. كل ما تريد القيام به ، هناك "نكهة" في Visual Basic لمساعدتك في أداء المهمة! يمكنك استخدام Visual Basic لتطوير سطح المكتب والجوال والبعيدة (VB.NET) ، والبرمجة النصية (VBScript) وتطوير Office (VBA !) إذا كنت قد جربت VBA وترغب في معرفة المزيد حول كيفية استخدامه ، هذا هو البرنامج التعليمي بالنسبة لك. (تعتمد هذه الدورة على إصدار VBA الموجود في Microsoft Office 2010.)
إذا كنت تبحث عن دورة تدريبية في Microsoft Visual Basic .NET ، فقد وجدت أيضًا المكان المناسب. راجع: Visual Basic .NET 2010 Express - A "من الألف إلى الياء" البرنامج التعليمي
سيتم تغطية VBA كمفهوم عام في هذه المقالة. هناك ما هو أكثر من VBA مما قد يعتقد! يمكنك أيضًا العثور على مقالات حول شقيقات Office VBA:
هناك طريقتان أساسيان لتطوير البرامج التي يمكن أن تعمل مع تطبيقات Office: VBA و VSTO. في أكتوبر 2003 ، قدمت شركة Microsoft تحسينًا لبيئة البرمجة الاحترافية Visual Studio .NET تسمى أدوات Visual Studio for Office - VSTO. ولكن على الرغم من أن VSTO تعزز المزايا الكبيرة لـ .NET في Office ، إلا أن VBA لا يزال أكثر شعبية من VSTO. يتطلب VSTO استخدام الإصدار Professional أو إصدار أعلى من Visual Studio - والذي قد يكلفك على الأرجح أكثر من تطبيق Office الذي تستخدمه - بالإضافة إلى تطبيق Office. ولكن نظرًا لأن VBA مدمج مع تطبيق Office المضيف ، فلن تحتاج إلى أي شيء آخر.
يتم استخدام VBA بشكل أساسي من قبل خبراء Office الذين يرغبون في جعل عملهم أسرع وأسهل. نادرا ما ترى أنظمة كبيرة مكتوبة في VBA. VSTO ، من ناحية أخرى ، يستخدمه المبرمجون المحترفون في المؤسسات الأكبر لإنشاء وظائف إضافية يمكن أن تكون متطورة للغاية. من المرجح أن تتم كتابة طلب من جهة خارجية ، مثل شركة الورق لـ Word أو شركة محاسبة لبرنامج Excel ، باستخدام VSTO.
في وثائقهم ، تلاحظ Microsoft أن هناك ثلاثة أسباب لاستخدام VBA بشكل أساسي:
-> الأتمتة والتكرار - يمكن لأجهزة الكمبيوتر أن تفعل الشيء نفسه مرارًا وتكرارًا بشكل أفضل وأسرع مما يمكن للناس.
-> الامتدادات إلى تفاعل المستخدم - هل تريد أن تقترح بالضبط كيف ينبغي للشخص تنسيق وثيقة أو حفظ ملف؟ VBA يمكن أن تفعل ذلك. هل تريد التحقق من صحة ما يدخل شخص ما؟ VBA يمكن أن تفعل ذلك أيضا.
-> التفاعل بين تطبيقات Office 2010 - تسمى المقالة الأحدث في هذه السلسلة Word و Excel العمل معًا. ولكن إذا كان هذا هو ما تحتاجه ، فقد ترغب في التفكير فيه أتمتة المكاتبأي كتابة النظام باستخدام VB.NET ثم استخدام الوظائف من تطبيق Office مثل Word أو Excel حسب الحاجة.
صرحت Microsoft بأنها ستستمر في دعم VBA وظهرت بشكل بارز في الرسمية مايكروسوفت أوفيس 2010 خريطة طريق التنمية. لذلك لديك الكثير من الضمانات التي تقدمها Microsoft من أي وقت مضى بأن استثماراتك في تطوير VBA لن تكون قديمة في المستقبل القريب.
من ناحية أخرى ، يعد VBA هو آخر منتج Microsoft متبقي يعتمد على تقنية VB6 "COM". لقد تجاوز عمرها العشرين عامًا الآن! في السنوات البشرية ، من شأنه أن يجعلها أكبر سنا من Lestat مصاص الدماء. قد ترى أن ذلك "مجرب ومختبر وصحيح" أو قد تفكر في ذلك على أنه "قديم ، مهلك ، قديم." أميل إلى تفضيل الوصف الأول ولكن يجب أن تكون على دراية بالحقائق.
أول شيء يجب فهمه هو العلاقة بين تطبيقات VBA و Office مثل Word و Excel. تطبيق Office هو مضيف ل VBA. لا يمكن تنفيذ برنامج VBA من تلقاء نفسه. تم تطوير VBA في بيئة المضيف (باستخدام مطور علامة تبويب في شريط تطبيق Office) ويجب تنفيذها كجزء من مستند Word أو مصنف Excel أو قاعدة بيانات Access أو بعض مضيف Office الآخر.
الطريقة المستخدمة بالفعل VBA مختلفة أيضا. في تطبيق مثل Word ، يتم استخدام VBA بشكل أساسي كطريقة للوصول إلى كائنات بيئة المضيف مثل الوصول إلى الفقرات في مستند باستخدام Word's Word. وثيقة. كائن الفقرات. تساهم كل بيئة مضيفة بالكائنات الفريدة غير المتوفرة في بيئات المضيف الأخرى. (على سبيل المثال ، لا يوجد "مصنف" في مستند Word. يعد المصنف فريدًا في Excel.) رمز Visual Basic موجود بشكل أساسي لتمكين استخدام الكائنات المخصصة لكل تطبيق مضيف Office.
يمكن رؤية الانصهار بين VBA ورمز المضيف المحدد في نموذج التعليمات البرمجية هذا (مأخوذ من Microsoft نموذج قاعدة بيانات Northwind) حيث يظهر رمز VBA المحض باللون الأحمر ويظهر رمز محدد في Access أزرق. سيكون الرمز الأحمر هو نفسه في Excel أو Word ولكن الرمز الأزرق فريد في تطبيق Access هذا.
VBA نفسه هو نفسه تقريبا كما كان لسنوات. تم تحسين الطريقة التي يتكامل بها مع تطبيق Office المضيف ونظام التعليمات أكثر.
لا يعرض إصدار Office 2010 علامة تبويب Developer افتراضيًا. تنقلك علامة تبويب المطور إلى جزء التطبيق حيث يمكنك إنشاء برامج VBA ، لذا فإن أول ما عليك فعله هو تغيير هذا الخيار. ما عليك سوى الانتقال إلى علامة التبويب "ملف" والخيارات وتخصيص "الشريط" وانقر فوق مربع "المطور" في "علامات التبويب الرئيسية".
يعمل نظام المساعدة بشكل أكثر سلاسة مما كان عليه في الإصدارات السابقة. يمكنك الحصول على مساعدة لأسئلة VBA الخاصة بك إما دون اتصال بالإنترنت ، من نظام مثبت مع تطبيق Office الخاص بك ، أو عبر الإنترنت من Microsoft عبر الإنترنت. تم تصميم الواجهتين لتبدو متشابهة:
انقر هنا لعرض الرسم التوضيحي
إذا كان اتصالك بالإنترنت سريعًا ، فستوفر لك المساعدة عبر الإنترنت معلومات أكثر وأفضل. لكن الإصدار المثبت محليًا ربما يكون أسرع وفي معظم الحالات يكون بنفس الجودة. قد ترغب في جعل المساعدة المحلية هي الإعداد الافتراضي ، ثم استخدام المساعدة عبر الإنترنت إذا كان الإصدار المحلي لا يمنحك ما تريد. أسرع طريقة للاتصال بالإنترنت هي ببساطة اختيار "All Word" (أو "All Excel" أو تطبيق آخر) من القائمة المنسدلة Search "بحث". سيتم ذلك فورًا عبر الإنترنت وإجراء نفس البحث ، لكنه لن يعيد تعيين اختيارك الافتراضي.
انقر هنا لعرض الرسم التوضيحي
في الصفحة التالية ، بدأنا في كيفية إنشاء برنامج VBA بالفعل.
عندما يتم "استضافة" VBA بواسطة تطبيق مثل Word أو Excel ، فإن البرنامج "يعيش" في ملف المستند الذي يستخدمه المضيف. على سبيل المثال ، في Word يمكنك حفظ "ماكرو Word" (إنه ليس "ماكرو" ، لكننا لن نخوض في المصطلحات الآن) إما في مستند Word أو قالب Word.
لنفترض الآن أن برنامج VBA هذا تم إنشاؤه في Word (هذا البرنامج البسيط يغير الخط إلى غامق لخط محدد) ويتم حفظه في مستند Word:
Sub AboutMacro () ' حول ماكرو ماكرو. "سجل ماكرو 9/9/9999 بواسطة دان مابوت. ' اختيار. HomeKey Unit: = wdStory. اختيار. وحدة EndKey: = wdLine ، تمديد: = wdExtend. اختيار. الخط. غامق = wdToggle. اختيار. وحدة EndKey: = wdStory. نهاية الفرعية.
في الإصدارات السابقة من Office ، يمكنك رؤية رمز VBA المخزّن بوضوح كجزء من المستند ملف في مستند Word المحفوظة عن طريق عرضها في المفكرة حيث يمكن لكل شيء في مستند Word رأيت. تم إنتاج هذا الرسم التوضيحي بإصدار سابق من Word لأن Microsoft غيرت تنسيق المستند في الإصدار الحالي ولم يظهر رمز برنامج VBA بوضوح كنص عادي بعد الآن. لكن الرئيسي هو نفسه. وبالمثل ، إذا قمت بإنشاء جدول بيانات Excel باستخدام "ماكرو Excel" ، فسيتم حفظه كجزء من ملف .xlsm.
انقر هنا لعرض الرسم التوضيحي
VBA والأمن
كانت إحدى الحيل الأكثر فاعلية لفيروسات الكمبيوتر في الماضي إدراج رمز VBA الضار في مستند Office. مع الإصدارات السابقة من Office ، عندما تم فتح المستند ، يمكن أن يعمل الفيروس تلقائيًا ويحدث فسادًا على جهازك. بدأت هذه الثغرة الأمنية المفتوحة في Office في التأثير على مبيعات Office والتي لفتت انتباه Microsoft حقًا. مع الجيل الحالي من Office 2010 ، قامت شركة Microsoft بتوصيل الفتحة تمامًا. بالإضافة إلى التحسينات المذكورة هنا ، قامت Microsoft بتحسين أمان Office بطرق قد لا تلاحظها حتى مستوى الأجهزة. إذا كنت مترددًا في استخدام VBA لأنك سمعت أنه لم يكن آمنًا ، فتأكد من أن Microsoft قد قطعت شوطًا إضافيًا لتغيير ذلك الآن.
كان التغيير الأكثر أهمية هو إنشاء نوع مستند خاص فقط لمستندات Office التي تتضمن برامج VBA. في Word ، على سبيل المثال ، لا يمكن أن يحتوي MyWordDoc.docx على برنامج VBA لأن Word لن يسمح بالبرامج في ملف محفوظ بملحق ملف "docx". يجب حفظ الملف كـ "MyWordDoc.docm" لبرمجة VBA للسماح به كجزء من الملف. في Excel ، ملحق الملف هو ".xlsm".
لمتابعة هذا النوع المحسن من المستندات ، أنشأت Microsoft نظامًا فرعيًا جديدًا للأمان في Office يسمى مركز التوثيق. بشكل أساسي ، يمكنك تخصيص كيفية تعامل تطبيق Office مع المستندات التي تحتوي على رمز VBA بتفاصيل دقيقة. يمكنك فتح "مركز التوثيق" من علامة التبويب "المطور" في تطبيق Office الخاص بك عن طريق النقر فوق "أمان الماكرو" في قسم "الرمز" من الشريط.
انقر هنا لعرض الرسم التوضيحي
تم تصميم بعض الخيارات "لتصلب" تطبيقات Office الخاصة بك حتى لا يتم تشغيل التعليمات البرمجية الضارة وغيرها مصمم لتسهيل على المطورين والمستخدمين استخدام VBA دون الحاجة إلى إبطاء الأمان دون داع أسفل. كما ترون ، هناك العديد من الطرق التي يمكنك بها تخصيص الأمان وتجاوز كل هذه الأمور خارج نطاق هذه المقالة. لحسن الحظ ، يحتوي موقع Microsoft على وثائق مستفيضة حول هذا الموضوع. ومن حسن الحظ أيضًا أن إعدادات الأمان الافتراضية جيدة لمعظم المتطلبات.
نظرًا لأن VBA مرتبط بتطبيق Office المضيف ، يجب تشغيله هناك. يتم تغطية هذا الموضوع ابتداء من الصفحة التالية.
كيف يمكنني تشغيل تطبيق VBA
هذا في الواقع سؤال جيد للغاية لأنه أول سؤال يطرحه مستخدمو تطبيقك. هناك أساسا طريقتان:
-> إذا قررت عدم استخدام عنصر تحكم ، مثل زر ، لبدء البرنامج ، فعليك استخدام أمر وحدات الماكرو في الشريط (علامة تبويب المطور ، مجموعة التعليمات البرمجية). حدد برنامج VBA وانقر فوق "تشغيل". ولكن هذا قد يبدو أكثر من اللازم لبعض المستخدمين لديك. على سبيل المثال ، قد لا ترغب في أن تكون علامة المطور متاحة لهم. في هذه الحالة ...
-> تحتاج إلى إضافة شيء يمكن للمستخدم النقر فوقه أو كتابته لبدء التطبيق. في هذه المقالة ، سوف ننظر إلى عنصر تحكم زر. ولكن قد يكون النقر فوق اختصار أو رمز على شريط أدوات أو حتى عملية إدخال البيانات. تسمى هذه أحداث وما سنكتبه في هذا المقال ولاحقا المقالات رمز الحدث - رمز البرنامج الذي يتم تشغيله تلقائيًا عند حدوث حدث معين - مثل النقر فوق عنصر تحكم زر.
UserForms ، عناصر تحكم النموذج وعناصر تحكم ActiveX
إذا كنت لا تختار فقط ماكرو ، فإن الطريقة الأكثر شيوعًا لتشغيل برنامج VBA هي النقر فوق زر. هذا الزر يمكن أن يكون إما شكل السيطرة أو عنصر تحكم ActiveX. إلى حد ما ، تعتمد اختياراتك على تطبيق Office الذي تستخدمه. يوفر Excel خيارات مختلفة قليلاً عن Word ، على سبيل المثال. لكن هذه الأنواع الأساسية من الضوابط هي نفسها.
نظرًا لأنه يوفر أكبر قدر من المرونة ، دعنا ننظر إلى ما يمكنك القيام به مع Excel 2010. سيتم إدراج رسالة نصية بسيطة في خلية عند النقر فوق عدة أزرار مختلفة فقط لجعل الاختلافات أكثر وضوحًا.
للبدء ، قم بإنشاء مصنف Excel جديد وحدد علامة تبويب المطور. (إذا كان لديك تطبيق Office آخر ، فيجب أن تعمل مجموعة متنوعة من هذه التعليمات.)
انقر أيقونة إدراج. سنعمل مع زر "عناصر تحكم النموذج" أولاً.
عناصر تحكم النموذج هي التقنية القديمة. في Excel ، تم تقديمها لأول مرة في الإصدار 5.0 في عام 1993. سنعمل مع UserBorms VBA التالي ولكن لا يمكن استخدام عناصر تحكم النماذج معهم. كما أنها غير متوافقة مع الويب. يتم وضع عناصر تحكم النموذج مباشرة على سطح ورقة العمل. من ناحية أخرى ، لا يمكن استخدام بعض عناصر تحكم ActiveX - التي نعتبرها بعد ذلك - مباشرة في أوراق العمل.
يتم استخدام عناصر تحكم النماذج مع تقنية "النقر والسحب". انقر فوق عنصر تحكم النموذج زر. سوف يتغير مؤشر الماوس إلى علامة الجمع. ارسم التحكم بالسحب على السطح. عند تحرير زر الماوس ، ينبثق مربع حوار يطلب أمر ماكرو للاتصال به.
انقر هنا لعرض الرسم التوضيحي
خاصةً عندما تقوم بإنشاء عنصر تحكم لأول مرة ، لن يكون لديك ماكرو VBA في انتظار الاتصال به الزر ، لذلك انقر فوق جديد وسيتم فتح محرر VBA بالاسم المقترح المملوء بالفعل في قشرة الحدث روتين فرعي.
انقر هنا لعرض الرسم التوضيحي
لإكمال هذا التطبيق البسيط للغاية ، ما عليك سوى كتابة بيان رمز VBA هذا داخل Sub:
الخلايا (2 ، 2) .Value = "النقر فوق زر النموذج"
زر ActiveX هو بالضبط نفس الشيء. أحد الاختلافات هو أن VBA يضع هذا الرمز في ورقة العمل ، وليس في وحدة نمطية منفصلة. إليك رمز الحدث الكامل.
Sub CommandButton1_Click () الخلايا (4 ، 2) .Value = "النقر فوق زر ActiveX" نهاية الفرعية.
بالإضافة إلى وضع عناصر التحكم هذه مباشرة في ورقة العمل ، يمكنك أيضًا إضافة أ المستخدم للمشروع ووضع الضوابط على ذلك بدلا من ذلك. UserForms - حول نفس الشيء مثل نماذج Windows - لديها الكثير من المزايا في القدرة على إدارة عناصر التحكم الخاصة بك مثل تطبيق Visual Basic العادي. إضافة UserForm إلى المشروع في محرر Visual Basic. استخدم القائمة عرض أو انقر بزر الماوس الأيمن في Project Explorer.
انقر هنا لعرض الرسم التوضيحي
الافتراضي لـ UserForm هو ليس عرض النموذج. لجعله مرئيًا (وجعل عناصر التحكم فيه متاحة للمستخدم) ، قم بتنفيذ طريقة إظهار النموذج. أضفت زر شكل آخر فقط لهذا الغرض.
Sub Button2_Click () UserForm1.Show. نهاية الفرعية.
ستلاحظ أن UserForm هو مشروط بشكل افتراضي. هذا يعني أنه عندما يكون النموذج نشطًا ، يكون كل شيء آخر في التطبيق غير نشط. (النقر فوق الأزرار الأخرى لا يفعل شيئًا ، على سبيل المثال.) يمكنك تغيير هذا عن طريق تغيير خاصية ShowModal من UserForm إلى False. ولكن هذا يجعلنا أعمق في البرمجة. سوف تشرح المقالات التالية في هذه السلسلة المزيد حول هذا الموضوع.
يتم وضع رمز UserForm في كائن UserForm. إذا حددت عرض التعليمات البرمجية لكل الكائنات في Project Explorer ، فسترى أن هناك ثلاثة برامج فرعية لحدث Click منفصلة موجودة في ثلاثة كائنات مختلفة. لكنها كلها متاحة لنفس المصنف.
انقر هنا لعرض الرسم التوضيحي
بالإضافة إلى فرض حدث عن طريق النقر فوق زر ، يتم استخدام VBA أيضًا للرد على الأحداث في الكائنات في تطبيق الاستضافة. على سبيل المثال ، يمكنك اكتشاف متى يتغير جدول بيانات في Excel. أو يمكنك اكتشاف وقت إضافة صف إلى قاعدة بيانات في Access وكتابة برنامج للتعامل مع هذا الحدث.
بالإضافة إلى أزرار الأوامر المألوفة ومربعات النص والمكونات الأخرى التي تراها في البرامج طوال الوقت ، يمكنك إضافة مكونات تشكل جزءًا من جدول بيانات Excel في مستند Word الخاص بك. أو تفعل العكس. هذا يتجاوز مجرد "نسخ ولصق". على سبيل المثال ، يمكنك إظهار جدول بيانات Excel في مستند Word.
يتيح لك VBA استخدام القوة الكاملة لتطبيق Office في تطبيق آخر. على سبيل المثال ، لدى Word قدرة حسابية بسيطة نسبياً مضمنة. لكن اكسل - جيدا - "تتفوق" في الحساب. افترض أنك تريد استخدام السجل الطبيعي لوظيفة Gamma (حساب رياضي متطور نسبياً) في مستند Word الخاص بك؟ باستخدام VBA ، يمكنك تمرير القيم إلى هذه الوظيفة في Excel واستعادة الإجابة في مستند Word الخاص بك.
ويمكنك استخدام أكثر بكثير من تطبيقات Office! إذا قمت بالنقر فوق أيقونة "مزيد من عناصر التحكم" ، يمكنك رؤية قائمة كبيرة من الأشياء المثبتة على جهاز الكمبيوتر الخاص بك. لا تعمل جميع هذه "خارج الصندوق" ، ويجب أن يكون لديك الوثائق الخاصة بكل منها ، لكن هذا يعطيك فكرة عن مدى دعم VBA.
من بين جميع الميزات الموجودة في VBA ، هناك ميزة مفيدة بشكل واضح أكثر من أي ميزة أخرى. معرفة ما هو على الصفحة التالية.
لقد أنقذت الأفضل للأخير! فيما يلي تقنية يتم تطبيقها عبر اللوحة على جميع تطبيقات Office. ستجد نفسك تستخدمه كثيرًا لذا نحن نغطيها هنا في المقدمة.
عندما تبدأ في ترميز برامج VBA الأكثر تطوراً ، فإن إحدى المشكلات الأولى التي ستواجهها هي كيفية معرفة أساليب وخصائص كائنات Office. إذا كنت تكتب برنامج VB.NET ، فغالبًا ما تبحث عن نماذج التعليمات البرمجية وأمثلة لحل هذه المشكلة. ولكن عندما تفكر في جميع تطبيقات الاستضافة المختلفة وحقيقة أن كل منها يحتوي على مئات الكائنات الجديدة ، لا يمكنك عادةً العثور على شيء يطابق بالضبط ما عليك القيام به.
الجواب هو "سجل ماكرو ..."
الفكرة الأساسية هي تشغيل "Record Macro" ، وتصفح خطوات عملية تشبه ما تريد أن ينجزه البرنامج ، ثم تحقق من برنامج VBA الناتج للحصول على التعليمات البرمجية والأفكار.
يخطئ الكثير من الناس في التفكير في أنه يجب أن تكون قادرًا على تسجيل البرنامج الذي تحتاجه بالضبط. لكن ليس من الضروري على الإطلاق أن نكون بهذا الدقة. من الجيد عادةً تسجيل برنامج VBA يكون "قريبًا" مما تريد ثم إضافة تعديلات الكود لجعله يقوم بالمهمة بدقة. إنه أمر سهل ومفيد لدرجة أنني سأقوم أحيانًا بتسجيل عشرات البرامج مع وجود اختلافات طفيفة فقط لمعرفة ما هي اختلافات الكود في النتيجة. تذكر حذف جميع التجارب عندما تنتهي من النظر إليها!
على سبيل المثال ، قمت بالنقر فوق "تسجيل ماكرو" في محرر Word Visual Basic وكتبت عدة أسطر من النص. ها هي النتيجة. (تمت إضافة عمليات متابعة الخط لجعلها أقصر.)
ماكرو 1 () ' "ماكرو 1 ماكرو. ' ' اختيار. نص نوع النص: = _. "هذه هي الأوقات التي" اختيار. نص نوع النص: = _. "جرب أرواح الرجال. ال " اختيار. نص نوع النص: = _. "جندي الصيف" اختيار. نص نوع النص: = _. "وشمس المشرق باتريوت" اختيار. نص نوع النص: = _. "سوف ، في هذه الأوقات ، يتقلص من" اختيار. نص نوع النص: = _. "خدمة بلادهم." اختيار. MoveUp Unit: = wdLine ، Count: = 1. اختيار. HomeKey Unit: = wdLine. اختيار. وحدة MoveRight: = wdCharacter ، _. عدد: = 5 ، تمديد: = wdExtend. اختيار. الخط. غامق = wdToggle. نهاية الفرعية.
لا أحد يدرس VBA فقط لنفسه. تستخدمها دائمًا مع تطبيق Office معين. لذلك ، للاستمرار في التعلم ، توجد مقالات هنا توضح استخدام VBA مع كل من Word و Excel:
-> الشروع في العمل باستخدام VBA: شريك عمل Word
-> الشروع في العمل باستخدام VBA: شريك عمل Excel