4.4 · الماكرو وبرمجة VBA

المستوى 4 · خبير: Power Query، نموذج البيانات & VBA

4.4الماكرو وبرمجة VBA

الهدف: أتمتة مهمة متكرّرة بماكرو وفهم أساسيات (ومخاطر) VBA.
الوقت المقدّر: 14 دقيقة · قراءة ذاتية · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 30 ثانية

  • سجّل، ثم أعد القراءة: يحفظ ماكرو سلسلة أفعال بـ VBA — فنعيد بنقرة تشغيل تقرير الأسبوع مُنسَّقاً بالمثل.
  • اقرأ المحرّر (Alt+F11) للتقدّم: غيّر نطاقاً أو قيمة أو لوناً في الكود المولَّد — ماكروات قصيرة وموجّهة، تُختبر على نسخة.
  • ردّ فعل وسيم: الماكرو لا يُلغى (Ctrl+Z عاطل) وقد يكون خبيثاً — مصنّف بصيغة .xlsm، ومصادر موثوقة فقط.

حالة مصغّرة متسلسلة — وسيم يعيد تنسيق الاثنين بنقرة

وسيم، محاسب في الجزائر، ينسّق التقرير نفسه كل اثنين (تثبيت الألواح، عناوين عريضة، مبالغ بالدينار، مصفاة تلقائية). يسجّل ماكرو «MiseEnFormeRapport»، ويفتح الكود بـ Alt+F11، ويتعرّف على الأسطر ويضبط النطاق. محفوظاً بصيغة .xlsm، نقرة تعيد كل شيء — مُختبراً أولاً على نسخة، لأن الماكرو لا يُلغى. المعلم الرابع للمسار الرئيسي: المتكرّر في الواجهة صار مؤتمتاً، بتحفّظ.

تكملة حالات 4.1-4.3 — يؤتمت وسيم ما لا يفعله Power Query ولا الصيغ: إيماءات الواجهة.

1. تسجيل ماكرو

يحفظ ماكرو سلسلة أفعال لإعادة تشغيلها. المطوّر ▸ تسجيل ماكرو: نؤدّي الإيماءات (تنسيق، تصفية، لصق…)، ثم نوقف التسجيل. فيولّد Excel كود VBA. وإعادة تشغيل الماكرو تُعيد كل شيء فوراً — مثالي لتقرير وسيم الأسبوعي، مُنسَّقاً بالمثل.

نُبقي ماكروات قصيرة وموجّهة: مهمة = ماكرو. الوحوش التي تفعل كل شيء غير مقروءة وتنكسر عند أول تغيير في البنية.

2. قراءة VBA وتعديله

يُفتح الكود في محرّر VBA (Alt+F11). حتى دون أن تكون مطوّراً، يمكنك قراءته وتعديله: تغيير قيمة، نطاق، لون. إنها أفضل طريقة للتعلّم: سجّل، ثم افهم الكود الناتج — ويتعرّف وسيم سريعاً على أسطر التعريض وتنسيق العملة.

يتعامل VBA مع كائنات (مصنّف، ورقة، نطاق) بـخصائص وطرق: Worksheets، Range، Font.Bold، NumberFormat… وفهم هذه المفردات يكفي لتعديل 80 % من الماكروات المسجّلة.

3. الاحتياطات

يُحفظ مصنّف الماكرو بصيغة .xlsm — وفي .xlsx تُفقَد الماكروات. وقد تكون الماكروات ناقلاً لفيروسات: لا تفعّل إلا ما كان من مصادر موثوقة، بعلم بالسبب. وحدّ آخر: الماكرو لا «يُلغى» (Ctrl+Z لا يتجاوز أفعاله) — لذا نختبر على نسخة.

وأخيراً، لتحويل بسيط للبيانات، Power Query غالباً أفضل من VBA: بلا كود، قابل للتحديث، وأأمن. ويبقى VBA مناسباً لأتمتة إيماءات واجهة متنوّعة (تنسيق، مربّعات حوار، تفاعلات بين الأوراق).

خطأ شائع في الفهم: «الماكروات تُلغى بـ Ctrl+Z، ويمكن تفعيلها من أي مكان، وVBA يحلّ محلّ Power Query في كل شيء». لا في النقاط الثلاث. الماكرو يعدّل المصنّف بلا إمكانية إلغاء — ومن هنا الاختبار على نسخة. وماكرو من مصدر مجهول قد يكون خبيثاً — ومن هنا التفعيل بعلم بالسبب، ومصادر موثوقة فقط. ولتحويل البيانات، Power Query (بلا كود، قابل للتحديث) يتفوّق على VBA؛ ويتألّق VBA في إيماءات الواجهة المتنوّعة.
من الماكرو إلى الكود سجّل الإيماءات، اقرأ VBA الناتج، عدّله، ثم أعد تشغيله تسجيل إيماءات الاثنينكود VBA مولَّد وحدهإعادة قراءة/تعديل نطاقاتوتنسيقاتإعادة تشغيل بنقرة(.xlsm)
سجّل الإيماءات، اقرأ VBA الناتج، عدّله، ثم أعد تشغيله
نص المخطط (SEO / قارئات الشاشة / الترجمة): 1) يسجّل وسيم تنسيقه الأسبوعي عبر المطوّر ▸ تسجيل ماكرو. 2) يفتح الكود بـ Alt+F11 ويتعرّف على أسطر التعريض والتنسيق والتصفية. 3) يعدّل نطاقاً ولوناً، ويحفظ بصيغة .xlsm، ثم يعيد التشغيل على نسخة للتحقّق. 4) الاثنين التالي، نقرة تعيد كل شيء بالمثل. الدرس: سجّل إيماءات، اقرأ VBA، عدّل بتحفّظ، أعد التشغيل — لا أبداً دون نسخة اختبار أو مصدر موثوق.

🔎 مثال ملموس — 🔎 مثال ملموس — أتمتة تنسيق أسبوعي

كل اثنين، ينسّق وسيم التقرير نفسه؛ فيولّد المسجّل هذا الكود VBA:

Sub MiseEnFormeRapport()
    ' تثبيت الألواح + عناوين عريضة (وسيم: تقرير أسبوعي)
    Range("A2").Select
    ActiveWindow.FreezePanes = True
    Rows("1:1").Font.Bold = True
    ' مبالغ بالدينار + مصفاة تلقائية
    Columns("C:C").NumberFormat = "#,##0 DZD"
    Range("A1").AutoFilter
End Sub

القراءة: يحوّل المسجّل نقرات إلى كود قابل لإعادة الاستخدام ومقروء.

الدرس: نؤتمت المتكرّر والقابل للتكرار؛ ونختبر على نسخة (لا إلغاء).

مفردات القسم

الماكرو
سلسلة أفعال مسجّلة لإعادة تشغيلها بنقرة.

مثال بسيط: MiseEnFormeRapport لدى وسيم يعيد تنسيق الاثنين.

ما ليس كذلك: صيغة تُعاد حسابها وحدها.

رد فعل: إيماءة أسبوعية متطابقة: سجّلها بماكرو.

VBA
Visual Basic for Applications: لغة ماكروات Excel (كائنات، خصائص، طرق).

مثال بسيط: يقرأ وسيم Range و Font.Bold في كوده المسجّل.

ما ليس كذلك: لغة M في Power Query (تحضير البيانات).

رد فعل: لتعديل ماكرو: تعرّف على الكائنات والخصائص.

.xlsm
صيغة مصنّف تدعم الماكروات؛ و.xlsx يُفقدها.

مثال بسيط: يحفظ وسيم تقريره المؤتمت بصيغة .xlsm.

ما ليس كذلك: مصنّف .xlsx يحتفظ بالماكروات.

رد فعل: ماكرو منشأ: احفظه فوراً بصيغة .xlsm.

أمان الماكرو
قد تكون الماكروات خبيثة: فعّلها بعلم بالسبب، من مصادر موثوقة.

مثال بسيط: لا يفعّل وسيم إلا ماكرواته وما اعتُمد لدى المكتب.

ما ليس كذلك: كود غير ضارّ بطبعه، يُفعَّل دون تفكير.

رد فعل: ماكرو وارد: تحقّق من المصدر قبل التفعيل.

في التطبيق — عملياً — سجّل ماكرو وأعد قراءته

  1. فعّل تبويب المطوّر، ثم تسجيل ماكرو.
  2. نفّذ تنسيقاً بسيطاً، وأوقف التسجيل.
  3. افتح الكود (Alt+F11) وتعرّف على الأسطر المقابلة.
  4. غيّر قيمة (مثل لون)، واحفظ بصيغة .xlsm، وأعد التشغيل على نسخة.
تؤتمت مهمة متكرّرة وتقرأ/تعدّل الكود المولَّد، بتحفّظ.

سكربت جاهز للقول — أعلن الماكرو للفريق (30 ثانية)

«هذا وسيم: تنسيق تقرير الاثنين مسجّل بماكرو — نقرة تعيد كل شيء: الألواح، التعريض، تنسيق الدينار، المصفاة. المصنّف بصيغة .xlsm، واختبرته على نسخة لأن الماكرو لا يُلغى. لا تفعّلوا إلا ماكرواتنا المعتمدة.»

قُله قبل نشر الملف: ذكّر بـ .xlsm والمصدر الموثوق.

قالب نسخ-لصق — حلقة VBA آمنة على نطاق (مع نسخة اختبار)

Sub NormaliserMontants()
    Dim c As Range
    Application.ScreenUpdating = False
    For Each c In Worksheets("Ventes").Range("C2:C500")
        If IsNumeric(c.Value) Then c.Value = Round(c.Value, 2)
    Next c
    Application.ScreenUpdating = True
    MsgBox "تم ضبط المبالغ (مُختبر على نسخة)."
End Sub

تنسيق أسبوعي

كما وسيم: سجّل الألواح، التعريض، تنسيق DZD والمصفاة — نقرة كل اثنين.

عدّل الكود

غيّر النطاق C2:C500 أو التنسيق في المحرّر: يتبع الماكرو البنية الجديدة.

ماكرو ورد بالبريد

مصدر مجهول: لا تفعّل — اطلب اعتماداً، وحلّل بعلم بالسبب.

بيانات للتحويل

فضّل Power Query (بلا كود، قابل للتحديث) بدل ماكرو هشّ.

حذر: تُفعَّل الماكروات بعلم بالسبب ومن مصادر موثوقة فقط: مصنّف مُفخّخ قد ينفّذ كوداً خبيثاً. احفظ بصيغة .xlsm (وإلّا فُقدت الماكروات) واختبر دائماً على نسخة، لأن الماكرو لا يُلغى بـ Ctrl+Z.

✓ ممارسات جيدة

  • سجّل أولاً، ثم اقرأ الكود للتعلّم.
  • ماكروات قصيرة وموجّهة.
  • اختبر على نسخة (ماكرو لا يُلغى).

✗ أخطاء شائعة

  • تفعيل ماكروات من مصادر مجهولة (فيروسات).
  • نسيان الحفظ بصيغة .xlsm (فُقدان الماكروات).
  • استخدام VBA حيث يفضُل Power Query (تحويل البيانات).

النقاط الأساسية

  • الماكرو يعيد تشغيل سلسلة أفعال؛ وكوده VBA.
  • نسجّل، ثم نقرأ/نعدّل في المحرّر (Alt+F11).
  • مصنّف بماكروات = .xlsm؛ والماكروات = خطر أمني.
  • الماكرو لا يُلغى: اختبر على نسخة.

تحدّي 48 ساعة — طبّقه غداً

على نسخة من تقرير حقيقي: سجّل تنسيقك، أعد قراءة الكود بـ Alt+F11، غيّر قيمة، احفظ بصيغة .xlsm وأعد التشغيل.

قائمة الخروج من القسم
  • أعرف كيف أسجّل وأعيد تشغيل ماكرو موجّه.
  • أعرف كيف أقرأ وأعدّل VBA المولَّد (نطاق، قيمة).
  • أعرف الاحتياطات (.xlsm، نسخة اختبار، مصادر موثوقة).
تقييم ذاتي 1-5: هل أستطيع تعديل سطر VBA دون مساعدة؟هل اختبرت آخر ماكرو على نسخة قبل نشره؟

أسئلة شائعة

ماكرو (VBA) أم Power Query؟

لتحويل/توحيد البيانات: Power Query (بلا كود، قابل للتحديث، أأمن). لأتمتة إيماءات واجهة متنوّعة (تنسيق، مربّعات حوار، تفاعلات)، يبقى VBA مناسباً.

هل يجب تعلّم البرمجة لاستخدام الماكروات؟

لا للتسجيل وإعادة التشغيل؛ وقليل لتعديل الكود. بل هو مدخل جيد إلى البرمجة: سجّل إجراءً واقرأ VBA المقابل.

تحقّق من فهمك

أي احتياط خاص بالماكروات؟

موارد إضافية (اختياري، للتعمّق أكثر)

اختبار المستوى 4أسئلة جديدة وأصعب للتحقق من مكتسباتك