تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] How to Use VB.NET Insert Bookmark into Word Document
#5
السلام عليكم...

الطريقة التالية باستخدام VB 2010 مع Word 2010، و لا تعتمد على Spire.Doc Library المستخدمة في الصفحة التي أشرت إليها في مشاركتك السابقة.

أولاً: إضافة مكتبة Word إلى مراجع المشروع (References):
1. فتح نافذة الـ References:
= أ. في نافذة Solution Explorer انقر بالزر الأيمن على اسم المشروع (في أعلى القائمة) و اختر من القائمة الأمر Add Reference.
= أو:
= ب. من القائمة Project اختر الأمر Properties لفتح صفحة خصائص المشروع. عند أسفل يمين قائمة الـ References انقر السهم الصغير على الزر Add و اختر Reference.

بأي من الطريقتين ستظهر نافذة Add Reference.

2. في نافذة Add Reference اختر الصفحة COM.
3. ابحث عن البند Microsoft Word x.x Object Library (حيث x.x رقم نسخة مكتبة Word. مثلاً مع Word 2010 نجدها: Microsoft Word 14.0 Object Library)
4. قم بتحديد ذلك البند ثم انقر الزر OK.

ثانياً: التفاصيل و الكود:
مكتبة Word تحتوي على المئات من الكائنات. سنحتاج منها مبدئياً الكائن Application و الكائن Document و الكائن Range، بالإضافة إلى الكائن Bookmarks لإضافة الإشارات المرجعية.
الخطوات ببساطة - كما في الكود التالي - تتلخص في إنشاء نسخة من برنامج Word ثم فتح المستند المطلوب ثم تحديد مكان الإشارة المرجعية ثم إضافة الإشارة المرجعية في ذلك المكان.

الأمثلة:

1. المثال التالي يضع إشارة مرجعية على الفقرة الثانية في المستند:

كود :
Dim WordApp As New Word.Application    ' تسغيل برنامج وورد
Dim WordDoc As Word.Document = WordApp.Documents.Open("D:\My Docs\MyFile.docx")    ' فتح المستند

WordDoc.Paragraphs(2).Range.Bookmarks.Add("BkMrk_Para2")    ' وضع إشارة مرجعية على الفقرة الثانية

* طبعاً بدل المسار المستعمل في المثال مع الوظيفة Open تضع مسار و اسم الملف لديك.
* أحد كائنات Word هو الكائن Paragraphs الذي يضم كل فقرات المستند. و نصل إلى فقرة معينة بتحديد رقمها مع الكائن Paragraphs، حيث أول فقرة رقمها 1 و الثانية رقمها 2... و هكذا.
* لإضافة Bookmark نحتاج إلى كائن Range و هو كائن يمكن إنشاؤه من معظم الكائنات الأخرى، حيث يمثل محتوى الكائن المنشأ منه.
* النص الممرر إلى الوظيفة Add (يعني BkMrk_Para2 في المثال أعلاه) هو اسم الإشارة المرجعية، و طبعاً يمكنك وضع الاسم الذي تريده.

2. المثال التالي يضع إشارة مرجعية على أول جدول في المستند:

كود :
Dim WordApp As New Word.Application    ' تسغيل برنامج وورد
Dim WordDoc As Word.Document = WordApp.Documents.Open("D:\My Docs\MyFile.docx")    ' فتح المستند
Dim TblRng As Word.Range = WordDoc.Tables(1).Range    ' إنشاء نطاق من أول جدول في المستند

WordDoc.Bookmarks.Add("BkMrk_Table1", TblRng)

* لاحظ أننا هنا قمنا بوضع الإشارة المرجعية بطريقة مختلفة، حيث أنشأنا Range كمتغير من الجدول في البداية ثم قمنا بتمرير هذا الـ Range إلى الوظيفة Add كبارامتر ثانٍ. كما أننا استخدمنا الكائن Bookmarks مباشرة مع الكائن Document.

3. أخيراً هذا مثال لوضع إشارة مرجعية على خلية معينة في الجدول:

كود :
Dim WordApp As New Word.Application    ' تسغيل برنامج وورد
Dim WordDoc As Word.Document = WordApp.Documents.Open("D:\My Docs\MyFile.docx")    ' فتح المستند

WordDoc.Tables(1).Cell(1, 1).Range.Bookmarks.Add("BkMrk_Cell1")    ' وضع إشارة مرجعية للخلية الموجودة في الصف الأول و العمود الأول

*** ملاحظات أخيرة:

1. طبعاً إضافة إشارات مرجعية تعني تغييراً في المستند، فإذا أردت حفظ التغييرات أضف السطر التالي:

كود :
WordDoc.Save()

2. إذا أردت إظهار شاشة Word على الشاشة فاستعمل هذا السطر:

كود :
WordApp.Visible = True

3. إذا أردت إغلاق Word فاستعمل هذا السطر:

كود :
WordApp.Quit()


4. أرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}


الردود في هذا الموضوع
RE: How to Use VB.NET Insert Bookmark into Word Document - بواسطة ناجي إبراهيم - 17-10-13, 06:06 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  القيام بعملية Insert بعد التأكد من عدم وجود السجل بالجدول صالح عبدالله 2 348 04-01-25, 03:56 PM
آخر رد: صالح عبدالله
  [VB.NET] the document has not been MOHAMMED ALZWI 2 214 16-07-24, 11:04 PM
آخر رد: Kamil
  [VB.NET] ما الخطا فى كود insert Asabry 45 a 6 1,035 18-01-23, 08:24 PM
آخر رد: Asabry 45 a
  [VB.NET] Bulk Insert records and Update existing rows if record exists using from datagridview failasouf 0 872 16-04-22, 05:04 PM
آخر رد: failasouf
  مشكلة في جملة insert mounir3403 5 1,879 18-02-22, 08:57 PM
آخر رد: ابراهيم ايبو
Lightbulb Insert Datagridview value into array moh8880 1 1,334 23-12-21, 03:54 AM
آخر رد: اسامه الهرماوي
  [VB.NET] مساعدة: مع اداة print document الارقام تطبع انجليزى مع ويندز 8 أو 10 فقط هل من حل؟ ym_a11 3 1,584 24-03-21, 11:07 PM
آخر رد: أبو عبدالله الحلواني
Exclamation [VB.NET] مساعدة في كود لـــــــ جملة(insert) abarrak 2 1,399 10-10-20, 07:53 AM
آخر رد: abarrak
  هل يمكن حفظ الPrint Document بصيغة Pdf؟ Hazem1 2 1,605 06-07-20, 10:33 PM
آخر رد: Hazem1
  هل يمكن تحويل Print Document إلى PDF ؟ Hazem1 1 1,430 04-07-20, 11:36 AM
آخر رد: Hazem1

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


يقوم بقرائة الموضوع: