![]() |
|
حصريا لمنتدى vb4arab -المرجع الكامل للتعامل مع Microsoft Excel - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : حصريا لمنتدى vb4arab -المرجع الكامل للتعامل مع Microsoft Excel (/showthread.php?tid=4999) |
حصريا لمنتدى vb4arab -المرجع الكامل للتعامل مع Microsoft Excel - RaggiTech - 03-10-12 كاتب الموضوع : 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.Microsoft.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 خطوات فتح البرنامج وإنشاء ورقة جديدة أو فتح صفحة موجودة نقل البيانات من البرنامج إلى الإكسل (ثم إلى البرنامج إذا لزم الامر) حفظ المستند (إختياري) طباعة المستند اختياري حصريا لمنتدى vb4arab -المرجع الكامل للتعامل مع Microsoft Excel - RaggiTech - 03-10-12 [SIZE=4]1-فتح البرنامج و فتح صفحة جديدة أو موجودة [/SIZE] ويتم ذلك من خلال انشاء 3 متغيرات
الأول يخص برنامج الإكسل ككل الثاني يخص ملف الإكسل الثالث يخص ورقة البيانات أو Sheet كود : Dim ReportApp As New Excel.Applicationكود : [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]حصريا لمنتدى vb4arab -المرجع الكامل للتعامل مع Microsoft Excel - RaggiTech - 03-10-12 كاتب المشاركة : Athman
نأتي الآن إلى الخطوة الأهم وهي أساس عمل البرنامج وهو نقل البيانات الى الــExcelأولا عليك معرفة أن الإكسل ماهو إلا خلايا يعني أن البيانات تكتب في خلايا فلذلك عند تصميم البرنامج يجب أن تكون فاتح للإكسل وتضع تخيل للبيانات وهي في الإكسل حتى تعرف الخلايا بمعنى اخرى قم بتصميم ماتريده في الاكسل اولا حتى تعرف اين اماكن وضع البيانات وغيرها وما اللذي سوف يعدل وما اسماء الخلايا ....الخ سنستخدم هذا الشكل في ملف الإكسل كمثال ولك الحرية في تصميم الشكل الذي يعجبك طبعا الوظيفة الأساسية هنا هي إدخال البيانات ولكن سنضيف عليها وضيفة أخرى وهي التحكم في تنسيق الورقة حتى تخرج بالصورة المناسبة حتى نبدأ يجب أن نتبع إحدى طريقتين 2-كتابة كود يضع البيانات اولا ثم كتابة كود يسوي التنسيقات ثانيا والعكس الصحيح كرأي الشخصي الأفضل الطريقة الأولى ولكن مادمنا في غرض التعليم فسنستخدم الطريقة الثانية وسنبدا بإدخال البيانات إلى الأكسل ثم تنسيق الورقة *****إدخال البيانات من الافضل تصميم شكل أولي بالإكسل بحيث تحدد مكان كل معلومة في خلية محددة وبعد ذلك لانحتاج إلى إلا كود واحد لكل شيء نريد كتابته وهو كود : ReportWS.Range("Address of the Cell").Value="Value"نأخذ على ذلك مثالين الأول لقيمة نكتبها بأنفسنا والثانية لقيمة يكتبها المستخدم في مربع النص كود : ReportWS.Range("A1").Value= "Personal Information" سؤال يطرح نفسه كيف يمكن كتابة معادلة الاجابة على هذا السؤال تعتمد على مكان الأرقام التي تريد تكوين معادلة لها فلو كانت في برنامجك تكتبها كمعادلة عادية كود : ReportWS.Range("B1").Value= val(txtQTY.Text)*val(txtCartons)فتكتبها كأنت تكتب معادلة في إكسل كود : ReportWS.Range("B1").Value= "=B2+B3"أحيانا نظطر لكتابة بيانات كثيرة في الاكسل فتكون الطريقة مرهقة والحل يكمن باستخدام With>>>End With كود : With ReportWS*****تنسيق البيانات بصراحة هذا هو الجزء المتعب ولكن بقليل من الذكاء تجعله سهلا لو كان عندك معرفة بالبرمجة تنسيق البيانات حرية لكل مبرمج يعني ماحد يقدر يقيدك بتنسيق معين لان لكل منا ذوقه فلذلك قم بتنسيق ملف الاكسل براحتك وعندما ترى انه صار مناسبا اعرف التغييرات اللي عملتها وجهز نفسك لكتابتها بالكود طبعا الطريقة بسيطة جدا لانها مثلها مثل كتابة البيانات لنعد إلى ملف الإكسل نلاحظ هنا التغييرات التالية 2تغيير لون الخلفية إلى اللون الأحمر الغامق من لنفس المنطقة وكذلك جعل لون الكتابة أبيض 4-أما باقي الخلايا فقط قمنا بتغيير الخط نوعا ((Times New Romans وحجما (Bold ) وعرضا (14) طبعا كل اللعب على الكلمة .Value في الكود الخاص بتنسيق البيانات فمثلا لتغيير تنسيق A1 كود : ReportWS.Range("A1").Font.Name = "Times New Romans"طيب بالنسبة للدمج كيف نسويه؟؟؟؟؟؟ الدمج بسيط جدا في المكان اللي تحدد فيه الخلية حدد الخلايا الداخلة في الدمج مثلا احنا هنا عندنا من A1 إلى D1 إذا نكتب وبدل الخاصية Font تختار Merge وخلاص طيب نأتي الآن لأهم جزء وهو الذي بسببه استوردنا هذا الكم الهائل وهو وضع الحدود على الخلايا بصراحة هذا اللي يخلي الاكسل بايخ في موضوع الطباعة لأن كوده طويل طبعا حللوه مع نفسكم وهذا هو من غير فلسفة ولا نقاش عيبه انه كل خط لازم تكتب فيه 3 أسطر حاولو تفهموا الكود وانا موضح لكم بعض منها . كود : Range("A1:D3").Borders(xlDiagonalDown).LineStyle = xlNoneتلميح:لو أردت عمل أي كود لم أقم بشرحه من أنواع التنسيقات حاول اللعب بـ .Value وإن لم تعرف كيف تكتبه فسأعطيك خطة جهنمية ادخل للأكسل وسوي انشاء ماكرو جديد وسوي التنسيق اللي تبيه ووقف المكرو وادخل على تحرير الماكرو وسوي نسخ ولصق ولما تلاقي أي كلمة بدئت بـxl في الكود محطوط تحت خط أزرق فاعرف انه الفيجوال ماعرفه فعشان كذا تروح للـObject Browser بالظغط على F2 وتبحث عنها ولما تلاقيها تاخذ مكانها وتسوي لها Import في أعلى الملف 1-دمج (Merge) الخلايا منA1 إلى D1 3تغيير الخط إلى ((Times New Romans وجعل الخط (20) وعريضا (Bold) ReportsWS.Range("A1 1-كتابة الكود الخاص بكل بيان على حدة مع كود تنسيق الخلية اللي هي فيها (مثلا نكتب كود يضع الاسم في b2 ونخلي الخط Arial ) |