VBA

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

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

 

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

مقدمة

في هذا الدرس، سنغطي كيفية التعامل مع البيانات الديناميكية في VBA. سنركز على كيفية إنشاء تقارير مخصصة وتحديثها تلقائيًا باستخدام VBA في برامج Microsoft Excel و Access. سنستعرض كيفية استخدام VBA لتصفية البيانات، ترتيبها، إنشاء تقارير إحصائية، وتخصيص التنسيق.


1. التعامل مع البيانات الديناميكية في Excel

في Excel، يمكن أن تكون البيانات كبيرة ومتغيرة بشكل مستمر. باستخدام VBA، يمكنك أتمتة العديد من العمليات مثل:

  • تصفية البيانات حسب معايير معينة.
  • ترتيب البيانات تصاعديًا أو تنازليًا.
  • تحديث التقارير بشكل ديناميكي استنادًا إلى البيانات الجديدة.

1.1 تصفية البيانات باستخدام VBA

الهدف من التصفية هو عرض فقط السجلات التي تتوافق مع معايير معينة. يمكنك استخدام VBA لتصفية البيانات بطريقة مرنة.


Sub FilterData()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' تطبيق الفلتر على العمود الأول (الاسم)
ws.Rows(1).AutoFilter Field:=1, Criteria1:="Ali"
End Sub

شرح الكود:

  • ws.Rows(1).AutoFilter: يقوم بتفعيل الفلتر على الصف الأول (الرأس).
  • Field:=1: يعني أن الفلتر سيطبق على العمود الأول (اسم الموظف).
  • Criteria1:="Ali": هذا هو المعيار الذي سيعتمد عليه الفلتر (عرض فقط الموظفين الذين اسمهم "Ali").

1.2 ترتيب البيانات باستخدام VBA

يمكنك ترتيب البيانات في Excel باستخدام VBA من خلال الكود التالي:


Sub SortData()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' ترتيب البيانات تصاعديًا في العمود الأول (الاسم)
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add Key:=ws.Range("A2:A10"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ws.Sort.Apply
End Sub

شرح الكود:

  • ws.Sort.SortFields.Clear: مسح أي ترتيب موجود سابقًا.
  • ws.Sort.SortFields.Add: إضافة ترتيب جديد.
  • Key:=ws.Range("A2:A10"): تحديد نطاق البيانات الذي سيتم ترتيبه.
  • Order:=xlAscending: ترتيب البيانات بترتيب تصاعدي.

1.3 إنشاء تقرير ديناميكي باستخدام VBA

يمكنك استخدام VBA لإنشاء تقرير ديناميكي بناءً على البيانات المتاحة في Excel. على سبيل المثال، إذا كنت تريد إنشاء تقرير عن مجموع الرواتب لكل قسم، يمكنك كتابة الكود التالي:


Sub CreateReport()
Dim ws As Worksheet
Dim reportSheet As Worksheet
Dim lastRow As Long
Dim i As Long
Dim department As String
Dim totalSalary As Double
Set ws = ThisWorkbook.Sheets("Sheet1")
' إنشاء ورقة جديدة للتقرير
Set reportSheet = ThisWorkbook.Sheets.Add
reportSheet.Name = "Report"
' تحديد آخر صف في البيانات
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' جمع البيانات حسب القسم
i = 2 ' بدء من الصف الثاني
Do While i <= lastRow
department = ws.Cells(i, 3).Value ' افتراض أن العمود 3 يحتوي على القسم
totalSalary = 0
' جمع الرواتب للقسم المحدد
Do While ws.Cells(i, 3).Value = department And i <= lastRow
totalSalary = totalSalary + ws.Cells(i, 4).Value ' افتراض أن العمود 4 يحتوي على الراتب
i = i + 1
Loop
' كتابة تقرير القسم والراتب الكلي
reportSheet.Cells(i - 1, 1).Value = department
reportSheet.Cells(i - 1, 2).Value = totalSalary
Loop
MsgBox "تم إنشاء التقرير بنجاح!"
End Sub

شرح الكود:

  • يقوم الكود بإنشاء ورقة جديدة لتخزين التقرير.
  • يتصفح البيانات ويجمع الرواتب حسب القسم.
  • يكتب البيانات في ورقة التقرير.

2. التعامل مع البيانات الديناميكية في Access

في Access، يمكنك أتمتة تقاريرك باستخدام VBA أيضًا. مع Access، يمكنك التعامل مع استعلامات SQL و تقارير Access لتخصيص التقارير حسب البيانات المتاحة.

2.1 إنشاء استعلام ديناميكي باستخدام VBA

الاستعلامات في Access تساعدك على استخراج البيانات بناءً على معايير معينة. باستخدام VBA، يمكنك إنشاء استعلامات ديناميكية بسهولة.


Sub CreateDynamicQuery()
Dim db As DAO.Database
Dim sqlQuery As String
' فتح قاعدة البيانات الحالية
Set db = CurrentDb
' كتابة استعلام SQL ديناميكي
sqlQuery = "SELECT * FROM Employees WHERE Age > 30 ORDER BY Name"
' تنفيذ الاستعلام
DoCmd.SetWarnings False
DoCmd.RunSQL sqlQuery
DoCmd.SetWarnings True
MsgBox "تم تنفيذ الاستعلام بنجاح!"
End Sub

شرح الكود:

  • CurrentDb: يفتح قاعدة البيانات الحالية.
  • DoCmd.RunSQL sqlQuery: ينفذ الاستعلام SQL الذي كتبته.
  • DoCmd.SetWarnings False: تعطيل التحذيرات أثناء التنفيذ.

2.2 إنشاء تقارير مخصصة باستخدام VBA

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


Sub CreateCustomReport()
Dim rptName As String
rptName = "EmployeeReport" ' اسم التقرير
' فتح التقرير في وضع المعاينة
DoCmd.OpenReport rptName, acViewPreview
MsgBox "تم فتح التقرير بنجاح!"
End Sub

شرح الكود:

  • DoCmd.OpenReport: يقوم بفتح التقرير في وضع المعاينة.
  • acViewPreview: يعرض التقرير في وضع المعاينة قبل الطباعة.

3. تخصيص التنسيق في التقارير باستخدام VBA

يمكنك تخصيص تنسيق التقارير باستخدام VBA عن طريق تغيير خصائص الخلايا والألوان والخطوط.

3.1 تخصيص تنسيق الخلايا في Excel باستخدام VBA


Sub FormatReport()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Report")
' تخصيص تنسيق الأعمدة
ws.Columns("A:B").AutoFit
ws.Range("A1:B1").Font.Bold = True
ws.Range("A1:B1").Interior.Color = RGB(0, 0, 255) ' خلفية زرقاء
ws.Range("A1:B1").Font.Color = RGB(255, 255, 255) ' نص أبيض
End Sub

شرح الكود:

  • يقوم الكود بتنسيق الأعمدة وتغيير الخطوط والألوان.

3.2 تخصيص تنسيق التقرير في Access باستخدام VBA


Sub FormatReportInAccess()
Dim rpt As Report
Set rpt = Reports("EmployeeReport")
' تخصيص خلفية التقرير
rpt.Section(acDetail).BackColor = RGB(255, 255, 255) ' خلفية بيضاء
' تخصيص الخط
rpt.Section(acDetail).FontName = "Arial"
rpt.Section(acDetail).FontSize = 12
End Sub

شرح الكود:

  • يقوم الكود بتخصيص تنسيق التفاصيل في التقرير مثل الخلفية والخط.

خاتمة

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

في الدرس القادم، سنتناول التعامل مع واجهات المستخدم (UserForms) وكيفية إنشاء تطبيقات تفاعلية باستخدام VBA في Excel و Access.

تعليقات