برمجة إكسل - الدرس الأول - ما هي لغة VBA؟
النقاط الأساسية
مقدمة
ما هي لغة VBA
بعض استخدامات لغة VBA في إكسل
الفرق بين VB و VBA
إعدادات الأمان
شريط أدوات المطور Developer
خاتمة
مقدمة
يعتبر برنامج إكسل من البرامج التي تفيد المهندس كثيراً أثناء عمله، فهو يؤمن له إمكانية عمل الحسابات المجدولة بكل سهولة، مع إمكانية تنسيق الصفحة لتكون جاهزة للطباعة.
والبرنامج في وضعه الحالي يلبي احتياجات معظم المستخدمين، ولكن مع هذا فقد زودته الشركة المصنعة بلغة برمجة مدمجة هي لغة فيجوال بيسيك للتطبيقات VBA لتعطيه قوة إضافية بحيث تسمح للمستخدم أن يقوم بنفسه بإضافة ميزات جديدة له.
نقوم في هذه الدروس بشرح بعض ميزات هذه اللغة، وما تضفيه من متعة أثناء العمل على إكسل. ويفضل أن تكون ملماً ولو إلماماً بسيطاً باستخدام فيجوال بيسيك، وسنقوم في هذه الدروس بالتطرق إلى بعض الأمور الأساسية التي تساعدك في البدء بتعلم هذه اللغة.
وسأستخدم برنامج إكسل 2007، ويفترض أن تتوافق هذه الدروس مع معظم إصدارات إكسل الأخرى.
وقبل أن أبدأ أود أن أشير إلى أن شرح التعامل مع برنامج إكسل من خلال لغة VBA قد يحتاج إلى وقت كبير، لذلك سأستعين بأحد الكتب المتخصصة في ذلك وهو Excel 2007 VBA Programming for Dummies، وهو كتاب جيد، لكن هذا لا يعني أنني سأقوم بترجمته، ولكن يمكن القول أني سأقوم بتلخيص بعض الأفكار وعرض أخرى بطريقتي الخاصة، وقد أضيف فصلاً يشرح التعامل مع أوتوكاد من خلال إكسل مع مثال عملي، وهذه الدروس هي لوضع المهتمين على الطريق الصحيح، فمن أراد الاستزادة يمكنه الرجوع إلى ذلك الكتاب أو غيره.
ماهي لغة فيجوال بيسيك للتطبيقات VBA؟
إن VBA هي لغة برمجة من إنتاج شركة مايكروسوفت وهي اختصار للجملة Visual Basic for Application، وهي تستخدم لتطوير برامج تقوم من خلالها بالتحكم ببرامج أخرى مثل جميع برامج أوفيس وأوتوكاد وغيرها.
تخيل أن عندك رجل آلي (روبوت) يتقن التعامل مع إكسل (أو مع أوتوكاد)، ويستطيع أن يقرأ تعليمات أو أوامر معينة تكتبها له وينفذها بسرعة ودقة، إن بيئة البرمجة VBA هي هذا الروبوت والتعلميات التي تقوم بكتابتها هي الأوامر التي تعطيها له ليقوم بتنفيذها.
بعض استخدامات لغة VBA في إكسل
حتى تدرك أهمية VBA سأقوم بذكر بعض الفوائد العملية للتعامل مع هذه اللغة، منها:
إضافة حزمة من النصوص لورقة العمل، كاسم الشركة مثلاً والتاريخ واسمك الشخصي وغيرها من النصوص التي تقوم بإضافتها عادة، وباستخدامك للغة VBA يمكنك إضافة هذه النص بكبسة زر أو بالضغط على اختصار في لوحة المفاتيح.
تنفيذ مجموعة مهام متكررة على أكثر من ورقة عمل، أيضاً يمكنك تنفيذ هذه المهام بكبسة زر بدلاً من تنفيذها خطوة خطوة في كل مرة، وهذا يفيدك في حال كانت العمليات تأخذ وقتاً طويلاً إن تم تنفيذها يدوياً، كما أنها تجنبك الخطأ إن تم كتابة البرنامج بشكل جيد.
إضافة أزرار جديدة إلى شريط الأوامر، وهذه الأزرار تمكنك من تنفيذ أمر أو مجموعة أوامر.
إضافة توابع جديدة غير موجودة في إكسل، فمثلاً يمكنك إضافة تابع لحساب كمية التسليح في مقطع مستطيل خاضع لعزم بناءً على معطيات في خلايا أخرى.
تطوير برنامج متكامل يعمل ضمن بيئة إكسل، أي تصميم نوافذ جديدة وتزويد البرنامج بملف تعلميات وشريط أدوات خاص به وغيرها.
ربط البرامج ببعضها، فيمكنك مثلاً قراءة بعض القيم في إكسل، وبناءً عليها يمكنك كتابة تقرير في برنامج وورد أو تخزينها في قاعدة بيانات أكسس أو أوراكل، كما يمكنك نقل هذه القيم إلى أوتوكاد على شكل رسومات، كل هذا في برنامج VBA.
للتسلية، فمن الممتع أن تعطي برنامج إكسل بعض الأوامر لينفذها لك خاصة إن كانت هذه الأوامر تقوم بعمل طويل. جرب ذلك.
وغيرها...
الفرق بين VB و VBA
ملاحظة: المقصود بلغة VB هنا لغة فيجيوال بيسيك الإصدار السادس أو الخامس، وليس الإصدارات الأحدث وهي VB.net و VB2002 و VB2005 و VB2008 و VB2010، لأن هذه إصدارات للغة مختلفة تماماً عن VB6.
باختصار، من ناحية الأوامر الأساسية لا يوجد فرق بين VB و VBA بل إن المحرك لهاتين اللغتين هو نفسه، لكن لغة VB تعتبر لغة مستقلة يمكننا من خلالها عمل ملفات تنفيذية وبرامج ذات قدرات قوية، أما لغة VBA في نسخة مختصرة من تلك اللغة تأتي مدمجة مع برامج أوفيس وغيرها (مثل أوتوكاد)، تساعدنا في كتابة برامج بسرعة لكن لا يمكننا توزيعها بشكل ملف تنفيذي، كما أننا نحتاج لتشغيلها على جهاز آخر إلى نفس البرنامج الأساسي الذي استخدمنا لغة VBA الخاصة به.
إعدادات الأمان
بما أن لغة VBA هي لغة برمجة فهذا يعني أنه قد يستغلها البعض لإنشاء برامج قد تضر بالحاسب الذي يتم تشغيل هذا البرنامج عليه، لذلك قررت شركة مايكروسوفت إضافة بعض خيارات الأمان للحد من خطورة مثل هذه البرامج.
قبل الحديث عن هذه الخيارات يجب أن نعلم أن برامج VBA يتم تخزينها ضمن ملف الإكسل، وبدءاً من إكسل 2007 يتم التخزين في ملف إكسل خاص ذو لاحقة xlsm بدلاً من التنسيق الأساسي ذو اللاحقة xlsx، وهذا أول عامل أمان.
كما يمكن وضع علامة أو توقيع رقمي (Sign) ضمن الملف نفسه، هذا التوقيع يحوي اسم المبرمج وتاريخ انتهاء الصلاحية، وهذا التوقيع يمكن الحصول عليه من شركة مايكروسوفت.
لتحديد خيارات الأمان ندخل إلى النافذة الخاصة وفق الخطوات التالية:
نضغط على زر برنامج إكسل ثم على Excel Options ثم نختار Trust Center من القائمة ثم نضغط على زر Trust Center Settings ومن النافذة الجديدة نختار Macro Settings من القائمة فيظهر ما يلي:
الشكل (1-1): نافذة خيارات الأمان في إكسل
الخيارات هي:
Disable all macros without notification: هذا الخيار يمنع إكسل من تشغيل برامج VBA المرفقة مع الملف.
Disable all macros with notification: هذا الخيار (وهو الافتراضي) مثل السابق لكن يعطي تنبيهاً للمستخدم بوجود برامج VBA ويسمح له بتشغيلها كما هو موضح لاحقاً.
Disable all macros except digitally signed macros: هذا الخيار مزيج من الخيارين السابقين، فإن كان برنامج VBA لا يحوي توقيعاً رقمياً يتجاهله الإكسل، وإن كان يحوي توقيعاً يعطي المستخدم تنبيهاً يسمح له من خلاله أن يقوم بتشغيل البرنامج أو أن يثق بصاحب التوقيع دائماً، بمعنى أن يتم فتح جميع البرامج الموقعة بنفس التوقيع لاحقاً دون السؤال.
Enable all macros: هذا الخيار يسمح لإكسل بتشغيل أي برنامج دون سؤال المستخدم، ويفضل عدم استخدام هذا الخيار.
عند فتح ملف إكسل يحوي برامج VBA أو (ماكرو) كما تسميه مايكروسوفت ينظر في خيارات الأمان التي حددها له المستخدم مسبقاً، فإن كان قد اختار الخيار الثاني أو الثالث يظهر له تنبيهاً كما هو موضح:
الشكل (1-2): تنبيه وجود برنامج VBA أو ماكرو في الملف الذي يتم فتحه
بالنقر على زر Options تظهر النافذة التالية:
الشكل (1-3): نافذة تفعيل الماكرو الموجود ضمن ملف إكسل الذي نود تشغيله
فإن كنا نثق بأن البرنامج سليم ولا يحوي فيروسات نختار Enable this content ثم OK وإلا نضغط Cancel.
ملاحظة: يمكن أن نعرف أماكن آمنة، وهي مجلدات نضع فيها الملفات التي نثق فيها، فعندما يقوم إكسل بفتح أحد هذه الملفات يقوم بتفعيل البرامج تلقائياً دون سؤال المستخدم.
شريط أدوات المطور Developer:
بشكل افتراضي فإن شريط الأدوات الخاص بالتطوير يكون مخفياً، ويمكن إظهاره بسهولة باتباع الخطوات التالية:
نضغط على زر برنامج إكسل ثم على Excel Options ثم نختار Popular من القائمة الجانبية ثم نقوم بتفعيل خيار Show Developer tab in the Ribbon.
الشكل (1-4): شريط أدوات المطوّر
خاتمة
تعلمنا في هذه العجالة ما هي لغة VBA وماذا يمكن أن تقدم لنا، وعلمنا الفرق بينها وبين لغة VB، وكذلك خيارات الأمان التي يقدمها لنا برنامج إكسل لصد هجمات الفيروسات التي تعتمد في عملها على برامج VBA. أيضاً تعلمنا كيفية إظهار شريط أدوات المطور.