Sub PrintLetter2(numerotessera As String)
'Mail merge e stampa su stampante di default
'On Error GoTo ErrorHandler
' open template in Word
Dim filepath As String
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = New Word.Application
filepath = ThisWorkbook.Path
Debug.Print filepath, numerotessera
With WordApp
.Visible = True
Set WordDoc = .Documents.Open(filepath & "LetteraNuoviSoci.docx")
End With
'MailMerge selected records from table to Word document
With WordApp
.ActiveDocument.MailMerge.OpenDataSource Name:=filepath & "" & ThisWorkbook.Name, _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, _
SQLStatement:="SELECT * FROM `rangesoci` WHERE [Numero Tessera] =" & numerotessera, SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
With .ActiveDocument.MailMerge
.Destination = wdSendToPrinter
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
End With
WordDoc.Close SaveChanges:=False
WordApp.Quit
ErrorHandlerExit:
Exit Sub
ErrorHandler:
If Err = 429 Then
'word is not running; open word with CreateObject
Set appWord = CreateObject(Class:="Word.Application")
End If
End Sub |