Mi dispiace postare una domanda che sembra stupida anche a me, ma mi sta facendo impazzire. Ho una sub che stampa una lettera con word mailmerge. I dati venivano presi dma uno sheet excel, e tutto funzinava. Per varie ragioni, ho portato tutti i dati sotto sqlexpress (incluso quelli di excel) modificando il codice quanto necessario. Purtroppo, dopo le correzioni fatte, mi trovo bloccato con il runtime errror Data type mismatch di cui non riesco a venire a capo. L'errore è nello statement .opendatasource. C'è un modo dim capire che cosa provoca l'errore?
Sub PrintLetter2(Numerotessera As Double)
'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
Dim strConnection As String, myquery As String
Dim bPrintBackgroud As Boolean
Dim oMerged As Document
Set WordApp = New Word.Application
filepath = CurrentProject.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
myquery = "SELECT * FROM [LibroSoci] WHERE [Numero tessera] = " & Numerotessera
With WordApp
.ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
.ActiveDocument.MailMerge.OpenDataSource _
Name:="C:\Testhyp4\RicevuteConPrimaNotaFE.accdb", _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:=RicevuteCPNCompleto, _
SQLStatement:=myquery, SQLStatement1:="", _
SubType:=wdMergeSubTypeOther
bPrintBackgroud = Options.PrintBackground
Options.PrintBackground = False
.Application.DisplayAlerts = wdAlertsNone
With .ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
'filepath & "\" & CurrentProject.Name, _
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
Set oMerged = .ActiveDocument
'Show the Print dialog box
.Visible = True
.Activate
.Dialogs(wdDialogFilePrint).Show
oMerged.Close 0
'Restore all the alerts
.Application.DisplayAlerts = wdAlertsAll
Options.PrintBackground = bPrintBackgroud
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