طريقة ربط الفيجوال بيسك 6 بالإكسيل

بسم الله الرحمن الرحيم
 
اليوم سنقوم بشرح طريقة ربط الفيجوال بيسك بالإكسيل
اولا نعمل مشروع جديد
عبارة عن فورم
وواحد كمبوبوكس
وسته تكست
وثمانية ليبل
وخمس أزرار
وملف اكسيل بامتدادxlsx واسمه aseel امتداده اظن لا يدعم وحدات الماكرو بس عادي مع الفيجوال شغال
بنفس ترتيب الشكل الاتي:
undefined
خلصنا الشكل السابق
ندخل علي الشغل الجديد بقي
كلنا أكيد سمعنا عن المتغيرات وكلنا تعاملنا معاها
قبل ما نشوف المتغيرات
الفيجوال عشان نربطه بالإكسيل لازم له مراجع ومتغيرات عامة على مستوى المشروع بأكمله
إيه الكلام دا
بيتعمل ازاي المرجع دا ولا بنجيبه منين شوفو معايا الصور
undefined
567e79e7a59a1_3(893x678).png.f562844620b
بعد الخطوات دي  ياترى بنعرف نضيف موديول زي ما بنضيف فورم جديد كدا
اللي بيعرف يضيف اللي مش عارف ينزل للصورة معايا ويشوف

567e7a2e4a205_4(892x506).png.efa5a60116c
567e7a434501a_5(902x202).png.a26aff9c8c8
ايه البيانات دي يامعلمين
دي بقي المتغيرات العامة اللي بنقول عليها وبتكون علي مستوى المشروع بأكمله
يعني لازم تتحط في موديول
ولتبسيط الكلام اللي فوق دا بطريقة سهلة
اول سطر
      Public YXL As New Excel.Application
YXL
دا متغير يشير الى برنامج الاكسيل نفسه بمعنى عندما نريد ان نكتب في الاكسيل
Application. Visible = False
نكتبه كدا
YXL. Visible = False
اكيد وصلت  الفكرة ولو مش وصلت نكمل مثال كمان
المتغير ونظيره في الإكسيل
YWB= Workbook
YSheet= Worksheet
YRng= Range
اكيد الامور اصبحت سهلة كدا
أي كود في الإكسيل نستبدل المذكورين في أعلاه بنظره في الإكسيل وسيعمل الكود بإذن الله
يعني مش هتخترع اكواد جديدة هي نفس القديمة بس تعديلات طفيفه
المهم  الكل يكون عمل الفورم والموديول والاداوت كما ذكرت سابقا بالترتيب الموجود
عشان الاكواد متتبدلش مع الادوات
نيجي بقي للاكواد
Private Sub Combo1_Click()
'جدا الكمبوبوكس ومنه بيتم جلب البيانات بمعلومية الرقم والكود طبعا مفيهوش جديد نفس اكواد الاكسل
With YSheet
     LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
     For iRow = 6 To LastRow
                  If .Cells(iRow, 2) = Combo1.Text Then
                      Text1.Text = .Cells(iRow, 2)
                      Text2.Text = .Cells(iRow, 3)
                      Text3.Text = .Cells(iRow, 4)
                      Text4.Text = .Cells(iRow, 5)
                      Text5.Text = .Cells(iRow, 6)
                      Text6.Text = .Cells(iRow, 7)
     End If
     Next
     End With
End Sub
Private Sub Command1_Click()
Dim lstrow As Long
'ودا كود ترحيل البيانات ونفس الشئ مش جديد كل اللي اتغير اللي ذكرنااه 
If Text1.Text = "" Then
MsgBox "íÌÈ ÇÏÎÇá ÌãíÚ ÇáÈíÇäÇÊ"
Else
lstrow = YSheet.Range("b20000").End(xlUp).Row + 1
YSheet.Cells(lstrow, "b").Value = Text1.Text
YSheet.Cells(lstrow, "c").Value = Text2.Text
YSheet.Cells(lstrow, "d").Value = Text3.Text
YSheet.Cells(lstrow, "e").Value = Text4.Text
YSheet.Cells(lstrow, "f").Value = Text5.Text
YSheet.Cells(lstrow, "g").Value = Text6.Text
 Text1.Text = ""
 Text2.Text = ""
 Text3.Text = ""
 Text4.Text = ""
 Text5.Text = ""
 Text6.Text = ""
MsgBox ("ÊãÊ ÇáÚãáíÉ ÈäÌÇÍ")
End If
End Sub
Private Sub Command2_Click()
'ودا كود اظهار برنامج الاكسيل بردو غيرنا اللي اشرنا ليه فقط
YXL.Visible = True
End Sub
Private Sub Command3_Click()
' ودا لاخفاء برنامج الاكسل
YXL.Visible = False
End Sub
Private Sub Command4_Click()
'لحفظ البرنامج  المفروض المتغير يكون شغال بس مش عارف سبب المشكلة ايه حاليا فقلت اجرب  الكود العادي اشتغل تمام مشي حالك
'åäÇ ãÔ ÚÇÑÝ ÇáãÊÛíÑ åäÇ ÞÝÔ ãÚÇíÇ æãÔ ÚÇíÒ íÍÝÙ ÞáÊ ÇÌÑÈ ÇáßæÏ ÇáÚÇÏí ÇÔÊÛá ÞáÊ Òí ÇáÝá
'YWB.save
ActiveWorkbook.save
End Sub
Private Sub Command5_Click()
'وطبعاخروج 
YXL.Quit
Set YXL = Nothing
End
End Sub
Private Sub Form_Load()
'هنا بنستدعي ملف الاكسيل من نفس مسار البرنامج بتاعنا ونفتحه
YXL.Workbooks.Open App.Path & "/aseel.xlsx"
'اخفاء البرنامج بعد فتحه طبعا
YXL.Visible = False
'هنا بقي قولنا له ان يخلي Ysheet دي تبقى الشيت الاول والاكس شيت تبقي الشيت التاني
Set YSheet = YXL.Worksheets(1)
Set XSheet = YXL.Worksheets(2)
عادي ليبل وبياخد بياناته من خليه معينه
Label7.Caption = YSheet.Range("a1").Value
Label8.Caption = YSheet.Range("a2").Value

With Combo1
'ودا ا لكمبوبوكس بندرج فيه بيانات الصف b
For Each Data In YSheet.Range("b6:b" & YSheet.Cells(Rows.Count, "b").End(xlUp).Row)
.AddItem Data
Next
End With
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
ودا بقي عشان لما تدوس علي علامة الاكس فوق ميخرجشي من البرنامج ويسيب ملف الاكسيل مفتوح ومخفى ''
YXL.Quit
Set YXL = Nothing
End
End Sub
وبكدا نكون انتهينا من وضع الاكواد اظن الكل واخد باله انه مفيش جديد 
وهو دا بالتحديد مفيش جديد 
كل اللي عملناه واحد تايه وعرفنا السكه خلاص 
وبعدين
محدش ينسى يعمل ملف اكسيل اه بعد دا كله يجي حد يقولي البرنامج مش شغال ليه اقوله فين ملف الاكسيل 
بعد الاطلاع علي البرنامج هيجي واحد يقولي ايه القلب الجميل اللي علي الفورم دا اللي مكان السهم
اهو دا من ضمن اللمسات الجمالية وبيتعمل ازاي يامعلم
الشرح بسيط ف الصورة
undefined
معلش بدل ما اكتب الماوس كتبت الموس شغال بقى اعذروني انا بعمل الشرح في وقت قياسي وانا شغال
مرفق البرنامج ومعاه القلب عشان تعملوه مكان السهم
يارب اكون وصلت المعلومة صح 
واي خطأ منى فدا لجهلى اعذروني 
منتظر الردود

:fff:
مع تحياتي 
ياسر العربي
يتبع

2 التعليقات


الإبتساماتإخفاء