03-10-12, 12:40 PM
كاتب المشاركة : Athman
نأتي الآن إلى الخطوة الأهم وهي أساس عمل البرنامج وهو نقل البيانات الى الــExcelأولا عليك معرفة أن الإكسل ماهو إلا خلايا يعني أن البيانات تكتب في خلايا فلذلك عند تصميم البرنامج يجب أن تكون فاتح للإكسل وتضع تخيل للبيانات وهي في الإكسل حتى تعرف الخلايا
بمعنى اخرى قم بتصميم ماتريده في الاكسل اولا حتى تعرف اين اماكن وضع البيانات وغيرها وما اللذي سوف يعدل وما اسماء الخلايا ....الخ
سنستخدم هذا الشكل في ملف الإكسل كمثال ولك الحرية في تصميم الشكل الذي يعجبك
طبعا الوظيفة الأساسية هنا هي إدخال البيانات ولكن سنضيف عليها وضيفة أخرى وهي التحكم في تنسيق الورقة حتى تخرج بالصورة المناسبة
حتى نبدأ يجب أن نتبع إحدى طريقتين
2-كتابة كود يضع البيانات اولا ثم كتابة كود يسوي التنسيقات ثانيا والعكس الصحيح
كرأي الشخصي الأفضل الطريقة الأولى ولكن مادمنا في غرض التعليم فسنستخدم الطريقة الثانية
وسنبدا بإدخال البيانات إلى الأكسل ثم تنسيق الورقة
*****إدخال البيانات
من الافضل تصميم شكل أولي بالإكسل بحيث تحدد مكان كل معلومة في خلية محددة وبعد ذلك لانحتاج إلى إلا كود واحد لكل شيء نريد كتابته وهو
كود :
ReportWS.Range("Address of the Cell").Value="Value"نأخذ على ذلك مثالين الأول لقيمة نكتبها بأنفسنا والثانية لقيمة يكتبها المستخدم في مربع النص
كود :
ReportWS.Range("A1").Value= "Personal Information"
ReportWS.Range("B1").Value= txtName.Textسؤال يطرح نفسه كيف يمكن كتابة معادلة
الاجابة على هذا السؤال تعتمد على مكان الأرقام التي تريد تكوين معادلة لها فلو كانت في برنامجك تكتبها كمعادلة عادية
كود :
ReportWS.Range("B1").Value= val(txtQTY.Text)*val(txtCartons)فتكتبها كأنت تكتب معادلة في إكسل
كود :
ReportWS.Range("B1").Value= "=B2+B3"أحيانا نظطر لكتابة بيانات كثيرة في الاكسل فتكون الطريقة مرهقة والحل يكمن باستخدام With>>>End With
كود :
With ReportWS
.Range("A1").Value="Personal Information"
.Range("A2").Value="Name"
.Range("B2").Value=txtName.Text
.Range("A3").Value="Age"
.Range("B3").Value=txtAge.Text
.Range("C3").Value="Gender"
.Range("D3").Value=txtGender.Text
End With*****تنسيق البيانات
بصراحة هذا هو الجزء المتعب ولكن بقليل من الذكاء تجعله سهلا لو كان عندك معرفة بالبرمجة
تنسيق البيانات حرية لكل مبرمج يعني ماحد يقدر يقيدك بتنسيق معين لان لكل منا ذوقه فلذلك قم بتنسيق ملف الاكسل براحتك وعندما ترى انه صار مناسبا اعرف التغييرات اللي عملتها وجهز نفسك لكتابتها بالكود
طبعا الطريقة بسيطة جدا لانها مثلها مثل كتابة البيانات
لنعد إلى ملف الإكسل
نلاحظ هنا التغييرات التالية
2تغيير لون الخلفية إلى اللون الأحمر الغامق من لنفس المنطقة وكذلك جعل لون الكتابة أبيض
4-أما باقي الخلايا فقط قمنا بتغيير الخط نوعا ((Times New Romans وحجما (Bold ) وعرضا (14)
طبعا كل اللعب على الكلمة .Value في الكود الخاص بتنسيق البيانات فمثلا لتغيير تنسيق A1
كود :
ReportWS.Range("A1").Font.Name = "Times New Romans"
ReportWS.Range("A1").Font.Size = 20
ReportWS.Range("A1").Font.Bold = True
ReportWS.Range("A1").Font.ColorIndex = 2
ReportWS.Range("A1").Interior.ColorIndex = 53طيب بالنسبة للدمج كيف نسويه؟؟؟؟؟؟
الدمج بسيط جدا في المكان اللي تحدد فيه الخلية حدد الخلايا الداخلة في الدمج
مثلا احنا هنا عندنا من A1 إلى D1 إذا نكتب
وبدل الخاصية Font تختار Merge وخلاص
طيب نأتي الآن لأهم جزء وهو الذي بسببه استوردنا هذا الكم الهائل
وهو وضع الحدود على الخلايا
بصراحة هذا اللي يخلي الاكسل بايخ في موضوع الطباعة لأن كوده طويل طبعا حللوه مع نفسكم وهذا هو من غير فلسفة ولا نقاش
عيبه انه كل خط لازم تكتب فيه 3 أسطر حاولو تفهموا الكود وانا موضح لكم بعض منها
.
كود :
Range("A1:D3").Borders(xlDiagonalDown).LineStyle = xlNone
.Range("A1:D3").Borders(xlDiagonalUp).LineStyle = xlNone
With .Range("A1:D3").Borders(xlEdgeLeft)
'خط مستمر غير متقطع .LineStyle = xlContinuous
لون الاوتوماتيكي(أسود يعني) .ColorIndex = xlAutomatic
ما أدري هههههههههههههههـ .TintAndShade = 0
عرض الخط سميك .Weight = xlThick
End With
الكود التالي خاص بالحد العلوي xlEdgeTop
With .Range("A1:D3").Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With .Range("A1:D3").Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
With .Range("A1:D3").Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThick
End With
الكود التالي خاص بالحدود الداخلية العمودية xlInsideVertical
With .Range("A1:D3").Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlHairline
End With
With .Range("A1:D3").Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlHairline
End Withتلميح:لو أردت عمل أي كود لم أقم بشرحه من أنواع التنسيقات حاول اللعب بـ .Value وإن لم تعرف كيف تكتبه فسأعطيك خطة جهنمية ادخل للأكسل وسوي انشاء ماكرو جديد وسوي التنسيق اللي تبيه ووقف المكرو وادخل على تحرير الماكرو وسوي نسخ ولصق ولما تلاقي أي كلمة بدئت بـxl في الكود محطوط تحت خط أزرق فاعرف انه الفيجوال ماعرفه فعشان كذا تروح للـObject Browser بالظغط على F2 وتبحث عنها ولما تلاقيها تاخذ مكانها وتسوي لها Import في أعلى الملف
1-دمج (Merge) الخلايا منA1 إلى D1 3تغيير الخط إلى ((Times New Romans وجعل الخط (20) وعريضا (Bold) ReportsWS.Range("A1 1-كتابة الكود الخاص بكل بيان على حدة مع كود تنسيق الخلية اللي هي فيها (مثلا نكتب كود يضع الاسم في b2 ونخلي الخط Arial )
