تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
أتمتة وورد 2007 باستخدام فيجول بايزيك دوت نيت
#1
كاتب الموضوع : samerselo


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

حتى نستطيع العمل نحتاج لبعض الخطوات الابتدائية
1 - من خصائص المشروع ومن صفحة References اضغط الزر ADD ثم انتقل لصفحة Com وأضف مرجع للمكتبة Microsoft Word 12.0 Object Library
2 - من أسفل الصفحة ومن القائمة أسفل Imported References انتقل إلى Microsoft.Office.Interop وضع اشارة اختيار بجانبها حتى تكون متوفرة للمشروع بأكمله وإلا ستضطر لاستخدام Imports التالية في بداية كل ملف ستستخدم أتمتة وورد فيه
كودImports Microsoft.Office.Interop
3 - إن كنت ستستخدم أشياء Object لوثائق أو التطبيق الخاصة بوورد في عدة اجرائيات يفضل تعريفها كعناصر في النموذج الحاوي لتلك الإجرائيات - متغيرات عامة على مستوى النموذج - حتى لاتفقد اتصالك مع وورد

بدء وإنهاء وورد
عرف متغير عام على مستوى النموذج كما يلي

كود :
Private axWord As Word.Application
لبدء وورد نستخدم الكود التالي

كود :
axWord = New Word.Application
axWord.Visible = True
و لإنهاء وورد نستخدم الكود التالي

كود :
axWord.Quit()
إنشاء وفتح الوثائق
لإنشاء وثيقة جديدة ابدأ وورد أولا ثم استخدم الأمر Application.Documents.Add

كود :
Dim axDoc As Word.Document
axDoc = axWord.Documents.Add
لفتح وثيقة موجودة

كود :
Dim axDoc As Word.Document
axDoc = axWord.Documents.Open("c:\MyDocument.docx")
لحفظ الوثيقة

كود :
axDoc.SaveAs("C:\MyDocument.docx")
قراءة وإدراج النصوص
عندما تقوم بأتمتتة وورد ستجد العديد من الطرائق التي تقوم بنفس الوظيفة وعملية قراءة وإدراج النصوص مثال جيد على ذلك حيث يمكنك عمل ذلك باستخدام العديد من الأشياء Objects ولكن أكثرها استخداما هو Paragraph و Selection

أولا - paragraph object
تتكون وثيقة وورد من مجموعة من الفقرات وهي مرتبة بالتسلسل بدءا من 1 وهي تتضمن كامل النص حتى محارف الارجاع ويمكن الحصول على نص الفقرة الأولى

كود :
Dim strText As String
strText = axDoc.Paragraphs(1).Range.Text
ولتغيير نص الفقرة نستخدم

كود :
axDoc.Paragraphs(1).Range.Text = "Hello from Visual Basic 2005"
ثانيا - Selection object
وهو الطريقة الأكثر مرونة لإدراج النصوص وهو شبيه باستخدامك لوورد عند كتابتك لوثيقة فتستخدم أولا Selection object لنقل نقطة الإدراج للمكان المطلوب ضمن الوثيقة ثم تقوم بإدراج النص المطلوب والكود التالي يقوم بإدراج نص في آخر الوثيقة وفي بدايتها ثم يبحث عن كلمة ويدخل نص مباشرة بعدها

كود :
'Activate the document first
axDoc.Activate()
'Move to the end and add text
axWord.Selection.EndKey(Word.WdUnits.wdStory)
axWord.Selection.TypeText("This is the end")
'Move to the beginning and add text
axWord.Selection.HomeKey(Word.WdUnits.wdStory)
axWord.Selection.TypeText("This is the beginning")
axWord.Selection.Find.ClearFormatting()
'Locate Foo, then add text
'following it
axWord.Selection.Find.ClearFormatting()
axWord.Selection.Find.Text = "Foo"
axWord.Selection.Find.Execute()
axWord.Selection.MoveRight(Word.WdUnits.wdCharacter, 1)
axWord.Selection.TypeText("This is Foo")
إدراج الجداول
الكود التالي يبين طريقة إدارج جدول بقياس 5 × 5 و إضافة تنسيق للجدول ثم ضبط نص في خلية محددة في ذلك الجدول

كود :
Dim axTable As Word.Table
axTable = axDoc.Tables.Add(axWord.Selection.Range, 5, 5)
axTable.Style = "Table Grid 8"
axTable.Cell(3, 3).Range.Text = "Hello World"
الطباعة
لطباعة لوثيقة نستخدم الطريقة PrintOut

كود :
axDoc.PrintOut()
التأكد من ان الوثيقة مفتوحة
بما أن المستخدم يمكنه إغلاق الوثيقة أو الوورد في أي وقت رغم أن برنامجك مازال مرتبطا به يمكنك استخدام الطريقة التالية للتأكد من ان الوثيقة مازالت مفتوحة

كود :
Dim strName As String
Dim blnIsAvailable As Boolean
Try
strName = axDoc.Name
blnIsAvailable = True
Catch ex As Exception
blnIsAvailable = False
End Try
MsgBox("Document is available: " & blnIsAvailable)
إدارج جدول من ADO .net
يمكنك استخدام الطريقة التالية لإدارج بيانات من جدول في قاعدة بيانات في جدول في وثيقة وورد

كود :
Function AddDataTable(ByVal tbl As DataTable) As Boolean
Dim nRowCount, nColCount, nRow, nCol As Integer
Dim axTable As Word.Table
nRowCount = tbl.Rows.Count
nColCount = tbl.Columns.Count
axWord.Selection.EndKey(wdStory)
axTable = axDoc.Tables.Add(axWord.Selection.Range, nRowCount + 1, nColCount)
axTable.Style = "Table Grid 8"
For nCol = 1 To nColCount
axTable.Cell(1, nCol).Range.Text = tbl.Columns.Item(nCol - 1).Caption
Next
For nCol = 1 To nColCount
For nRow = 1 To nRowCount
axTable.Cell(nRow + 1, nCol).Range.Text = tbl.Rows(nRow - 1).Item(nCol - 1)
Next
Next
Return True
End Function


' To use this function
tbl = Me.CustomersDataSet.Tables(0)
WordDoc.AddDataTable(tbl)
تحكمات المحتويات content controls
يقدم وورد 2007 آلية جديدة لإدراج البيانات في الوثائق تدعى تحكمات المحتويات Content Controls وهي عبارة عن حقول يمكن تحريرها يدويا أو ملؤها برمجيا أو نشرها من وثيقة XML وهي تتضمن عدة تحكمات مثل صندوق النصوص أو الصور أو القائمة المركبة ... الخ ويمكن الوصول إليها من خلال ContentControls collection في Document objects كما في المثال

كود :
Dim ccCollection As Word.ContentControls
ccCollection = axDoc.ContentControls
ccCollection.Item(1).Range.Text = " Content Control Field"
دمج البريد
لتحقيق العملية
1- افتح الوثيقة المصدر
2 - اضبط الخاصية Mail Merge DataSource
3 - يتم إنشاء وثيقة جديدة
وفيما يلي مثال عن كيفية عمل ذلك دون تدخل من المستخدم

كود :
axDoc.Activate()
axDoc.MailMerge.MainDocumentType = _
Word.WdMailMergeMainDocType.wdFormLetters
axDoc.MailMerge.OpenDataSource(strDatabaseFilename, _
wdOpenFormatAuto, False, False, False, False, "", "", _
False, "", "", strConnectionString, strSQL, "", False,_
Word.WdMergeSubType.wdMergeSubTypeOAL)
axDoc.MailMerge.DataSource.FirstRecord = wdDefaultFirstRecord
axDoc.MailMerge.DataSource.LastRecord = wdDefaultLastRecord
axDoc.MailMerge.Destination = _
Word.WdMailMergeDestination.wdSendToNewDocument
axDoc.MailMerge.Execute(False)
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  اصنع محرر أكواد خاص بك باستخدام الأداة RichTextBox السكر المغرور 8 1,529 03-09-16, 07:59 PM
آخر رد: tryold
  طريقة تشغيل كريستال ريبورت بجميع ادارات فيجول نت abdhassan 2 324 28-05-16, 02:16 PM
آخر رد: CLARO
  [درس فيديو] تشغيل اوامر Run من البرنامج & مثال غلق الويندوز بعد وقت محدد باستخدام VB.net أحمد النجار 1 541 23-12-15, 04:26 AM
آخر رد: الماجيك مسعد
  [VB.NET] التشفير باستخدام خوارزمية rsa alking-0999 10 1,386 08-07-15, 04:24 PM
آخر رد: مبرمج بلا حدود
  رسم الباركود برمجيا باستخدام (Code128) RaggiTech 3 2,658 06-10-12, 12:51 AM
آخر رد: RaggiTech
  مقال- تطوير الفورم رسم الفورم باستخدام +GDI وتحريكه Moving و تغيير أبعاده Resize RaggiTech 2 877 05-10-12, 07:00 PM
آخر رد: RaggiTech
  مكتبة التوافقية الخاصة بفيجول بايزيك 6.0 RaggiTech 0 433 05-10-12, 01:34 AM
آخر رد: RaggiTech
  يمكننا استخدام فيجول بايزيك 2008 لإنشاء صفحات أشرطة إضافية لـ Excel 2007 RaggiTech 0 355 05-10-12, 01:14 AM
آخر رد: RaggiTech
  توسيع مجال الأسماء My باستخدام My Extensibility RaggiTech 5 774 03-10-12, 12:26 PM
آخر رد: RaggiTech
  تشغيل برنامج خارجي أو فتح ملف مرتبط ببرنامج معين من ضمن كود فيجول بايزيك دوت نيت RaggiTech 1 3,378 03-10-12, 08:46 AM
آخر رد: RaggiTech

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


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