Попытка включить команду печати в код Excel слияния (обновленный код) - PullRequest
0 голосов
/ 21 октября 2019

Невозможно заставить работать команду печати документа ... Я выполняю слияние по почте, и эта часть работает отлично. Моя единственная проблема - печать документа после слияния. Я пытался исследовать это в Интернете, но не смог найти ничего похожего. Если я использую, Printout Range: = Printcurrentpage все работает отлично, за исключением того, что будет напечатана только первая страница из 4 (очевидно). Но если я использую Printalldocument или printallpages , задание на печать, похоже, застревает в цикле. Документ 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
...