Access e VBA

martedì 25 marzo 2008 - 15.36

ciccios100 Profilo | Junior Member

Ciao a tutti, vi posto questo codice che ho inserito in un bottone di una maschera di Access........
Il pulsante mi permette di copiare delle righe presenti su un fogilio di excel in una tabella di access,ma cliccando 2 volte sul bottone l'applicazione mi si blocca,controllando il task manager mi accorgo che rimane attivo un processo EXCEL.exe e questo non viene chiuso finchè nn chiudo access,come mai?Ho dimenticato di chiudere qualcosa?a me sembra di no,eppure!!!!!!!!Ringrazio tutti coloro mi vorranno dare una mano,ciao e grazie ancora!

Private Sub Comando0_Click() Dim DBCOrrente As DAO.Database Dim Tabella As DAO.Recordset Dim I As Long Dim Cella Dim Percorso 'Apri File Excels Percorso = Excel.Application.GetOpenFilename("File Excels(*.xls),*.xls", , "Apri", , False) Workbooks.Open Filename:=Percorso 'Apro Tabella1 Set DBCOrrente = CurrentDb Set Tabella = DBCOrrente.OpenRecordset("CONTROLLO") 'Copio le righe del CONTROLLO nella tabella I = 21 Cella = Worksheets("CONTROLLO").Range("A" & I) Do While Cella <> "" On Error GoTo Errori Tabella.AddNew Tabella.Fields("Cod_lavoro") = Worksheets("CONTROLLO").Range("A" & I) Tabella.Fields("Descrizione") = Worksheets("CONTROLLO").Range("B" & I) Tabella.Update I = I + 1 Cella = Worksheets("CONTROLLO").Range("A" & I) Errori: 'Routine per gestione errori Select Case Err.Number 'Controlla il numero dell'errore Case 3022 End Select Resume Next 'Riprende dalla riga successiva Loop 'Chiudo Tabella Tabella.Close DBCOrrente.Close 'Chiude File Excels Workbooks("COMMESSA PROTOTIPO.xls").Close End Sub
Ciccio
>>Domandare è lecito,rispondere è cortesia

sara_80 Profilo | Newbie

ciao,
in effetti è un problema comune e noioso.
potresti provare a riscrivere il codice utilizzando queste cose:

istanziare
Dim xlApp as Excel.Application

ma diventa necessario anche fare:
Dim xlBook as Excel.Workbook
Dim xlSheet as Excel.Worksheet

poi settarli sui valori che occorrono, ad esempio:
Set xlBook = xlApp.Workbooks.Open(App.Path & "\Esempio.xls")
Set xlSheet = xlBook.Worksheets("Foglio1")

al posto di quello che hai messo tu:
Percorso = Excel.Application.GetOpenFilename("File Excels(*.xls),*.xls", , "Apri", , False)



poi al momento di chiudere:
xlBook.Close (True/False) per chiudere salvando/non salvando

xlApp.Quit

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

così facendo excel si dovrebbe chiudere tranquillamente...
ma attenzione... controlla che nel tuo codice non ci sia assolutamente nessun riferimento diretto ad excel altrimenti tutto diventa vano...
se richiami direttamente EXCEL dovresti killare il processo utilizzando il PID

dimmi come va.

ciao Sara

ciccios100 Profilo | Junior Member

Ti ringrazio,aveo già trovato la risp, comunque grazie mille lo stesso,la risposta è esattissima....................ciao e grazie ancora
Ciccio
>>Domandare è lecito,rispondere è cortesia
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5