21-06-21, 09:16 PM
(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 هذا اسم ملف الورد ويتم حفظه كقالب وورد
اخي الكريم لا مشكلة لدي في عمل الكود يعمل بشكل ناجح المطلوب هو كما ذكرت معاينة عدة سجلات في نفس الملف وتكرار الصفحة حسب عدد السجلات لان الكود يعمل مع سجل واحد فقط ما اريده هو نفس موضوع دمج المراسلات في الوورد

