Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

Anomalia in chiusura Istanze EXCEL da vb6 Opzioni
Misonsan
Inviato: Friday, May 25, 2012 6:54:04 AM
Rank: AiutAmico

Iscritto dal : 7/8/2007
Posts: 77
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.AutoFit
Sheets(MioFoglio).Columns("G:G").EntireColumn.AutoFit
Sheets(MioFoglio).Columns("I:I").EntireColumn.AutoFit
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.AutoFit
Sheets(MioFoglio).Columns("G:G").EntireColumn.AutoFit
Sheets(MioFoglio).Columns("I:I").EntireColumn.AutoFit
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
Brick wall
Moreno
Sponsor
Inviato: Friday, May 25, 2012 6:54:04 AM

 
a10n11
Inviato: Friday, May 25, 2012 6:55:03 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
a mio modesto parere l'errore dovrebbe essere nella mancata istanza all'oggetto "A" dei range del foglio.
con l'istruzione (Set ws = wb.Worksheets(MioFoglio)) crei l'istanza poi non la usi più.
prova con questa modifica :

esempio:
With Ws
.Cells(55, 4) = "WR1049" 'NameUser
ecc. ecc. all'interno dell'istruzione With, devi praticamente sostituire tutte le ricorrenze di
Sheets(MioFoglio)
.....
end with

prova senza impegno.
saluti
Giap



Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.