Intanto Buona Pasqua (gli ospiti se ne sono andati, ...).
Lo so che VB6 non è più attuale, ma non ho ancora avuto il coraggio di affrontare VB.net: spero che ci sia ancora qualcuno ad aiutarmi.
Ho scritto una piccola procedura per stampare un Fie.xls in .pdf.
Funziona tutto lanciando il file .exe fino a Windows 7. In Windows 10 non funziona.
Da quanto ho potuto verificare, credo che l'errore dipenda dalla chiamata della connessione: se metto un apice davanti alla chiamata e alla procedura coinvolta, l'errore non si verifica.
Questa è la procedura che da errore:
codice:Sub Stampa() On Error GoTo Errore_Stampa Dim msAccess As Access.Application Dim rcrdst As ADODB.Recordset Dim sSQL As String Dim blRet As Boolean, NomeReport As String, NomeFilePDF As String Set msAccess = New Access.Application msAccess.OpenCurrentDatabase (MainDir & "PrgOrdNsf\DB\Conversioni.mdb") If MsgBox("Stampare anche l'Ordine per il Cliente?", vbYesNo) = vbYes Then NomeReport = "Ordine_XLS_per_Cli" NomeFilePDF = Cliente & "_Ord_Nsf_" & DataTxt blRet = ConvertReportToPDF(NomeReport, vbNullString, MainDir & "\OrdiniPerClienti\" & NomeFilePDF & ".pdf", False, True, 150, "", "", 0, 0, 0) End If NomeReport = "Ordine_XLS" NomeFilePDF = "OrdNsfCli_" & Cliente & "_" & DataTxt blRet = ConvertReportToPDF(NomeReport, vbNullString, MainDir & "\ArchivioOrdini\" & NomeFilePDF & ".pdf", False, True, 150, "", "", 0, 0, 0) msAccess.CloseCurrentDatabase Set msAccess = Nothing Exit Sub Errore_Stampa: MsgBox "C'è un errore nella stampa dei File .pdf" End Sub
È però possibile che siano anche le stringhe che eseguono la conversione a generare l'errore e non ho avuto modo di verificarlo
So però che se faccio eseguire il codice con queste variazioni, rilevo l'errore:
Come si può vedere, le due stringhe che generano la stampa .pdf son inibite, mentre quelle della connessione no.codice:Sub Stampa() On Error GoTo Errore_Stampa Dim msAccess As Access.Application Dim rcrdst As ADODB.Recordset Dim sSQL As String Dim blRet As Boolean, NomeReport As String, NomeFilePDF As String Set msAccess = New Access.Application msAccess.OpenCurrentDatabase (MainDir & "PrgOrdNsf\DB\Conversioni.mdb") If MsgBox("Stampare anche l'Ordine per il Cliente?", vbYesNo) = vbYes Then NomeReport = "Ordine_XLS_per_Cli" NomeFilePDF = Cliente & "_Ord_Nsf_" & DataTxt ' blRet = ConvertReportToPDF(NomeReport, vbNullString, MainDir & "\OrdiniPerClienti\" & NomeFilePDF & ".pdf", False, True, 150, "", "", 0, 0, 0) End If NomeReport = "Ordine_XLS" NomeFilePDF = "OrdNsfCli_" & Cliente & "_" & DataTxt ' blRet = ConvertReportToPDF(NomeReport, vbNullString, MainDir & "\ArchivioOrdini\" & NomeFilePDF & ".pdf", False, True, 150, "", "", 0, 0, 0) msAccess.CloseCurrentDatabase Set msAccess = Nothing Exit Sub Errore_Stampa: MsgBox "C'è un errore nella stampa dei File .pdf" End SubErrore_Stampa: MsgBox "C'è un errore nella stampa dei File .pdf" End Sub
Quindi l'errore dovrebbe essere proprio lì.
Spero che qualcuno sappia indicarmi una connessione valida per tutti i S.O. o che, al limite mi spieghi come fare una procedura condizionale che verifichi quale S.O. si sta utilizzando e di conseguenza quale procedura adottare.
Grazie.

Rispondi quotando