تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] How to Use VB.NET Insert Bookmark into Word Document
#1
بسم الله الرحمن الرحيم
السلام عليكم
كيف يمكن اضافة اشارة مرجعية في ملف الورد برمجياً من الدوت نت بحث عن الموضوع ولن اجد مثال يساعدني بحل المشكلة الا هذا الموضوع على الرابط التالي
http://stephenchy520.blog.com/2011/11/23...-document/
ولكن لم اتمكن من تطبيق الكود في الرابط السابق وكل عام وانت بخير
الله المستعان
الرد }}}}
تم الشكر بواسطة:
#2
بسم الله الرحمن الرحيم
في البداية كل عام وانت بالف خير بمناسبة عيد الاضحى المبارك نرجو من الله ان يوفقنا ليما يجبه ويرضاه وبعد اعضاء المنتدى الافاضل هل من احد ان يساعدني في هذا الموضوع اضافة اشارة مرجعية في ملف الورد برمجياً ضروري جدا خاصة يوجد اعضاء في المنتدى ما شاء الله عليهم متمكنين ربنا يحفظهم مثل اخي ابورائد وسعود وغيرهم
الله المستعان
الرد }}}}
تم الشكر بواسطة:
#3
بسم الله الرحمن الرحيم
الى حتى الان ولا رد بس اعرف ممكن تطبيقة ام لا من غير استخدام مكتبات خارجية وبوركتم
الله المستعان
الرد }}}}
تم الشكر بواسطة:
#4
بسم الله الرحمن الرحيم
الى حد الان ولا رد لا من عضو ولا مشرف هل من مستجيب
الله المستعان
الرد }}}}
تم الشكر بواسطة:
#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. أرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}}
#6
بسم الله الرحمن الرحيم
الاستاذ الفاضل ناجي إبراهيم بارك الله فيك وجزاك الله خيرا تم الاستفادة من الموضوع وتجربة الكود بس عن اذنك سؤال ان شاء الله بسيط وهو كيف يمكن اضافة صفحة فارغة الى ملف الورد برمجياً وهل نفس الكود لإضافة اشارة مرجعية لكل صفحة جديدة تفتح بملف الورد مع العلم ما يقارب من 3 شهور وانا متوقف عند نقطة إضافة اشارة مرجعية وجاء الحل الله يجزيك الجنة ويبارك فيك
الله المستعان
الرد }}}}
تم الشكر بواسطة:
#7
السلام عليكم...

أ. إذا كنت تقصد إنشاء مستند جديد فالأمر سهل... باستعمال الوظيفة Add التابعة للكائن Documents:

كود :
Dim WordApp As New Word.Application

WordApp.Documents.Add()

بل و يمكنك إضافة نص مبدئي له مباشرةً:

كود :
Dim WordApp As New Word.Application

WordApp.Documents.Add().Range.Text = "بسم الله الرحمن الرحيم"


ب. أما إذا كنت تقصد إضافة صفحة جديدة إلى مستند موجود أصلاً فالأمر يحتاج إلى الكائن Range:

كود :
Dim WordApp As New Word.Application
Dim WordDoc As Word.Document = WordApp.Documents.Open("E:\MyFiles\MyDoc.docx")
Dim DocRng As Word.Range = WordDoc.Range()    ' إنشاء نطاق لكامل المستند

DocRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)     ' نقل نقطة الإدراج إلى نهاية المستند
DocRng.InsertBreak(Word.WdBreakType.wdPageBreak)            ' إدراج فاصل صفحات لإنشاء صفحة جديدة

* ملاحظة مهمة:
لا تنس أن جملة Dim WordApp As New Word.Application تعمل على تحميل نسخة جديدة من برنامج Word في الذاكرة - و إن كانت غير مرئية على الشاشة - و لهذا من المستحسن أن نقوم بإغلاقها باستعمال الوظيفة Quit (و حفظ التغييرات إذا أردنا قبل ذلك) بمجرد الانتهاء من العمل مع Word.

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

استاذ ناجي إبراهيم ما قصرت يعطيك العافية

شـــايـفـــك

الرد }}}}
تم الشكر بواسطة: ناجي إبراهيم
#9
فعلا يا استاذ ناجي ابراهيم ما قصرت الموضوع كامل واكثر مما احتاجه بارك الله فيك
الله المستعان
الرد }}}}
تم الشكر بواسطة: ناجي إبراهيم
#10
السلام عليكم و رحمة الله و بركاته
أستاذ ناجي الرجاء التوضيح لماذا أضفنا المرجع من صفحة Com و ليس من صفحة Net
السلام عليكم و رحمة الله و بركاته
الرد }}}}
تم الشكر بواسطة: ناجي إبراهيم


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] بيانات فى datagridview ارغب فى تصديرها لملف اكسل لكن بشروط Bookmark and Share HERO92 0 179 08-04-16, 11:19 PM
آخر رد: HERO92
  [VB.NET] تم تغير جملة insert into فظهرت لى هذه الرساله احمد عبد الحكيم 2 384 24-02-15, 11:57 PM
آخر رد: محمد العبيدي
  [VB.NET] شابا فى مشكلة بجمالة insert into تظهر لى رسالة احمد عبد الحكيم 2 392 16-02-15, 06:30 PM
آخر رد: احمد عبد الحكيم
  [سؤال] Error Syntax Insert Into" djelloul 10 662 16-08-14, 05:45 PM
آخر رد: djelloul

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


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