منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تصدير بيانات إلى ملف Word
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم...

يمكننا تصدير بيانات من برنامجنا إلى ملف Word و ذلك باستخدام مكتبة Microsoft Word Object Library و الاطلاع على تعليمات Word لمعرفة كيفية استخدام الكائنات و الوظائف في تلك المكتبة.

المثال التالي يبين كيفية تصدير بيانات ListView إلى ملف Word في شكل جدول.

1. من القائمة Project انقر الأمر References.
2. في نافذة الـ References ابحث عن البند Microsoft Word x.x Object Library و قم بتحديده - أي إظهار إشارة صح بجانبه ثم انقر OK (الرمز x.x هو رقم نسخة Word و قد تختلف من جهاز إلى جهاز حسب نسخة Word المركبة).
3. أضف إلى النافذة مكون ListView (تحتاج إلى إضافة Windows Common Controls) و قم بإعداد أعمدته و بنوده حسب ما لديك.
4. أضف زر أمر لتصدير البيانات. في كود هذا الزر اكتب ما يلي:

كود :
Private Sub Command1_Click()
    Dim objWord As Word.Application
    Dim oDoc As Word.Document
    Dim oTable As Word.Range
    
    Dim i As Integer
    Dim j As Integer
    Dim sTemp As String
    
    Set objWord = CreateObject("word.application")    ' إنشاء نسخة من برنامج وورد
    Set oDoc = objWord.Documents.Add    ' إنشاء مستند جديد
    Set oTable = oDoc.Range    ' إنشاء نطاق نصي في المستند
    
    ' إعداد عناوين الأعمدة
    sTemp = ListView1.ColumnHeaders(1).Text
    For j = 2 To ListView1.ColumnHeaders.Count
        sTemp = sTemp & vbTab & ListView1.ColumnHeaders(j).Text
    Next
    
    ' إعداد البيانات
    ' لاحظ أن خلايا الصف الواحد مفصولة بالمفتاح تاب، و الصفوف مفصولة بالمفتاح إنتر
    For i = 1 To ListView1.ListItems.Count
        sTemp = sTemp & vbCrLf & ListView1.ListItems(i).Text
        For j = 2 To ListView1.ColumnHeaders.Count
            sTemp = sTemp & vbTab & ListView1.ListItems(i).SubItems(j - 1)
        Next
    Next
    
    oTable.Text = sTemp    ' إرسال البيانات إلى وورد كنص
    
    ' تحويل نص النطاق إلى جدول
    oTable.ConvertToTable vbTab, , , , WdTableFormat.wdTableFormatElegant   ' Formatted table
'    oTable.ConvertToTable vbTab, , , , , , , , , , , , , , , True           ' Ordinary table
'    oTable.ConvertToTable vbTab                                             ' No borders
    
    ' إظهار برنامج وورد - قد لا يظهر في مقدمة الشاشة لكنك تجده في شريط المهام
    objWord.Visible = True
    
    ' تنظيف الذاكرة
    Set objWord = Nothing
    Set oDoc = Nothing
    Set oTable = Nothing
End Sub

* عند تشغيل الكود السابق و النقر على الزر سيتم تشغيل برنامج Word و إظهاره محتوياً على البيانات المصدرة. يمكن للمستخدم حينها حفظ المستند أو إغلاقه دون حفظ.

* إذا أردنا تصدير البيانات و حفظ الملف دون تدخل المستخدم فلا داعي لإظهار Word، و عليه فإننا بدل السطر: objWord.Visible = True نكتب السطرين التاليين:

كود :
oDoc.SaveAs2 "C:\Users\user1\Desktop\MyFile.docx"    ' حفظ الملف مع تحديد مسار و اسم الملف
objWord.Quit    ' إغلاق وورد

نرجو الاستفادة و السلام.
الا خ ناجي إبراهيم
مشكور على هذا الطرح
ولكن لو ارفقت المشروع لكان افضل
حيث تظهر لى رسالة خطأ
(12-10-13, 05:47 PM)ناجي إبراهيم كتب : [ -> ]السلام عليكم...

يمكننا تصدير بيانات من برنامجنا إلى ملف Word و ذلك باستخدام مكتبة Microsoft Word Object Library و الاطلاع على تعليمات Word لمعرفة كيفية استخدام الكائنات و الوظائف في تلك المكتبة.

المثال التالي يبين كيفية تصدير بيانات ListView إلى ملف Word في شكل جدول.

1. من القائمة Project انقر الأمر References.
2. في نافذة الـ References ابحث عن البند Microsoft Word x.x Object Library و قم بتحديده - أي إظهار إشارة صح بجانبه ثم انقر OK (الرمز x.x هو رقم نسخة Word و قد تختلف من جهاز إلى جهاز حسب نسخة Word المركبة).
3. أضف إلى النافذة مكون ListView (تحتاج إلى إضافة Windows Common Controls) و قم بإعداد أعمدته و بنوده حسب ما لديك.
4. أضف زر أمر لتصدير البيانات. في كود هذا الزر اكتب ما يلي:

كود :
Private Sub Command1_Click()
   Dim objWord As Word.Application
   Dim oDoc As Word.Document
   Dim oTable As Word.Range
   
   Dim i As Integer
   Dim j As Integer
   Dim sTemp As String
   
   Set objWord = CreateObject("word.application")    ' إنشاء نسخة من برنامج وورد
   Set oDoc = objWord.Documents.Add    ' إنشاء مستند جديد
   Set oTable = oDoc.Range    ' إنشاء نطاق نصي في المستند
   
   ' إعداد عناوين الأعمدة
   sTemp = ListView1.ColumnHeaders(1).Text
   For j = 2 To ListView1.ColumnHeaders.Count
       sTemp = sTemp & vbTab & ListView1.ColumnHeaders(j).Text
   Next
   
   ' إعداد البيانات
   ' لاحظ أن خلايا الصف الواحد مفصولة بالمفتاح تاب، و الصفوف مفصولة بالمفتاح إنتر
   For i = 1 To ListView1.ListItems.Count
       sTemp = sTemp & vbCrLf & ListView1.ListItems(i).Text
       For j = 2 To ListView1.ColumnHeaders.Count
           sTemp = sTemp & vbTab & ListView1.ListItems(i).SubItems(j - 1)
       Next
   Next
   
   oTable.Text = sTemp    ' إرسال البيانات إلى وورد كنص
   
   ' تحويل نص النطاق إلى جدول
   oTable.ConvertToTable vbTab, , , , WdTableFormat.wdTableFormatElegant   ' Formatted table
'    oTable.ConvertToTable vbTab, , , , , , , , , , , , , , , True           ' Ordinary table
'    oTable.ConvertToTable vbTab                                             ' No borders
   
   ' إظهار برنامج وورد - قد لا يظهر في مقدمة الشاشة لكنك تجده في شريط المهام
   objWord.Visible = True
   
   ' تنظيف الذاكرة
   Set objWord = Nothing
   Set oDoc = Nothing
   Set oTable = Nothing
End Sub

* عند تشغيل الكود السابق و النقر على الزر سيتم تشغيل برنامج Word و إظهاره محتوياً على البيانات المصدرة. يمكن للمستخدم حينها حفظ المستند أو إغلاقه دون حفظ.

* إذا أردنا تصدير البيانات و حفظ الملف دون تدخل المستخدم فلا داعي لإظهار Word، و عليه فإننا بدل السطر: objWord.Visible = True نكتب السطرين التاليين:

كود :
oDoc.SaveAs2 "C:\Users\user1\Desktop\MyFile.docx"    ' حفظ الملف مع تحديد مسار و اسم الملف
objWord.Quit    ' إغلاق وورد

نرجو الاستفادة و السلام.

اخي ناجي جظاك الله كل الخير 
مجهود ممتاز 
لكن ممكن تساعدني 
فى نموذج 
ارسال استعلام قمت بعملة من داخل الفيجوال بيسك 
باستخدام DBGrid1 
وقمت بعملى على الكريستال ريبورت 
هل يمكنى ارساله على ملف ورد 
ارجو الرد 
جزاك الله كل خير