بسم الله الرحمن الرحيم
احبتي في الله
اليوم باذن الله سنقوم بشرح كيفية ربط الفيجوال بيسك دوت نت مع الاكسيل
نقوم بفتح برنامج الفيجوال بيسك دوت نت
ثم نقوم بعمل مشروع جديد
ونقوم باضافة عدد
واحد تكست بوكس textbox
وخمسة زر button
ووضعهم كما بالصورة
وطبعا نقوم من تبويب الخصائص الخاص بالادوات بالتعديل على اي اداة من حيث تغيير الاسم ولون الاداة
وشكلها وحجمها وحجم الخط بداخلها وغيرها وغيرها من خواص
هناك طرق عدة لربط برامج كثيرة بالفيجوال ومنها الاكسيل
وسوف نشرح الطريقة التى احبها واعرفها ايضا وهي ما قمت بشرحها بسلسلة الفيجوال6
وان شاء الله الاختلاف بسيط ولكن الاساس واحد
وهنعتمد على المراجع وهنختار المكتبة الخاصة بالاكسيل داخل المراجع بالفيجوال كما شرحناها سابقا ومن يريد معلومة اضافية
يدخل على سلسلة الفيجوال6 يراجع نفس الدرس المذكور اعلاه وهو ربط الفيجوال بالاكسيل
وهذا هو الرابط
الان نقوم بالذهاب الى قائمة البرنامج الرئيسية ونختار منها بروجيكت ثم Add Reference
ثم نقوم باختيار com
ومنها نختار المكتبة الخاصة بالاكسيل كما موضح بالصورة
الان قمنا بتصميم مشروعنا وقمنا بتجهيز المكتبات اللازمة لعمل البرنامج
ينقص الان كود عمل البرنامج
نضع هذا السطر في اول الكود في ال General في التصريحات العامة
يعني نفتح محرر الاكواد ونيجي على اول سطر بالظبط ونضع هذا الكود به
السطر دا بيربط بين المرجع وبين البرنامج
Imports Excel = Microsoft.Office.Interop.Excel
ثم نقوم بالاعلان عن متغيرات لسهولة التعامل مع الاكسيل من داخل برنامجنا
كما بالكود التالي ولقد قمنا بشرح مثله في سلسلة الفيجوال6
Public Class Form1
'نضع المتغيرات في بداية تصريحات الفورم 1
'المتغير الاول يشير الى برنامج الاكسيل
Dim xlApp As Excel.Application
'المتغير الثاني يشير الى ملف مصنف الاكسيل
Dim xlWorkBook As Excel.Workbook
'المتغير الثالث يشير الى ورقة العمل
Dim xlWorkSheet As Excel.Worksheet
End Class
ثم نضع في حدث تحميل الفورم الكود التالي
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
xlApp = New Excel.ApplicationClass 'فتح برنامج الاكسيل جديد
xlWorkBook = xlApp.Workbooks.Open("d:\test.xlsx") 'فتح ملف اكسيل
xlWorkSheet = xlWorkBook.Worksheets("sheet1")'تم الاشارة للمتغير هنا بالورقة 1
xlApp.Visible = False'اخفاء البرنامج
End Sub
ثم نأتي للزر الاول وهو زر الادخال وهو ادخال القيمة الموجودة في تكست بوكس1 الى ملف الاكسيل في العمود A وكلما ادخلنا قيمة يضعها تحت الاخرى
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim last As Long'نقوم بانشاء متغير من نوع long
'قمنا بتعريف المتغير هنا على اساسا حساب عدد الصفوف بالعمود الاول التى يوجد بها بيانات بالاضافة +1
last = xlWorkSheet.Cells(xlWorkSheet.Rows.Count, "a").End(Excel.XlDirection.xlUp).Row + 1
'هنا نحدد الخلية a& last
وهي اخر خليه بها بيانات بالاضافة 1 للكتابة في السطر التالي الفارغ قيمة ما بداخل التكست بوكس1
xlWorkSheet.Range("a" & last).Value = TextBox1.Text
End Sub
الكود التالي زر اظهار برنامج الاكسيل
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'كود سهل وهو اظهار برنامج الاكسيل
xlApp.Visible = True
End Sub
الكود التالي زر اخفاء برنامج الاكسيل
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
xlApp.Visible = False
End Sub
الكود التالي زر حفظ التغييرات بملف الاكسيل
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
xlWorkBook.Save()
End Sub
الكود التالي اغلاق برنامج الاكسيل والغاء تعريف المتغيرات
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
xlWorkBook.Save()
xlWorkBook.Close()
xlApp.Quit()
xlApp = Nothing
xlWorkBook = Nothing
xlWorkSheet = Nothing
MsgBox("تم اغلاق ملف الاكسيل")
End Sub
وبكدا نكون انتهينا من شرح الكود وربط الاكسيل بالفيجوال
وهذا هو الكود كامل
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
xlApp = New Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Open("d:\test.xlsx")
xlWorkSheet = xlWorkBook.Worksheets("sheet1")
xlApp.Visible = False
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
xlApp.Visible = True
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim last As Long
last = xlWorkSheet.Cells(xlWorkSheet.Rows.Count, "a").End(Excel.XlDirection.xlUp).Row + 1
xlWorkSheet.Range("a" & last).Value = TextBox1.Text
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
xlWorkBook.Save()
xlWorkBook.Close()
xlApp.Quit()
xlApp = Nothing
xlWorkBook = Nothing
xlWorkSheet = Nothing
MsgBox("تم اغلاق ملف الاكسيل")
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
xlWorkBook.Save()
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
xlApp.Visible = False
End Sub
End Class
انا قمت بوضع مثال لتكست بوكس فقط للتوضيح انا عايز منكم فهم الشرح وتطبيقه على نطاق اوسع شوية من المثال الموجود
يعني عاوز برامج بجد شغل يعتمد عليه مش مجرد مثال
يلا عايز اشوف شغل مش كلام
ومش هحط مرفق نهائي الان لحد لما نشوف التفاعل والشغل
تقبلو تحياتي
ياسر العربي
يتبع
الإبتساماتإخفاء