VBA

الدرس العاشر: التعامل مع الملفات الخارجية باستخدام VBA (Excel و Access)

الدرس العاشر: التعامل مع الملفات الخارجية باستخدام VBA (Excel و Access)
الدرس العاشر: التعامل مع الملفات الخارجية باستخدام VBA (Excel و Access)

 الدرس العاشر: التعامل مع الملفات الخارجية باستخدام VBA (Excel و Access)

مقدمة

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

يعد التعامل مع الملفات الخارجية مهارة أساسية في البرمجة باستخدام VBA، حيث يُمكنك أتمتة العديد من المهام مثل قراءة البيانات من ملفات نصية أو التصدير و الاستيراد بين Excel و Access.


1. التعامل مع الملفات النصية (Text Files) باستخدام VBA

الملفات النصية تعتبر واحدة من أسهل أنواع الملفات التي يمكن التعامل معها باستخدام VBA. يمكنك قراءة البيانات من ملفات TXT أو CSV وتخزينها داخل خلايا Excel أو في جداول Access.

1.1 فتح وقراءة البيانات من ملف نصي

لنفترض أن لدينا ملف نصي يحتوي على بيانات مثل الأسماء، والعناوين، وأرقام الهواتف. نريد قراءتها باستخدام VBA ووضعها في خلايا Excel.


Sub ReadFromTextFile()
Dim filePath As String
Dim fileNumber As Integer
Dim line As String
Dim rowNum As Integer
filePath = "C:\path\to\your\file.txt" ' مسار الملف النصي
fileNumber = FreeFile ' الحصول على رقم الملف المتاح
Open filePath For Input As fileNumber ' فتح الملف للقراءة
rowNum = 1 ' تحديد الصف الأول لكتابة البيانات في Excel
Do While Not EOF(fileNumber) ' التكرار حتى نهاية الملف
Line Input #fileNumber, line ' قراءة سطر من الملف
Cells(rowNum, 1).Value = line ' وضع السطر في الخلية
rowNum = rowNum + 1 ' الانتقال للصف التالي
Loop
Close fileNumber ' إغلاق الملف بعد الانتهاء
End Sub

شرح الكود:

  • filePath: يحتوي على مسار الملف النصي الذي نريد قراءته.
  • fileNumber: يُستخدم لفتح الملف باستخدام رقم الملف المتاح.
  • Line Input #fileNumber, line: يقرأ سطرًا من الملف النصي ويخزنه في المتغير line.
  • Cells(rowNum, 1).Value = line: يضع السطر في الخلية المحددة في Excel.
  • EOF(fileNumber): يتحقق ما إذا وصلنا إلى نهاية الملف.
  • Close fileNumber: يغلق الملف بعد الانتهاء.

1.2 كتابة البيانات إلى ملف نصي

يمكنك أيضًا كتابة البيانات إلى ملف نصي باستخدام VBA. لنفترض أنك تريد كتابة محتويات خلايا Excel إلى ملف نصي.


Sub WriteToTextFile()
Dim filePath As String
Dim fileNumber As Integer
Dim rowNum As Integer
Dim line As String
filePath = "C:\path\to\your\output.txt" ' مسار الملف الذي نكتب فيه
fileNumber = FreeFile ' الحصول على رقم الملف المتاح
Open filePath For Output As fileNumber ' فتح الملف للكتابة
For rowNum = 1 To 10 ' تكرار عبر 10 صفوف
line = Cells(rowNum, 1).Value ' أخذ القيمة من الخلية
Print #fileNumber, line ' كتابة السطر إلى الملف النصي
Next rowNum
Close fileNumber ' إغلاق الملف بعد الانتهاء
End Sub

شرح الكود:

  • filePath: يحتوي على مسار الملف الذي نريد الكتابة فيه.
  • Print #fileNumber, line: يكتب السطر إلى الملف النصي.

2. التعامل مع ملفات Excel باستخدام VBA

يمكنك أيضًا فتح ملفات Excel أخرى وقراءتها أو كتابتها باستخدام VBA. لنفترض أنك تريد استيراد بيانات من ملف Excel آخر، أو تصدير البيانات إلى ملف جديد.

2.1 فتح ملف Excel آخر وقراءة البيانات


Sub ReadFromAnotherExcelFile()
Dim wb As Workbook
Dim ws As Worksheet
Dim filePath As String
Dim cellValue As Variant
filePath = "C:\path\to\your\file.xlsx" ' مسار الملف المراد قراءته
Set wb = Workbooks.Open(filePath) ' فتح الملف
Set ws = wb.Sheets(1) ' تحديد الورقة الأولى
cellValue = ws.Cells(1, 1).Value ' قراءة قيمة الخلية A1 من الورقة
MsgBox "القيمة الموجودة في A1 هي: " & cellValue ' عرض القيمة
wb.Close False ' إغلاق الملف دون حفظ التغييرات
End Sub

شرح الكود:

  • Workbooks.Open(filePath): يفتح الملف الموجود في المسار المحدد.
  • ws.Cells(1, 1).Value: يقرأ القيمة من الخلية A1 في الورقة الأولى.
  • wb.Close False: يغلق الملف دون حفظ التغييرات.

2.2 كتابة البيانات إلى ملف Excel آخر


Sub WriteToAnotherExcelFile()
Dim wb As Workbook
Dim ws As Worksheet
Dim filePath As String
filePath = "C:\path\to\your\output.xlsx" ' مسار الملف الذي نكتب فيه
Set wb = Workbooks.Add ' إنشاء ملف Excel جديد
Set ws = wb.Sheets(1) ' تحديد الورقة الأولى
ws.Cells(1, 1).Value = "Hello, Excel!" ' كتابة نص في الخلية A1
wb.SaveAs filePath ' حفظ الملف بالمسار المحدد
wb.Close ' إغلاق الملف بعد حفظه
End Sub

شرح الكود:

  • Workbooks.Add: ينشئ ملف Excel جديد.
  • ws.Cells(1, 1).Value = "Hello, Excel!": يكتب النص في الخلية A1.
  • wb.SaveAs filePath: يحفظ الملف بالمسار المحدد.

3. التعامل مع قاعدة بيانات Access باستخدام VBA

في Access، يمكنك استخدام VBA للتفاعل مع قواعد البيانات وفتح الجداول والاستعلامات. إليك كيفية قراءة البيانات من جدول و إدخال بيانات جديدة.

3.1 قراءة البيانات من جدول في Access


Sub ReadFromAccessDatabase()
Dim db As Object
Dim rs As Object
Dim sqlQuery As String
Dim connectionString As String
' إنشاء سلسلة الاتصال بقاعدة البيانات
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb"
' تنفيذ الاستعلام
Set db = CreateObject("ADODB.Connection")
db.Open connectionString
sqlQuery = "SELECT * FROM YourTable"
Set rs = db.Execute(sqlQuery)
' التكرار عبر السجلات وعرض البيانات
Do While Not rs.EOF
Debug.Print rs.Fields(0).Value ' عرض القيمة في نافذة Immediate
rs.MoveNext ' الانتقال للسجل التالي
Loop
rs.Close
db.Close
End Sub

شرح الكود:

  • CreateObject("ADODB.Connection"): لإنشاء اتصال بقاعدة بيانات Access.
  • rs.Fields(0).Value: لقراءة قيمة الحقل الأول في السجل الحالي.
  • rs.MoveNext: للانتقال إلى السجل التالي.

3.2 إدخال بيانات إلى جدول في Access


Sub InsertIntoAccessDatabase()
Dim db As Object
Dim sqlQuery As String
Dim connectionString As String
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb"
Set db = CreateObject("ADODB.Connection")
db.Open connectionString
' تنفيذ استعلام لإدخال بيانات جديدة
sqlQuery = "INSERT INTO YourTable (Field1, Field2) VALUES ('Value1', 'Value2')"
db.Execute sqlQuery
db.Close
End Sub

شرح الكود:

  • sqlQuery = "INSERT INTO YourTable (Field1, Field2) VALUES ('Value1', 'Value2')": يقوم بإدخال بيانات جديدة إلى الجدول.

خاتمة

في هذا الدرس، تعلمنا كيفية قراءة البيانات من ملفات نصية و Excel، وكيفية كتابة البيانات إليها باستخدام VBA. كما تعلمنا كيفية التفاعل مع قاعدة بيانات Access باستخدام ADODB للقراءة والإدخال.

تعليقات