تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
حصريا لمنتدى vb4arab -المرجع الكامل للتعامل مع Microsoft Excel
#1
كاتب الموضوع : Athman




[SIZE=4]
التكامل مع برامج مايكروسوفت
1-التكامل مع برنامج Micrososft Excel


[/SIZE]
السلام عليكم ورحمة الله وبركاته وبعد

طبعا كتبت موضوعا يتكلم عن التكامل مع الاكسل وكان موضوعا بسيطا جدا وتذمر بعض الاعضاء منه لعدم الشرح بصورة مرنة وقلة الصورة وعدم وجود تطبيقات لذا قررت ان اعيده لكم بصورة جديدة
طبعا بدء من الاصدار 2005 وما فوق اصبح هناك برنامج داخلي تبع الفيجوال ستوديو وهو VSTOأي Visual Studio Tools for Office وهو موضوع جديد ربما أتكلم عنه لاحقا

نيجي لموضوعنا
ولعل التساؤل يطرح نفسه :مالهدف من التكامل مع Excel ؟؟؟؟؟
أس
تطيع أن ألخص أبرز الأسباب اللي تجعلنا نتكامل معه في عدة نقاط
1-إنشاء تقارير باحترافية عالية
2-سهولة الطباعة باستخدام الإكسل
3-إمكانية إنشاء نماذج (Forms) قوية ومدعومة

وغيرها من الأسباب التي ستتضح لاحقا من خلال هذا الموضوع بإذن الله

سنقوم في هذا البرنامج بإنشاء فورم لإدخال البيانات الشخصية ثم طباعتها وهذي صورة لواجهة البرنامج ونسخة من البرنامج موجودة في المرفقات

بداية علينا استيراد 3 ملفات هي على التوالي
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Interop.Excel.dll
Interop.Microso
ft.Office.Core.dll
Interop.VBIDE.dll
[/TD]
[/TR]
[/TABLE]


وهي مرفقة في هذا الموضوع
****طريقة الاستيراد




الهدف من استيرادنا لهذه الملفات الثلاث أنها هي الوصلة التي تربط بين برنامجنا وبين برنامج اكسيل حتى تتيح لنا التصميم داخل الاكسيل

وبعد ادراجهم نقوم باستيراده في اعلى محرر الاكواد للفورم الذي نريد ارتباطه بالاكسل
كالتالي

اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]
Imports
Excel

Imports
Excel.XlLineStyle
Imports Excel.XlBordersIndex
Imports Excel.Constants
Imports
Excel.XlBorderWeight
Imports Excel.XlSortOrder
Imports Excel.XlYesNoGuess
Imports Excel.XlSortDataOption
[/TD]
[/TR]
[/TABLE]

إلى الآن أكملنا الخطوات الأساسية والتي غالبا ستفعل لمرة واحدة فقط
نأتي الآن إلى الخطوة الأهم وهي التكامل مع الإكسل
التعامل مع الأكسل يكون في 3 خطوات

فتح البرنامج وإنشاء ورقة جديدة أو فتح صفحة موجودة
نقل البيانات من البرنامج إلى الإكسل (ثم إلى البرنامج إذا لزم الامر)
حفظ المستند (إختياري)
طباعة المستند اختياري

}}}}
تم الشكر بواسطة:
#2



[SIZE=4]1-فتح البرنامج و فتح صفحة جديدة أو موجودة
[/SIZE]
ويتم ذلك من خلال انشاء 3 متغيرات
الأول يخص برنامج الإكسل ككل
الثاني يخص ملف الإكسل
الثالث يخص ورقة البيانات أو Sheet


كود :
Dim ReportApp As New Excel.Application
Dim ReportWB As Workbook
Dim ReportWS As Worksheet
ومن ثم إسناد قيمة كل من الثاني للثالث والثالث للثاني
كود :
[b][SIZE=3] ReportWB =ReportApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet)[/SIZE][/b]

'لانشاء ملف اكسل جديد

كود :
[SIZE=3][b] ReportWS = ReportWB.Sheets.Add(, ReportWB.Worksheets(1)) [/b][/SIZE]


'لفتح صفحة جديدة في ملف الإكسل
الآن الملف أصبح موجود وإن لم تصدق فجرب إضافة هذا السطر بعد الاسطر السابقة
كود :
[SIZE=3][b] ReportApp.Visible = True [/b][/SIZE]

فستلاحظ أنه قد تم فتح ملف أكسل جديد بورقة واحدة (ولكن نصيحتي ألا تستخدم هذا السطر في برامجك في هذا الوقت على الاقلوستعرف لماذا لاحقا)
سؤال:كيف نفتح ملف محفوظ من الأساس
الإجابة بتغيير السطرين إلى
كود :
[SIZE=3][b] ReportWB = ReportApp.Workbooks.Open("Put The Source of the File Here")[/b][/SIZE]
[SIZE=3][b]ReportWS = ReportWB.Worksheets("حدد الصفحة لو كان فيه أكثر من صفحة في نفس الملف") [/b][/SIZE]
}}}}
تم الشكر بواسطة:
#3
كاتب المشاركة : Athman

نأتي الآن إلى الخطوة الأهم وهي أساس عمل البرنامج وهو نقل البيانات الى الــExcel
أولا عليك معرفة أن الإكسل ماهو إلا خلايا يعني أن البيانات تكتب في خلايا فلذلك عند تصميم البرنامج يجب أن تكون فاتح للإكسل وتضع تخيل للبيانات وهي في الإكسل حتى تعرف الخلايا

بمعنى اخرى قم بتصميم ماتريده في الاكسل اولا حتى تعرف اين اماكن وضع البيانات وغيرها وما اللذي سوف يعدل وما اسماء الخلايا ....الخ

سنستخدم هذا الشكل في ملف الإكسل كمثال ولك الحرية في تصميم الشكل الذي يعجبك
طبعا الوظيفة الأساسية هنا هي إدخال البيانات ولكن سنضيف عليها وضيفة أخرى وهي التحكم في تنسيق الورقة حتى تخرج بالصورة المناسبة
حتى نبدأ يجب أن نتبع إحدى طريقتين

2-كتابة كود يضع البيانات اولا ثم كتابة كود يسوي التنسيقات ثانيا والعكس الصحيح
كرأي الشخصي الأفضل الطريقة الأولى ولكن مادمنا في غرض التعليم فسنستخدم الطريقة الثانية
وسنبدا بإدخال البيانات إلى الأكسل ثم تنسيق الورقة
*****إدخال البيانات
من الافضل تصميم شكل أولي بالإكسل بحيث تحدد مكان كل معلومة في خلية محددة وبعد ذلك لانحتاج إلى إلا كود واحد لكل شيء نريد كتابته وهو

كود :
ReportWS.Range("Address of the Cell").Value="Value"
حيث "Address of the Cell"هو عنوان الخلية المراد وضع الكلام فيها "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
حيث إنك بمجرد كتابة النقطة ((.)) ستظهر قائمة منسدلة تختار منها Range وتكمل بعد ذلك
*****تنسيق البيانات
بصراحة هذا هو الجزء المتعب ولكن بقليل من الذكاء تجعله سهلا لو كان عندك معرفة بالبرمجة
تنسيق البيانات حرية لكل مبرمج يعني ماحد يقدر يقيدك بتنسيق معين لان لكل منا ذوقه فلذلك قم بتنسيق ملف الاكسل براحتك وعندما ترى انه صار مناسبا اعرف التغييرات اللي عملتها وجهز نفسك لكتابتها بالكود
طبعا الطريقة بسيطة جدا لانها مثلها مثل كتابة البيانات
لنعد إلى ملف الإكسل

نلاحظ هنا التغييرات التالية

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 )
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  طباعة بيانات موجودة في برنامج على ( 2003 Microsoft Office Word ) abulayth 1 275 11-09-16, 07:20 AM
آخر رد: أبووسم
  صمم الكلاس الخاص بك - كلاس للتعامل مع SQL SERVER ابو ليلى 16 883 03-09-16, 07:43 PM
آخر رد: tryold
  فيديو بالعربي تبادل البيانات بين Excel و VB.net أحمد النجار 0 552 03-06-15, 10:53 PM
آخر رد: أحمد النجار
  حصريا لمنتدى فيجوال بيسك لكل العرب شرح مكتبه علي سبايسى (alysbisydata) alimse 9 2,514 03-01-15, 04:10 PM
آخر رد: abulayth
  الكامل في VB.Net (التعامل مع الأقراص و المجلدات و الملفات) rinawi 3 1,255 25-05-13, 01:11 PM
آخر رد: shaker.soft
  معلومة ::: Get Excel Version ::: RaggiTech 0 294 06-10-12, 09:58 PM
آخر رد: RaggiTech
  معلومة ::: Microsoft.VisualBasic.Compatibility RaggiTech 1 301 06-10-12, 09:42 PM
آخر رد: RaggiTech
  يمكننا استخدام فيجول بايزيك 2008 لإنشاء صفحات أشرطة إضافية لـ Excel 2007 RaggiTech 0 353 05-10-12, 01:14 AM
آخر رد: RaggiTech
  حصريا- من صنعي- محرك العاب Game Engine 2D لعمل الالعاب RaggiTech 0 560 03-10-12, 12:42 PM
آخر رد: RaggiTech
  قراءة بيانات جدول من Excel Sheet senior 0 367 29-09-12, 04:41 PM
آخر رد: senior

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم