VBA

الدرس الخامس: إنشاء تقارير ديناميكية باستخدام VBA في Excel و Access

الدرس الخامس: إنشاء تقارير ديناميكية باستخدام VBA في Excel و Access
الدرس الخامس: إنشاء تقارير ديناميكية باستخدام VBA في Excel و Access

 

الدرس الخامس: إنشاء تقارير ديناميكية باستخدام VBA في Excel و Access

مقدمة

في بيئة العمل، التقارير هي العنصر الأساسي لاتخاذ القرارات. باستخدام VBA، يمكنك إنشاء تقارير ديناميكية وسريعة تُحدث البيانات تلقائيًا بناءً على معايير محددة. هذه المهارة توفر الوقت وتحسن دقة التحليل.

في هذا الدرس سنتناول:

  1. أهمية التقارير الديناميكية.
  2. كيفية تصميم تقرير ديناميكي باستخدام Excel.
  3. إنشاء تقرير باستخدام Access و VBA.
  4. مشروع عملي: تقرير مبيعات شهري.

1. أهمية التقارير الديناميكية

  • توفير الوقت: بدلاً من تحديث البيانات يدويًا، تقوم الأكواد بتحديثها تلقائيًا.
  • دقة أعلى: يقلل VBA من أخطاء التحديث اليدوي.
  • تحليل مخصص: يمكنك ضبط التقارير لتناسب احتياجات معينة (مثل تحديد فترة زمنية أو تصفية بيانات).

2. تصميم تقرير ديناميكي باستخدام Excel و VBA

2.1 خطوات إعداد التقرير

  1. اجمع البيانات في جدول Excel (مثل المبيعات، الموظفين، أو المنتجات).
  2. أضف أعمدة تحتوي على معلومات مثل التاريخ، الفئات، والقيم المالية.
  3. استخدم VBA لإنشاء تقرير يعتمد على شروط معينة.

2.2 مثال: تقرير مبيعات شهري

لنفترض أن لديك جدول يحتوي على:

  • اسم المنتج (Product Name).
  • كمية المبيعات (Sales Quantity).
  • التاريخ (Date).

الكود:


Sub GenerateMonthlyReport()
Dim wsData As Worksheet, wsReport As Worksheet
Dim lastRow As Long, reportRow As Long
Dim monthFilter As Integer, yearFilter As Integer
' إعداد أوراق العمل
Set wsData = ThisWorkbook.Sheets("Data") ' الورقة التي تحتوي على البيانات
Set wsReport = ThisWorkbook.Sheets("Report") ' الورقة التي ستعرض التقرير
' تفريغ التقرير القديم
wsReport.Cells.Clear
wsReport.Range("A1:C1").Value = Array("Product Name", "Sales Quantity", "Date")
reportRow = 2 ' بداية التقرير من الصف الثاني
' تحديد الشهر والسنة المطلوبة
monthFilter = 11 ' نوفمبر
yearFilter = 2024
' العثور على آخر صف في بيانات المصدر
lastRow = wsData.Cells(wsData.Rows.Count, 1).End(xlUp).Row
' تصفية البيانات وإنشاء التقرير
Dim i As Long
For i = 2 To lastRow
If Month(wsData.Cells(i, 3).Value) = monthFilter And Year(wsData.Cells(i, 3).Value) = yearFilter Then
wsReport.Cells(reportRow, 1).Value = wsData.Cells(i, 1).Value ' اسم المنتج
wsReport.Cells(reportRow, 2).Value = wsData.Cells(i, 2).Value ' كمية المبيعات
wsReport.Cells(reportRow, 3).Value = wsData.Cells(i, 3).Value ' التاريخ
reportRow = reportRow + 1
End If
Next i
MsgBox "تم إنشاء التقرير بنجاح!", vbInformation
End Sub

شرح الكود:

  1. قمنا بتحديد الشهر والسنة المطلوبة للتقرير.
  2. يتم تصفية البيانات الموجودة في الورقة "Data" بناءً على التاريخ.
  3. النتائج تُنسخ إلى ورقة "Report" بتنسيق واضح.

3. إنشاء تقرير باستخدام Access و VBA

3.1 خطوات الإعداد

  1. قم بإنشاء قاعدة بيانات تحتوي على جدول (مثل جدول المبيعات).
  2. أضف نموذج إدخال بيانات لتحديث الجدول.
  3. استخدم VBA لإنشاء تقرير يحتوي على البيانات المطلوبة.

3.2 مثال: تقرير مبيعات حسب المنتج

لنفترض أن لديك قاعدة بيانات تحتوي على:

  • جدول: Sales
  • أعمدة: ProductName، SalesQuantity، SalesDate.

الكود:


Private Sub GenerateReport_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim reportQuery As String
Dim reportForm As Form
' الاتصال بقاعدة البيانات
Set db = CurrentDb
' استعلام لإنشاء التقرير
reportQuery = "SELECT ProductName, SUM(SalesQuantity) AS TotalSales " & _
"FROM Sales " & _
"WHERE Month(SalesDate) = 11 AND Year(SalesDate) = 2024 " & _
"GROUP BY ProductName " & _
"ORDER BY TotalSales DESC"
' فتح الاستعلام وتعبئة النموذج
Set rs = db.OpenRecordset(reportQuery)
Set reportForm = Forms("SalesReportForm") ' اسم النموذج الذي سيعرض التقرير
reportForm.RecordSource = reportQuery
reportForm.Requery
MsgBox "تم إنشاء التقرير بنجاح!", vbInformation
End Sub

شرح الكود:

  1. قمنا بإنشاء استعلام SQL لتجميع البيانات حسب المنتج.
  2. النتائج تُعرض في نموذج مخصص لعرض التقرير.

4. مشروع عملي: تقرير مبيعات شهري (Excel و Access)

4.1 الخطوات في Excel

  • أنشئ جدول بيانات يحتوي على عمود:
    • اسم المنتج.
    • كمية المبيعات.
    • التاريخ.
  • استخدم الكود المذكور سابقًا لإنشاء التقرير.

4.2 الخطوات في Access

  • أنشئ جدول مبيعات بنفس الحقول.
  • أضف استعلامًا أو نموذجًا للعرض.

5. نصائح لتحسين التقارير

  1. استخدام التنسيق الشرطي:

    • أضف ألوانًا للنتائج البارزة (مثل المنتجات ذات المبيعات الأعلى).
    • في Excel، يمكنك تطبيق تنسيقات بناءً على القيم.
  2. إضافة رسومات بيانية:

    • استخدم الرسوم البيانية لتوضيح البيانات.
    • في Excel، يمكنك إضافة رسم بياني تلقائي باستخدام VBA:

      Sub AddChart()
      Dim ws As Worksheet
      Dim chartObj As ChartObject
      Set ws = ThisWorkbook.Sheets("Report")
      Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=400, Top:=50, Height:=300)
      With chartObj.Chart
      .ChartType = xlColumnClustered
      .SetSourceData Source:=ws.Range("A1:B10")
      .HasTitle = True
      .ChartTitle.Text = "تقرير المبيعات"
      End With
      End Sub
  3. تحديث البيانات تلقائيًا:

    • قم بإعداد زر لتحديث البيانات في Access أو Excel بضغطة واحدة.

خاتمة

التقارير الديناميكية باستخدام VBA تضيف قيمة كبيرة لأي نظام عمل. سواء كنت تستخدم Excel أو Access، فإنك تستطيع أتمتة العمليات وتحليل البيانات بدقة. في الدرس القادم، سنتعلم كيفية إنشاء قواعد بيانات متقدمة باستخدام VBA.

إذا كان لديك مشروع تقرير معين ترغب في إنشائه، اطرحه وسنساعدك في تصميمه! 😊

تعليقات