首页 > 解决方案 > 尝试将打印命令包含到邮件合并 excel 代码中(更新代码)

问题描述

无法使文档打印输出命令正常工作...我正在运行邮件合并,并且该部分工作正常。我唯一的问题是在邮件合并运行后打印文档。我曾尝试在网上对此进行研究,但找不到类似的东西。如果我使用,Printout Range:=Printcurrentpage一切都很好,除了它只会打印 4 的第一页(显然)。但是,如果我使用Printalldocumentprintallpages,打印作业似乎会陷入循环。Word 文档返回一条消息,上面写着“请稍候......Word 正在尝试......” 我如何对其进行编码以便它能够: A. 打印文档 B. 打印整个文档

这是代码...

    Private Sub cmdprint_Click()

    Dim Sheet As Worksheet, wsName As String, DataSource As String, WordPath As String
    Dim WordApp As New Word.Application, WordDoc As Word.Document, StrName As String

    With ActiveWorkbook
    DataSource = .FullName
    WordPath = .Path & "\MailMerge_DD220.docx"
    wsName = .Sheets("dd220").Name
    StrName = .Sheets("dd220").Range("C2").Text
    SavePath = .Path & "\DD220 Forms\"
    End With

    With WordApp
    .Visible = True
    .DisplayAlerts = wdAlertsNone
    Set WordDoc = .Documents.Open(WordPath, AddToRecentFiles:=False)
    With WordDoc
    'Select Data Source and Complete Mail Merge



    With .MailMerge
    .MainDocumentType = wdFormLetters
    .Destination = wdSendToNewDocument
    .OpenDataSource Name:=DataSource, ConfirmConversions:=False, ReadOnly:=False, nkToSource:=True,_
     AddToRecentFiles:=False, PassWordDocument:="", PasswordTemplate:="",WritePassWordDocument:="",_
      WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto,  SubType:=wdMergeSubTypeAccess, _              
     Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=DataSource;Mode=Read;" & _
     "Extended Properties=""HDR=YES;IME", SQLStatement:="SELECT * FROM `" & wsName & "$`", SQLStatement1:=""
     With .DataSource
    .FirstRecord = wdDefaultFirstRecord
    .LastRecord = wdDefaultLastRecord
    .ActiveRecord = wdDefaultActiveRecord
    End With
    .Execute Pause:=False
    End With
    .Close SaveChanges:=False
    End With

    With .ActiveDocument
     NewFileName = StrName & " - DD220 - " & Format(Date, "dd mmm yyyy") & ".docx"
     .SaveAs savepath + NewFileName, FileFormat:=wdFormatXMLDocument, AddToRecentFiles:=False

       WordApp.Application.DisplayAlerts = wdAlertsNone
     .PrintOut Background = False ', , Range:=wdPrintAllDocument

     .Close SaveChanges:=False

    End With

   .DisplayAlerts = wdAlertsAll
   .Quit
    End With
    Set WordDoc = Nothing: Set WordApp = Nothing


     End Sub

标签: excelvbaprintingms-wordmailmerge

解决方案


推荐阅读