الأربعاء، 11 يوليو 2012

Microsoft Excel VBA – Part 1



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

تأتى هذه التدوينة لا لتأصل نظريا لمفهوم VBA أو لتشرح كيفية استخدام تطبيق Microsoft excel ، وانما لتقدم شرحا عن هذه التقنية الرائعة بحق والتى يسمع عنها الكثيرون من مستخدمى حزم مايكروسوفت المكتبية Microsoft Office عامة وتطبيقى Excel و Access خاصة على انها تقدم حلولا عملية لنقل هذه الملفات الى مستوى اكثر ديناميكية  ورحابة والمقصود بالديناميكية هنا هو جعل هذه الملفات اكثر وظيفية ومرونة وتفاعلية مع المستخدم ، وذلك باضافة وحدات برمجية بلغة التطبيقات VBA والتى قدمتها مايكروسوفت اعتمادا على لغة البرمجة الاشهر Microsoft Visual Basic والتى سبق وان استحوذت على اهتمام قطاع عريض من شرائح المطورين ، وجدير بالذكر ايضا ان VBA لايقتصر استخدامه على تطبيقى مايكروسوفت سابقى الذكر فقط وانما يمتد ليشمل MS Word و MS PowerPoint ايضا وفيما يعرف ب VBA-enabled applications او التطبيقات ممكنة VBA مثل Photoshop او Corel Draw وان كان استخدام VBA فى بداية الامر مع تطبيق MS Excel فقط وفى الاصدار الخامس منه (MS Excel 2007 هو الاصدار الثانى عشر).

وينبغى للمتابعين ان يكونوا على دراية كافية بأساسيات استخدام MS Excel لكى يتمكنوا من متابعة هذه التدوينات بفاعلية وسيساعد كثيرا حقا لو امتدت هذه المعرفة لأساسيات البرمجة عامة ، وبداية VBA هى اختصار ل Visual Basic for Application وهى لغة عامة للتطبيقات قدمتها مايكروسوفت بهدف دمجها مع هذه التطبيقات لدعمها ولجعلها اكثر ديناميكية ووظيفية كما تحدثنا من قبل ،فنحن نستطيع استخدام هذه التطبيقات قائمة بذاتها بدون VBA بطريقة عادية جدا، والحديث عن VBA يأتى بنا لمصلح مهم آخر مرتبط به وهو Macro او ماكرو كما ينطق بالعربية ويمكن تعريفة على انه مجموعة مسجلة من الخطوات والتى يمكن استدعائها بواسطة اختصار من لوحة المفاتيح بهدف تسهيل تنفيذ هذه الخطوات ، وعلى سبيل المثال لنفترض اننا فى كل مرة نفتح فيها Worksheet نقوم بانشاء جدول بيانات وهى خطوة فى غاية اليسر كما نعلم ولكننا ننفذها بتكرارية واستمرار وهنا يأتى دور الماكرو حيث كل ماسنفعله اننا سنسجل هذه الخطوات فى ماكرو باسم CreatTable مثلا وباختصارمن لوحة المفاتيح وليكن T ونحفظة ، وبذلك يكون لدينا هذه الخطوات مسجلة فى كل مرة نريد اجرائها ماعلينا سوى الضغط على Ctrl + T لتنفذ تلقائيا وتقوم بانشاء نفس الجدول سابق التسجيل ، ومن ذلك نصل ان الماكرو ماهو الا برنامج بسيط يكتبه المستخدمون بأنفسهم.

ولكى يتضح هذا المفوم اكثر ويبين علاقته ب VBA هيا لنستكشفه بمثال عملى سنوضح فيه كيفية تسجيل ماكرو وكيفية استرجاعه ايضا وستكون امثلتنا على تطبيق MS Excel 2010 فهيا بنا.
لنفترض اننا نعمل على ارقام لمبالغ مالية فى ملف وفى كل مرة نحول هذه المبالغ ل Currency Format ونجعلها بالجنية المصرى ونخصص المنازل العشرية لرقمين عشريين بعد العلامة ، ونتكرر هذه العملية كلما تعاملنا مع هذا الملف بنفس الطريقة وهنا يأتى الحل الاسرع وهو باضافة ماكرو يقوم بالخطوات سالفة الذكر بسرعة وقياسية وبدون المرور على كل هذه الخطوات وتكرارها.

1- نقوم بانشاء ملف Excel جديد ونسميه Macro.xlsx ونضيف الجدول التالى لاول Sheet1.
شكل 1 - جدول Sheet 1

2- نضغط على Record macro من اختيار Macros من تبويب View ويظهر كشكل 2.
شكل 2 - Record macro

3- يظهر مربع Record Macro لنضيف اسم الماكرو واختصار استدعائة ومكان حفظة و وصف الماكرو لاضافة اى ملاحظات نصية نريدها ، نضيف البيانات كما توجد فى شكل 3.
شكل 3 - FormatCurrency

اسم الماكرو FormatCurrency ونراعى ان تكون التسمية اسما واحدا غير منفصل بمسافات والا كانت النتيجة رسالة خطأ تخبرنا بعدم صلاحية الاسم - وسنتكلم عن اعتبارات التسمية فى تدوينة لاحقة باذن الله - ، ونختار مفتاح اختصار لاستدعاء الماكرو وليكن F نكتبه بالضغط على مفتاح Shift وذلك حتى نتمكن من استدعاء الماكرو بالضغط على مفاتيح Ctrl + Shift + F ومنعا لاختلاط وتضارب الوظائف المسبقة الوجود مع مفتاح Ctrl مثل Ctrl + F للبحث عن كلمات فى النص ، واخيرا نضيف وصف نصى بسيط عن وظيفة الماكرو وتاريخ انشاءة ، ومع اعتبار الاختصار والوصف من المدخلات الاختيارية تبقى التسمية فقط اجبارية وغير قابلة للتكرار فى التسمية او مفاتيح الاختصار.
وعند الضغط على OK نلاحظ ظهور مربع ازرق اسفل يسار التطبيق دالا على وضع التسجيل حاليا ويستمر وجوده طوال فترة تسجيل خطوات التطبيق.
4- نقوم بتنفيذ خطوات تحويل صيغة النطاق الى ج. م. وذلك بتحديد النطاق المراد تحويلة ثم بالضغط على Format cells من قائمة الاختيار كشكل 4.
شكل 4 - Format Cells

5- نختار Currency من تبويب Number ونحدد العلامات العشرية ب 2 والرمز المالى ب ج. م. كما نريد وكما يظهر فى الشكل 5.
شكل 5 - Currency

6- ننهى تسجيل الماكرو بالضغط علىStop Recording  من اختيار Macros من تبويب View او بالضغط على المربع الازرق فى اسفل يسار التطبيق لايقاف تسجيل الخطوات للماكرو كشكل 6.
شكل 6 - Stop Recording

7- الآن قد انتهينا من تسجيل خطواتنا مرة واحدة فى ماكروFormatCurrency  ونستطيع تطبيقها فى اى وقت بمجرد تشغيل الماكرو ، ولكى نشغل الماكرو ماعلينا سوى أن نقف فى اى مكان فى Sheet1 ونستدعيه بالضغط على Ctrl + Shift + F أو بالذهاب الى تبويب View  ومنه الى Macros ونضغط على View Macros لتظهر النافذة التاليه لنختار منها اسم الماكرو المطلوب تنفيذه ثم الضغط على Run ، ولاننسى ان نغير صيغة النطاق من العملة الى عام اى من Currency الى General حتى نستطيع أن نرى تأثير عمل الماكرو.
شكل 7 - Run Macro

وبعد أن اتممنا انشاء ماكرو تشغيلة ولم يتبقى سوى حفظة ، وهنا سنتحدث قليلا عن صيغ الملفات فملف MS Excel 2010 يحفظ بامتداد .xlsx وهذه الصيغة اساس ملفات MS Excel الى جانب الصيغة القديمة .xls ونجد اننا لانستطيع ان نحفظ ملفاتنا المحتوية على ماكرو بهذه الصيغة نظرا لتغير اعتبارات الحفظ والامن واذا حاولنا ان نتجاهل رسالة الخطأ عند حفظ الماكرو بهذه الامتدادات ستكون النتيجة هى ضياع الماكرو عند اعادة فتح الملف مرة اخرى ، وهنا ياتى دور امتداد .xlsm والذى يهتم بحفظ الملفات ممكنة الماكرو بالصيغة السابقة والتى تعتمد على اساس XML  ، وذلك بالضغط على ايقونة File ثم على Save As وبكتابة اسم الملف ثم اختيار Excel macro-Enabled Workbook(*.xlsm) والضغط على Save كشكل 8.
شكل 8 - Save Macro

سيحفظ الملف بنجاح وعند اعادة فتحة من جديد سنلاحظ وجود الماكرو ، ويجدر التنويه على اننا اذا قمنا بتغيير امتداد الملف من .xlsm الى xlsx يدويا ستكون الاجابة على هذا التغيير هى برسالة خطأ عند محاولة فتح الملف.

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

والى هنا تنتهى التدوينة وستلحق بقادمة ان شاء المولى لتتناول محتوى الماكرو الى جانب ماهية اكواد VBA وكيفية توظيفها مع شرح لمفهوم الكائن ومايتعلق به من مصطلحات وتوابع ، والى ذلك الوقت دمتم فى رعاية الله وأمنه..


الجمعة، 27 أبريل 2012

الحاسبات ولغات البرمجة - الجزء الأول

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


الحاسبات هى تلك الاجهزة الرائعة والتى تعمل بقدرات مذهله وسريعة متطورة والمنتشرة حولنا فى شتى نواحى الحياة فى تنوع ووظيفية مميزة ، وبالرغم من القدارات العاليه للحاسب الا انه لايقلل من قوة واهمية العامل البشرى فى ادارة العمليات ، فالحواسب اجهزة تتسم بالسرعة الشديدة والانجاز ولكنها صماء تفتقر الى القدرة على التفكير او الابداع اى تحتاج لمن يديرها ويوجه امكانياتها لتحقيق اغراضة وفروضه.
.
وقد تطور الحاسب تطورا مذهلا بحق منذ اول ظهور له فى ثلاثينيات القرن المنصرم وتطورت معه ايضا كفائته وقدراته مما ادى الى انتشاره والتوسع فى استخدامه بعدما كان قاصرا على المؤسسات الحكومية والجامعات وساعد فى ذلك صغر حجمة وتراجع تكلفته ، فقد كانت الحواسب قديما كبيرة الحجم تولد قدرا كبيرا من الحرارة كما كانت بطيئة الاداء لا تستطيع القيام باكثر من عملية واحدة فى نفس الوقت فضلا عن ارتفاع تكلفتها لذا احتاجت لمن يديرها من العناصر البشريه واطلق عليهم مشغلى النظام System Operator  وكانت وظيفتهم هى ادارة الحاسب وتوجيهه للاستفادة من قدراته ، ومع الوقت تطورت الحواسب ومعها تطورت امكانياتها واستخداماتها وقل تدخل العنصر البشرى فى ادارة الحواسب بظهور نظام التشغيل او مايعرف باسم Operating  System  وقد ساعد على ذلك ظهور حاسبات قابله للبرمجة، والصورة التالية فى شكل 1 توضح اول حاسب قابل للبرمجة والذى صممه وصنعه الالمانى كونراد زوس Konrad Zuse وذلك فى عام 1938 واستغرق انشائه عامين واطلق عليه الاسم  Z1.

شكل 1- Z1

وتوالت ابداعات زوس بانشاءه الحاسبات Z2 و Z3 و Z4 والتى اتمها بعد سفره لسويسرا قرب نهاية الحرب العالمية الثانية واستطاع ان يصل بها لدرجة كبيرة من الدقة فى النتائج ، وقد سبقت محاولات زوس بمحاولات متعددة ساهم فيها الكثير من العلماء والذين ابتكروا وطوروا من عمل الحواسب وعلى سبيل الذكر لا الحصر تاتى مجهودات العالم نيومان عام 1945 لتكلل جهود سابقيه من العلماء حيث استطاع نيومان تطوير الحاسب ليتمكن من التخزين الداخلى للبيانات مستخدما النظام الثنائى – يشبة حالتى التيار الكهربى مرور وفصل يرمز لمرور التيار ب 1 وفصل التيار ب 0 اى ان النظام الثنائى يتكون من حالتين او رمزين صفر وواحد - وهو المستخدم حتى الآن.

وتوالت اصدارات الحاسوب منذ ذلك الوقت فى خمسة اجيال متعاقبة تميز فيها كل جيل عن سابقه بصغر الحجم وقلة الحرارة المتولدة واستخدام مواد افضل فى التصنيع مما اثر على كفاءة الحاسب وسرعتة النقل والمعالجة والدقة على حد سواء كما قلت تكلفته نسبيا وظهرت لغات للبرمجة – والتى اخذت طريقها فى التطور ايضا بمرور الوقت وبتقدم مكونات الحاسب - وظهرت انظمة التشغيل المختلفة وانتقل الحاسب من الاستخدامات العسكرية والحكومية والعلمية الى كونه ضرورة من ضروريات الحياة.
وحقيقة لم يكن ابتكار الحاسوب والى وقتنا هذا جهدا فرديا يرجع فضله لشخص بعينه لكونه وبحق مجموعة من المحاولات والابتكارات التى تكاملت معا لتظهر بهذا الشكل الرائع سواء على مستوى العتاد او البرمجيات ، فصناع ومبتكرى الصمامات المفرغة والترانزيستور والدوائر المتكاملة والموصلات وحتى انظمة التبريد والمطورين والمبرمجين والمصممين يسهمون بدور او اكثر فى تشكيل النقلات النوعية باجيال الحاسوب ويؤثرون عليه.

 وجدير بالذكر ايضا ان فكرة الحاسوب ليست فكرة جديدة كليا فعلى العكس يرجع تاريخها الى تاريخ حاجة الانسان نفسه الى مساعد يعنيه ويسهل عليه على القيام بفروضه ، وبداية بالعد على اصابع اليد وانتهاءا بالحاسوب فى اشكاله الحالية مرورا باستخدام الحصى وابتكار العداد البسيط abacus قبل الفى سنة من الميلاد وابتكار العالم الفرنسى باسكال الاله الحاسبة الميكانيكية فى عام 1642 والتى عرفت باسم الباسكالاين Pascaline ومن بعدها آله ليبينز المطورة والتى تلتها بثلاثين سنة ثم آلة غزل جوزيف جاكارد عام 1802 والتى كانت تعمل بالبطاقات المثقبة وتستطيع قرائتها وتنفيذ مافيها على القماش وتعتبر الفكرة الاولى لبرمجة الآلات ، ولانتجاهل هنا جهود تشارلز بابادج Charles Babbage فى تصنيع آلته الحاسبه الميكانيكه اوائل القرن التاسع عشر والتى عملت بالبخار وتميزت بالذاكرة ووحدتى الادخال والاخراج ووحدة الحساب والتعليمات مما ساعدها على استقبال وتنفيذ بعض الاوامر البسيطة ، ووصولا الى عام 1980 ومع دكتور هيرمان هوليريث Dr. Herman Hollerith والذى استطاع تطوير آله جدولة كهروميكانيكية استخدمت البطاقات المثقوبة فى ادخال ومعالجة البيانات – وهو مؤسس شركة IBM لاحقا - ، ونهاية بابداع دكتور اتانوسوف Dr. John V. Atanasoff ومساعده كليفورد بيرى Clifford Berry عام 1939 واللذان صنعا اول حاسب رقمى حقيقى اعتمد فى عمله على النظام الثنائى – الصفر والواحد – واستخدم الدوائر الالكترونية فى عملياته الحسابيه بدلا من العجلات والمفاتيح الميكانيكية كسابقيه والذى سيمهد لحاسوب كونراد زوس فيما بعد كما ذكرنا سابقا ، وبعد تلك اللمحات التاريخية والتى تحتل باسماء علمائها وابتكاراتهم سطورا مضيئة فى تاريخ العلم والبحث هيا بنا لنشاهد صورا لتلك المبتكرات – خصوصا وان كنتم ممن يصيبكم ملل التاريخ والاحداث مثلى -  ففيما يلى صورا توضيحية للعداد البسيط والباسكالاين والبطاقات المثقبة وألة الجدوله لهيرمان وماكينة بابدج واخيرا حاسب اتاناسوف وبيرى.
      
شكل 2 - abacus
شكل 3 - pascaline
شكل 4 - Punch Cards

شكل 5 - hh-tabulator
شكل 6 - Babbage Engine
شكل 7 - atanasoff-berrycomputer
 وتتالى بخطوات اكثر سرعة ابداعات العلماء فى الحواسب وعلى سبيل المثال لا الحصر ياتى حاسب Colossus البريطانى السرى عام 1944 و فى نفس العالم حاسب Harvard Mark 1 القابلين للبرمجة ايضا وان كانت محدودة والمعتمدين على الصمامات المفرغة كليا ثم يأتى Von Neumann فى اوائل الخمسينات ليقدم اساسا  فى ذلك الوقت لبنية الحواسب والبرامج المخزنة وقد تلى ذلك قفزات نوعية باجيال الحواسب خصوصا بعد اخترا الترانزيستور والدوائر المتكاملة وفيما يلى صورة لحاسب Harvard Mark 1:

شكل 8 - Harvard-Mark-1

ومما سبق تتلخص وظيفة الحاسب المجردة الا وهى القيام بالعمليات الحسابية والمنطقية على المدخلات بطريقة سريعة واخراجها فى صورتها النهائية المطلوبة ، ولا تقتصرالمدخلات هنا على الكلام المكتوب فقط من ارقام وحروف والى غيره انما تتنوع المدخلات بتنوع وظيفة الحاسب فقد تكون المدخلات كلمات منطوقة او مسجلة او حتى فيديو قد تكون صورا وخرائط وقد تكون مجرد اوامر كضغطات المفاتيح ، ومن هنا يتبين لنا نواة عمل الحاسب الا وهى عملية المعالجة للبيانات وتحويلها من صورة لصورة اخرى.

وفى وقتنا الآن تتنوع الحواسب لتغطى كافة نواحى الحياة فنراها فى المنازل والمتاجر ومكاتب الحجز وابراج المراقبة ومحطات القطار وشركات الاستضافه والاقمار الصناعية والطائرات والصواريخ الى اخر مايمكن عمله بتلك الاجهزة الرائعة فقصر مفهوم الحاسب على الاجهزة الشخصية او المحمولة هو تجاهل كبير لانواع كثيرة من الحواسب والتى توجد بغير شكلها المعتاد من اجهزة ادخال واخراج فالفيصل فى كون الحاسب حاسبا هو عملية المعالجة ذاتها وعلى ذلك تكون الخوادم والمساعدات الرقمية والروبوتس حاسبات وكذلك دوائر المعالجة والرقاقات الالكترونية المضمنه او المتحكمة فى اجهزة اكبر.

وفى رأيى أن أروع ميزة فى الحواسب هى قابليتها للبرمجة ؛ فالحاسب بدون برمجة لا يزيد عن كونه جهاز اخر يعمل بالكهرباء كالتلفاز مثلا ، والسؤال الان هو كيف يتم برمجة الحاسب او كيف يتم التعامل مع هذا الجهازالرائع لينفذ مانريد وأقصد بالتعامل هنا ليس تعامل المستخدم النهائى انما تعامل المصنع بداية مرورا بالمطور وحاجتهم لتوجيه قدرات الحاسب وتوظيفها ، ولاجابة تكمن فى كلمتين هما " لغات البرمجة " ولغات البرمجة هى تلك اللغات التى تمكننا من استغلال قدرات الحواسب وادارتها بشكل افضل وذلك عن طريق التواصل مع الحواسب بلغة يفهمها وهى لغة الآلة Machine Language  وسيكون هذا اول ماسنغطيه فى تدوينات لاحقة باذن الرحمن.


وحتى نلتقى دمتم فى رعاية الله آمنين..




Microsoft Excel VBA – Part 1

سلام الله عليكم ورحمته وبركاته تأتى هذه التدوينة لا لتأصل نظريا لمفهوم VBA ...