تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] الطباعة الى الوورد كود بحاجة لتعديل
#1
السلام عليكم ورحمة الله وبركاته
اعمل على برنامج يقوم بطباعة شهادات الطلاب الى الوور عند ضغط زر طباعة يقوم بنقل البيانات الى الوور في قالب تم عمله مسبقا الطباعة تتم بنجاح في حال تمت العملية لطالب واحد حسب هذا الكود

كود :
 Public Sub Print()
       Try
           '--------------------------------------------------------------
                     MSO.SetDllFiles()
           '--------------------------------------------------------------
           Dim MyWord As MSO.MSWord

           MyWord = New MSO.MSWord(Me)

           Dim TemplatePath As String = My.Application.Info.DirectoryPath & TextBox2.Text

           Dim TemplateInfo As New MSO.TemplateInfo(TemplatePath)
           With TemplateInfo
               '-------------------------------------
               .Caption = "التقرير"
               .PrintJob = GetPrintableJob2()
               With .ViewOptions
                   '-------------------------------------
                   .ShowBookmarks = False
                   .ShowTableGridlines = False
                   .ArabicNumeral = MSO.Enums.MSArabicNumeral.NumeralHindi
                   .DisplayPageBoundaries = True
                   .NormalViewDisplayRulers = True
                   .ViewType = MSO.Enums.MSViewType.PrintPreview
                   .WindowState = MSO.Enums.MSWindowState.Maximize
                   .NormalViewZoomPageFit = MSO.Enums.MSPageFit.PageFitBestFit
                   .NormalViewZoomPercentage = Nothing
                   '------------------------
                   .PrintPreviewDisplayRulers = True
                   .PrintPreviewPageFitness = New MSO.PrintPreviewPageFitness(0, 0)
                   .PrintPreviewZoomPageFit = MSO.Enums.MSPageFit.PageFitBestFit
                   .PrintPreviewZoomPercentage = Nothing
                   '-------------------------------------
               End With
           End With
           MyWord.AddNewTemplateInfo(TemplateInfo)
           '---------------------------------------
           'MyWord.PrintOut()
           MyWord.PrintPreview()
       Catch ex As Exception
           MSO.PrintingProcess.ShowErrorMsgAndClose(ex.Message)
       End Try

   End Sub

   Private Function GetPrintableJob2() As MSO.Printing.PrintJob
       Dim PrintJob As New MSO.Printing.PrintJob
       Load_supervisor()
       With PrintJob
           .AddText(StudName.Text, "StudName")
           .AddText(mark01.Text, "mark01")
           .AddText(mark02.Text, "mark02")
           .AddText(mark03.Text, "mark03")
           .AddText(mark04.Text, "mark04")
           .AddText(mark05.Text, "mark05")
           .AddText(mark06.Text, "mark06")
           .AddText(mark07.Text, "mark07")
           .AddText(mark08.Text, "mark08")
           .AddText(mark09.Text, "mark09")
           .AddText(mark10.Text, "mark10")
           .AddText(mark11.Text, "mark11")
           .AddText(mark12.Text, "mark12")
           .AddText(mark13.Text, "mark13")
           .AddText(mark14.Text, "mark14")

           With .AddTable()
               .DataTable = Get_Data()
               '-------------------------------------
               '.MinimumRowsAtTheBeginningOfTable = 3
               .IsFirstColumnAutoNumber = False
               .TableHeadBookMarkName = "TableHead_1"
               .FirstRowBookMarkName = "TableFirstRow_1"
               .DeleteTableIfNoData = False
       
           End With
       End With
       Return PrintJob
   End Function

   Public Function Get_Data()
       con.Open()
       Dim dt1 As New DataTable
       Dim cmd As New OleDbCommand("Select * From yearly where ID=@ID", con)
       cmd.Parameters.Clear()
       cmd.Parameters.AddWithValue("@ID", OleDbType.Integer).Value = id.Text
       Dim adp As New OleDbDataAdapter(cmd)
       adp.Fill(dt1)
       con.Close()
       Return dt1
   End Function

   Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click
       Print2()
   End Sub

المطلوب هو طباعة الشهادات الى الوورد حسب الصف بمعنى اقوم بالاستعلام عن طلبة الصف الرابع مثلا واضغط طباعة يتم ارسال البيانات الى الوورد ولو كان عدد الطلاب 40 يظهر لي ملف ب40 صفحة يظهر في كل صفحة شهادة كل واحد منهم، الكود السابق يعمل في حالة طباعة طالب واحد فقط

قمت بتجربة تعديل جملة الاستعلام ما حدث ان البيانات جميعها ظهرت في صفحة واحدة

ارجو تعديل الكود ليتناسب مع المطلوب ولكم جزيل الشكر
الرد }}}
تم الشكر بواسطة:
#2
موضوع ممتاز و انا احتاجه ،

للرفع حتى تعم الفائدة ، مع الشكر للجميع
اللهم ارحم من أسس هذا المنتدى (اباليث) و أجعل كل علم نافع تعلمناه في هذا المنتدى أجر له و صدقة تنفعه في قبره
الرد }}}
تم الشكر بواسطة: خالد20
#3
(21-06-21, 09:44 AM)أبووسم كتب : موضوع ممتاز و انا احتاجه ،

للرفع حتى تعم الفائدة ، مع الشكر للجميع

انا بحاجة ضرورية له وانتظر اجابة الاخوة جزاهم الله كل خير
الرد }}}
تم الشكر بواسطة:
#4
اولا يجب ان تدخل فى  Reverenc تلك المكتبات اخى الكريم 

1MSwordDllFiles.dl و Interop.Microsoft.Office.Core.dll
ثم تضيف هذا الفنكشن فى الفورم
كود :
Public Sub Print()

       Try
           '--------------------------------------------------------------
           ' مهم جداً أن تستدعي هذا الأمر قبل كتابة أي سطر برمجي يخص الطباعة
           MSO.SetDllFiles()
           '--------------------------------------------------------------
           Dim MyWord As MSO.MSWord
           MyWord = New MSO.MSWord(Me)
           Dim TemplatePath As String = My.Application.Info.DirectoryPath & "\RN.dotx"
           Dim TemplateInfo As New MSO.TemplateInfo(TemplatePath)
           With TemplateInfo
               '-------------------------------------
               .Caption = " "
               .PrintJob = GetPrintableJob()
               With .ViewOptions
                   '-------------------------------------
                   .ShowBookmarks = False
                   .ShowTableGridlines = False
                   .ArabicNumeral = MSO.Enums.MSArabicNumeral.NumeralContext
                   .DisplayPageBoundaries = True
                   .NormalViewDisplayRulers = True
                   .ViewType = MSO.Enums.MSViewType.PrintPreview
                   .WindowState = MSO.Enums.MSWindowState.Maximize
                   .NormalViewZoomPageFit = MSO.Enums.MSPageFit.PageFitBestFit
                   .NormalViewZoomPercentage = Nothing
                   '------------------------
                   .PrintPreviewDisplayRulers = True
                   .PrintPreviewPageFitness = New MSO.PrintPreviewPageFitness(0, 0)
                   .PrintPreviewZoomPageFit = MSO.Enums.MSPageFit.PageFitBestFit
                   .PrintPreviewZoomPercentage = Nothing
                   '-------------------------------------
               End With
           End With
           MyWord.AddNewTemplateInfo(TemplateInfo)
           '---------------------------------------
           'MyWord.PrintOut()
           MyWord.PrintPreview()

       Catch ex As Exception
           MSO.PrintingProcess.ShowErrorMsgAndClose(ex.Message)
       End Try
   End Sub
   '************* دالة خاصة بالطباعة ***********
   Private Function GetPrintableJob() As MSO.Printing.PrintJob

       Dim PrintJob As New MSO.Printing.PrintJob
       With PrintJob

           '============ طباعه راس الفاتوره ==============================

           '---------------------  Table 2 That Exist In Word Document ------------------

           .AddText(KASHF_CODE.Text, "KASHF_ID")
           .AddText(KASH_DATE.Value.Date, "KASH_DATE")
           .AddText(SIK_NAME.Text, "SIK_NAME")
           .AddText(SIK_AGE.Text, "SIK_AGE")
           .AddText(doc_name.Text, "doc_name")
           .AddText(DOC_TAKHSOS.Text, "DOC_TAKHSOS")
           .AddText(HARARA_.Text, "HARARA_")
           .AddText(DAKHT_.Text, "DAKHT_")
           .AddText(NABD_.Text, "NABD_")
           '.AddText(item_count.Text, "item_count")
           '.AddText(TAX_value.Text, "TAX_value")
           '.AddText(TAX_TOTAL.Text, "TAX_TOTAL")
           '.AddText(DISCOUNT_value.Text, "DISCOUNT_value")
           '.AddText(DISCOUNT_TOTAL.Text, "DISCOUNT_TOTAL")
           '.AddText(final_total.Text, "final_total")
           '.AddText(paid.Text, "paid")
           '.AddText(unpaid.Text, "UNpaid")
           'End With
           '####################################################################################
           '============= طباعه الداتا تفاصيل الفاتوره ===================
           'With .AddTable()
           '    .DataTable = Get_All_PRD()
           '    '-------------------------------------
           '    '.MinimumRowsAtTheBeginningOfTable = 3
           '    .IsFirstColumnAutoNumber = False
           '    .TableHeadBookMarkName = "TableHead_1"
           '    .FirstRowBookMarkName = "TableFirstRow_1"
           '    .DeleteTableIfNoData = False
           '    '-------------------------------------
           '    .AddTextColumn("PRD_ID")
           '    .AddTextColumn("prd_code")
           '    .AddTextColumn("prd_name")
           '    .AddTextColumn("BUYPRICE")
           '    .AddTextColumn("QTY")
           '    .AddTextColumn("TOTALAMOUNT")
           'End With
       End With
       Return PrintJob
   End Functi


ملحوظه 

RN.dotx هذا اسم ملف الورد ويتم حفظه كقالب وورد
الرد }}}
تم الشكر بواسطة:
#5
(21-06-21, 08:14 PM)خالد كامل1 كتب : اولا يجب ان تدخل فى  Reverenc تلك المكتبات اخى الكريم 

1MSwordDllFiles.dl و Interop.Microsoft.Office.Core.dll
ثم تضيف هذا الفنكشن فى الفورم
كود :
Public Sub Print()

       Try
           '--------------------------------------------------------------
           ' مهم جداً أن تستدعي هذا الأمر قبل كتابة أي سطر برمجي يخص الطباعة
           MSO.SetDllFiles()
           '--------------------------------------------------------------
           Dim MyWord As MSO.MSWord
           MyWord = New MSO.MSWord(Me)
           Dim TemplatePath As String = My.Application.Info.DirectoryPath & "\RN.dotx"
           Dim TemplateInfo As New MSO.TemplateInfo(TemplatePath)
           With TemplateInfo
               '-------------------------------------
               .Caption = " "
               .PrintJob = GetPrintableJob()
               With .ViewOptions
                   '-------------------------------------
                   .ShowBookmarks = False
                   .ShowTableGridlines = False
                   .ArabicNumeral = MSO.Enums.MSArabicNumeral.NumeralContext
                   .DisplayPageBoundaries = True
                   .NormalViewDisplayRulers = True
                   .ViewType = MSO.Enums.MSViewType.PrintPreview
                   .WindowState = MSO.Enums.MSWindowState.Maximize
                   .NormalViewZoomPageFit = MSO.Enums.MSPageFit.PageFitBestFit
                   .NormalViewZoomPercentage = Nothing
                   '------------------------
                   .PrintPreviewDisplayRulers = True
                   .PrintPreviewPageFitness = New MSO.PrintPreviewPageFitness(0, 0)
                   .PrintPreviewZoomPageFit = MSO.Enums.MSPageFit.PageFitBestFit
                   .PrintPreviewZoomPercentage = Nothing
                   '-------------------------------------
               End With
           End With
           MyWord.AddNewTemplateInfo(TemplateInfo)
           '---------------------------------------
           'MyWord.PrintOut()
           MyWord.PrintPreview()

       Catch ex As Exception
           MSO.PrintingProcess.ShowErrorMsgAndClose(ex.Message)
       End Try
   End Sub
   '************* دالة خاصة بالطباعة ***********
   Private Function GetPrintableJob() As MSO.Printing.PrintJob

       Dim PrintJob As New MSO.Printing.PrintJob
       With PrintJob

           '============ طباعه راس الفاتوره ==============================

           '---------------------  Table 2 That Exist In Word Document ------------------

           .AddText(KASHF_CODE.Text, "KASHF_ID")
           .AddText(KASH_DATE.Value.Date, "KASH_DATE")
           .AddText(SIK_NAME.Text, "SIK_NAME")
           .AddText(SIK_AGE.Text, "SIK_AGE")
           .AddText(doc_name.Text, "doc_name")
           .AddText(DOC_TAKHSOS.Text, "DOC_TAKHSOS")
           .AddText(HARARA_.Text, "HARARA_")
           .AddText(DAKHT_.Text, "DAKHT_")
           .AddText(NABD_.Text, "NABD_")
           '.AddText(item_count.Text, "item_count")
           '.AddText(TAX_value.Text, "TAX_value")
           '.AddText(TAX_TOTAL.Text, "TAX_TOTAL")
           '.AddText(DISCOUNT_value.Text, "DISCOUNT_value")
           '.AddText(DISCOUNT_TOTAL.Text, "DISCOUNT_TOTAL")
           '.AddText(final_total.Text, "final_total")
           '.AddText(paid.Text, "paid")
           '.AddText(unpaid.Text, "UNpaid")
           'End With
           '####################################################################################
           '============= طباعه الداتا تفاصيل الفاتوره ===================
           'With .AddTable()
           '    .DataTable = Get_All_PRD()
           '    '-------------------------------------
           '    '.MinimumRowsAtTheBeginningOfTable = 3
           '    .IsFirstColumnAutoNumber = False
           '    .TableHeadBookMarkName = "TableHead_1"
           '    .FirstRowBookMarkName = "TableFirstRow_1"
           '    .DeleteTableIfNoData = False
           '    '-------------------------------------
           '    .AddTextColumn("PRD_ID")
           '    .AddTextColumn("prd_code")
           '    .AddTextColumn("prd_name")
           '    .AddTextColumn("BUYPRICE")
           '    .AddTextColumn("QTY")
           '    .AddTextColumn("TOTALAMOUNT")
           'End With
       End With
       Return PrintJob
   End Functi


ملحوظه 

RN.dotx هذا اسم ملف الورد ويتم حفظه كقالب وورد


اخي الكريم لا مشكلة لدي في عمل الكود يعمل بشكل ناجح المطلوب هو كما ذكرت معاينة عدة سجلات في نفس الملف وتكرار الصفحة حسب عدد السجلات لان الكود يعمل مع سجل واحد فقط ما اريده هو نفس موضوع دمج المراسلات في الوورد
الرد }}}
تم الشكر بواسطة:
#6
هل من اجابة؟؟؟ لا اظن ان سؤالي ليس له اجابة لدى خبراء المنتدى
الرد }}}
تم الشكر بواسطة:
#7
أرجو اغلاق الموضوع لعدم وجود اجابة
الرد }}}
تم الشكر بواسطة:
#8
السلام عليكم ورحمة الله وبركاته
أنا أحتاج نفس هذا الموضوع وحاولت لكن ماقدرت ..... عموما لقيت شرح للأستاذ عبدالله الدوسري يشرح الموضوع بالتفصيل لكن ماضبطت معي ... هذا  رابط الشرح 

https://www.youtube.com/results?search_q...8%B1%D8%AF


أو ممكن تعمل الشهادات على الكريستال ريبورت وهذا أسهل بكثير من عملية الوورد 
بحيث إنك تصمم الشهادة على الكريستال ريبورت ويعمل نفس عمل دمج المراسلات في الوورد  والرابط اللي في الأسفل يشرح الطريقة 

https://stackoverflow.com/questions/1092...tal-report

دمت بود
الرد }}}
تم الشكر بواسطة:
#9
(27-06-21, 10:34 PM)جيولوجي مبتدئ كتب : السلام عليكم ورحمة الله وبركاته
أنا أحتاج نفس هذا الموضوع وحاولت لكن ماقدرت ..... عموما لقيت شرح للأستاذ عبدالله الدوسري يشرح الموضوع بالتفصيل لكن ماضبطت معي ... هذا  رابط الشرح 

https://www.youtube.com/results?search_q...8%B1%D8%AF


أو ممكن تعمل الشهادات على الكريستال ريبورت وهذا أسهل بكثير من عملية الوورد 
بحيث إنك تصمم الشهادة على الكريستال ريبورت ويعمل نفس عمل دمج المراسلات في الوورد  والرابط اللي في الأسفل يشرح الطريقة 

https://stackoverflow.com/questions/1092...tal-report

دمت بود

هذا الحل فكرت به ولكن المشكلة انني اريد حفظ البيانات في ملف وورد، اعلم انه يمكن تصدير البيانات من الكريستال ريبورت الى الوررد والسؤال هو هل يحدث اختلاف في التنسيقات؟؟؟

وهل من المعقول عدم وجود كود لحل مشكلتي؟
الرد }}}
تم الشكر بواسطة:
#10
كود قفل برنامج URL helper فيجوال 2012
ممكن الرد فى اسرع وقت
الرد }}}
تم الشكر بواسطة: خالد20



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


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