Grazie a Tutti gli amici.
Mi scuso se mi inserisco, forse in maniera impropria, dato che, per questa necessità contingente uso VB6 anziceh VBA

Da una form ho la possibilità di lanciare una stampa selezionata
La funzione produce una corretta stampa dei dati.
Alla fine della funzione faccio il rilascio delle risolrse excel utilizzate per la produzione del report.
Mi aspetterei di vedere in task manager chiudersi il processo, mentre rimane attivo.
Se immediatamente rieseguo la stampa con parametri diversi, la funzione, speculare alla prima, va in errore


Allego il codice con la posizionalità dell'errore



Private Function StampaReport_Sintetico(Strsql_Ado As String, Stato As String) As Boolean

'
' Viene eseguita la stampa del foglio excel di supporto
'

StampaReport_Sintetico = False

Dim rs1 As ADODB.Recordset
Dim FileXls As String
Dim FileUtente As String
Dim FoglioReport As String
Dim MioFoglio As String
Dim PathUtente As String
Dim Strsql As String
Dim nrec As Integer
Dim Resto As Integer
Dim NrecfromPage As Integer
Dim NPage As Integer
Dim NRighe As Integer
Dim Riga As Integer
Dim RigaStart As Integer
Dim Rigaend As Integer
Dim MaxRec As Integer
Dim NewTesoro As Double
Dim Dtdal As String
Dim DtAl As String
Dim TotImpegni As Double

' difinizioni per file XLS
Dim a As Excel.Application
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet
Dim valore As Integer

' Impostazione Parametri di default per applicazione

FileXls = "Report_PIF.xls"
PathUtente = "C:\Archivi\PIF"
FileUtente = PathUtente & "\" & FileXls 'App.Path & "\" & FileXls
' FoglioReport = "Inv_PIF_Sint"

' EVIDENZIO IN Foglio excel la situazione della tesoreria
MioFoglio = "Inv_PIF_Sint"
NrecfromPage = 41
RigaStart = 11
MaxRec = 51
NPage = 0
Dtdal = ""
DtAl = ""
NRighe = 0
TotImpegni = 0

'apri excel
Set a = New Excel.Application

'apre il file
Set wb = a.Workbooks.Open(FileUtente)

'seleziona il foglio
Set ws = wb.Worksheets(MioFoglio)


' Orientamento Orizzontale --> vbPRORLandscape
' Orientamento Verticale --> vbPRORPortrait

' potresti usare la proprietà Printer.Orientation che assume i seguenti valori:
' vbPRORLandscape e vbPRORPortrait

100 Sheets(MioFoglio).Select <-------------- istruzione in errore in caso di riesecuzione
Sheets(MioFoglio).PageSetup.Orientation = vbPRORPortrait
' editazione Utente
Sheets(MioFoglio).Cells(55, 4) = "WR1049" 'NameUser
Sheets(MioFoglio).Cells(55, 6) = "Merdaiolo Felice" 'NameUser
Sheets(MioFoglio).Cells(4, 9) = Date

'Valore = ws.Cells(3, 4)

' Inizializza Foglio Righe di Dettaglio
Call InizializzaGrigliaXLS(MioFoglio, RigaStart, MaxRec)
' Testata
Select Case Stato
Case "A"
Sheets(MioFoglio).Cells(4, 4) = "Attive"
Case "S"
Sheets(MioFoglio).Cells(4, 4) = "Storico"
End Select

' Lettura degli Impegni per Editazione

nrec = 0
Riga = RigaStart

Strsql = Strsql_Ado
Set rs1 = conn.Execute(Strsql)
Do Until rs1.EOF
If nrec > NrecfromPage Then
' stampa del foglio in analisi
NPage = NPage + 1
Sheets(MioFoglio).Columns("C:C").EntireColumn.Auto Fit
Sheets(MioFoglio).Columns("G:G").EntireColumn.Auto Fit
Sheets(MioFoglio).Columns("I:I").EntireColumn.Auto Fit
Sheets(MioFoglio).Select
ActiveWindow.PrintOut Copies:=1, Collate:=True
' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
RigaStart = 11
MaxRec = 51
' Inizializza Foglio Righe di Dettaglio
Call InizializzaGrigliaXLS(MioFoglio, RigaStart, MaxRec)
Riga = RigaStart
nrec = 0
End If
NRighe = NRighe + 1
Sheets(MioFoglio).Cells(Riga, 1) = NRighe
Sheets(MioFoglio).Cells(Riga, 2) = rs1("Data_Impegno")
Sheets(MioFoglio).Cells(Riga, 3) = rs1("DENOMINAZIONE")
Sheets(MioFoglio).Cells(Riga, 7) = FormatEuro(rs1("Importo"))
Sheets(MioFoglio).Cells(Riga, 9) = rs1("D_Forma_Tecnica")
TotImpegni = TotImpegni + rs1("Importo")
If Dtdal = "" Then
Dtdal = rs1("Data_Impegno")
End If
DtAl = rs1("Data_Impegno")
Sheets(MioFoglio).Cells(6, 4) = Dtdal
Sheets(MioFoglio).Cells(7, 4) = DtAl
Riga = Riga + 1
nrec = nrec + 1
rs1.MoveNext
Loop
Riga = 53
Sheets(MioFoglio).Cells(Riga, 7) = FormatEuro(TotImpegni)
Sheets(MioFoglio).Columns("C:C").EntireColumn.Auto Fit
Sheets(MioFoglio).Columns("G:G").EntireColumn.Auto Fit
Sheets(MioFoglio).Columns("I:I").EntireColumn.Auto Fit
Sheets(MioFoglio).Select
Sheets(MioFoglio).PrintOut Copies:=1, Collate:=True
' ActiveWindow.Sheets(MioFoglio).Select.PrintOut Copies:=1, Collate:=True

' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

rs1.Close
Set rs1 = Nothing

'chiude tutto
wb.Save
wb.Close

a.Quit

Set ws = Nothing
Set a = Nothing

MsgBox "finito aggiornamento del foglio excel di stampa"

StampaReport_Sintetico = True

End Function


Mi sembra di operare correttamente

con

Dim a As Excel.Application
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet

Definisco oggetti

con

wb.Save
wb.Close

a.Quit

Set ws = Nothing
Set a = Nothing

Chiudo gli oggetti excel e rilascio le risorse.
Penserei che venisse chiuso anche il processo assegnato a excel.

se rieseguo la stampa mi va in errore su riga 100

100 Sheets(MioFoglio).Select

Come posso risolvere ?

Grazie

Moreno