بسم الله الرحمن الرحيم
اليوم سنقوم بشرح طريقة ربط الفيجوال بيسك بالإكسيل
اولا نعمل مشروع جديد
عبارة عن فورم
وواحد كمبوبوكس
وسته تكست
وثمانية ليبل
وخمس أزرار
وملف اكسيل بامتدادxlsx واسمه aseel امتداده اظن لا يدعم وحدات الماكرو بس عادي مع الفيجوال شغال
بنفس ترتيب الشكل الاتي:
خلصنا الشكل السابق
ندخل علي الشغل الجديد بقي
كلنا أكيد سمعنا عن المتغيرات وكلنا تعاملنا معاها
قبل ما نشوف المتغيرات
الفيجوال عشان نربطه بالإكسيل لازم له مراجع ومتغيرات عامة على مستوى المشروع بأكمله
إيه الكلام دا
بيتعمل ازاي المرجع دا ولا بنجيبه منين شوفو معايا الصور
بعد الخطوات دي ياترى بنعرف نضيف موديول زي ما بنضيف فورم جديد كدا
اللي بيعرف يضيف اللي مش عارف ينزل للصورة معايا ويشوف
ايه البيانات دي يامعلمين
دي بقي المتغيرات العامة اللي بنقول عليها وبتكون علي مستوى المشروع بأكمله
يعني لازم تتحط في موديول
ولتبسيط الكلام اللي فوق دا بطريقة سهلة
اول سطر
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
وبكدا نكون انتهينا من وضع الاكواد اظن الكل واخد باله انه مفيش جديد
وهو دا بالتحديد مفيش جديد
كل اللي عملناه واحد تايه وعرفنا السكه خلاص
وبعدين
محدش ينسى يعمل ملف اكسيل اه بعد دا كله يجي حد يقولي البرنامج مش شغال ليه اقوله فين ملف الاكسيل
بعد الاطلاع علي البرنامج هيجي واحد يقولي ايه القلب الجميل اللي علي الفورم دا اللي مكان السهم
اهو دا من ضمن اللمسات الجمالية وبيتعمل ازاي يامعلم
الشرح بسيط ف الصورة
معلش بدل ما اكتب الماوس كتبت الموس شغال بقى اعذروني انا بعمل الشرح في وقت قياسي وانا شغال
مرفق البرنامج ومعاه القلب عشان تعملوه مكان السهم
يارب اكون وصلت المعلومة صح
واي خطأ منى فدا لجهلى اعذروني
منتظر الردود
مع تحياتي
ياسر العربي
يتبع
2 التعليقات
شكرا لك اين المرفقات
شكرا لك اين المرفقات
الإبتساماتإخفاء