تقييم الموضوع :
  • 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] ما الخطا فى كود insert Asabry 45 a 6 706 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 709 16-04-22, 05:04 PM
آخر رد: failasouf
  مشكلة في جملة insert mounir3403 5 1,505 18-02-22, 08:57 PM
آخر رد: ابراهيم ايبو
Lightbulb Insert Datagridview value into array moh8880 1 1,110 23-12-21, 03:54 AM
آخر رد: اسامه الهرماوي
  [VB.NET] مساعدة: مع اداة print document الارقام تطبع انجليزى مع ويندز 8 أو 10 فقط هل من حل؟ ym_a11 3 1,373 24-03-21, 11:07 PM
آخر رد: أبو عبدالله الحلواني
Exclamation [VB.NET] مساعدة في كود لـــــــ جملة(insert) abarrak 2 1,215 10-10-20, 07:53 AM
آخر رد: abarrak
  هل يمكن حفظ الPrint Document بصيغة Pdf؟ Hazem1 2 1,394 06-07-20, 10:33 PM
آخر رد: Hazem1
  هل يمكن تحويل Print Document إلى PDF ؟ Hazem1 1 1,228 04-07-20, 11:36 AM
آخر رد: Hazem1
  [سؤال] بخصوص WordAddIn: أين يتم وضع الإضافة المبرمجة حتى تظهر في برنامج Word؟ السندبااد 2 1,333 17-04-20, 06:26 PM
آخر رد: ابراهيم ايبو
  [سؤال] Error Syntax Insert Into" djelloul 11 4,644 28-12-19, 04:20 PM
آخر رد: مصطفى حفناوى

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


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