..ho anche risposto al pvt....![]()
..ho anche risposto al pvt....![]()
...and I miss you...like the deserts miss the rain...
ragazzi sto impazzendo: sto cercando di fare una cosa in excel e ho lo stesso vostro problema: mi resta appeso il processo in memoria... mi potete dire ESATTAMENTE quale istruzione termina il processo di excel? perche ho provato con ApplicationExcel.QUIT e niente... ho provato a settare tutte le variabili a nothing e niente...
aiuto!!!!
nn mi ricordo la discussione...a cui avevo partecipato ma se vuoi chiudere e salvare il foglio di excell usa questo codice
sembra stranmo veramente quell'open pero il foglio lo vedrai aprisi per circa 10 secondi si salva e poi si chiude!!!codice:FileExcel.Open
Ciao
ma io riesco a chiuderlo non riesco a distruggere il processo in memoria che rimane appeso...
ah io ho capito per fare quello io chiudo il prg fatto in vb....cmq anche io ho quel problema!!
Ciao, scusami ma ho visto solo adesso il tuo post!Originariamente inviato da niddu
ragazzi sto impazzendo: sto cercando di fare una cosa in excel e ho lo stesso vostro problema: mi resta appeso il processo in memoria... mi potete dire ESATTAMENTE quale istruzione termina il processo di excel? perche ho provato con ApplicationExcel.QUIT e niente... ho provato a settare tutte le variabili a nothing e niente...
aiuto!!!!
Il problema è uno: ogni volta che fai riferimento ad un oggetto della libreria excel, succede un casino, nel senso che se non stai attento ti succede quanto hai appena scritto. Mi sembra di aver letto da qualche parte che è un problema diciamo di gestione dei contatori nella libreria di excel (la fonte era Ms!). Ogni oggetto che usi deve essere chiuso correttamente (usando il metodo adeguato) e settato a Nothing.
Il problema più serio lo porta l'oggetto range, che non fa parte di nessuna collection ma che è presente come proprietà sia dell'oggetto WorkShett che dell'oggetto Application.
Se decidi di fare riferimento ad un range di celle dell'oggetto worksheet per esempio, devi usare la sintassi seguente:
prchè se usi :codice:xlWorkSheet.Range(xlWorkSheet.Cell(x2,y2),xlWorkSheet.Cell(x2,y2))
la libreria si incasina e ti apre, se non mi sbaglio, un oggetto range per prendere i valori di Cell! Ovviamente tu chiudi tutti gli oggetti che hai creato e usato (xlApplication e xlWorkSheet) e ti rimane un processo in memoria senza che tu ne sappia niente!codice:xlWorkSheet.Range(Cell(x2,y2),Cell(x2,y2))
Se cerchi sull'MSDN on-Line di Microsoft dovresti trovare qualcosa al riguardo.
Aprite gli occhi quando usate gli ocx e leggete attentamente la documentazione relativa.
![]()
Anche io ho lo stesso problema, dal codice vb di acess apro un file excell ma quando lo chiudo mi rimane nel Task Manager Excel aperto pur avendo settato con Nothing sia le excel (Applicatione, Workbook e worksheet). Se chiudo acess allora mi si chiude anche excell.
Chiu mi può aiutare?
Ciao a tutti.
Mi trovo nella Vostra stessa situazione o, meglio, penso di avere lo stesso problema di cui avete discusso.
Mi spiego meglio.
Da un banale File di testo (sul quale un vecchio motore matematico redirige le sue uscite, chiamato "Uscite.txt") importo, tramite una Macro che ho registrato e chiamato "Load", i dati numerici in un file .xls.
Fatta la Macro, sono andato a verderne il codice che ho "copi_incollato" nel codice della mia sub.
Pensate che avevo letto già questi post prima di fare tare sub, pensando di evitare il problema copiando il codice che il compilatore stesso genera con la macro, ma così non è stato: ho un processo Excel sempre attivo, al termine della sub!!!
Ecco il mio codice:
Perchè mi rimane il task aperto?!?!?codice:Public Sub CreaGrafico() Dim exApp As Excel.Application Dim exWb As Excel.Workbook Dim exWs As Excel.Worksheet 'apre excel Set exApp = New Excel.Application exApp.Visible = True Dim exRange As Excel.Range 'apre il file xls strPercorso = "C:\Collegamento\Grafico.xls" Set exWb = exApp.Workbooks.Open(strPercorso) 'seleziona il foglio 1 Set exWs = exWb.Worksheets(1) Set exRange = exWs.Range("A3") With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Collegamento\Uscite.txt", Destination:=exRange) .Name = "Load" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlFixedWidth .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2) .TextFileFixedColumnWidths = Array(15, 10, 10, 10, 12) .Refresh BackgroundQuery:=False End With 'salva e chiude file exWb.Save exWb.Close 'esce da excel exApp.Application.Quit 'cancella le variabili oggetto Set exRange = Nothing Set exWs = Nothing Set exWb = Nothing Set exApp = Nothing End Sub![]()
Sapreste aiutarmi?
Vi ringrazio in anticipo![]()
:quote:
Ciao a tutti!
Sembra che il problema fosse l'individuazione della giusta WorkSheet.
Dal "With", invece di agganciarsi all'ActiveSheet che il compilatore suggeriva tramite la mia Macro, ho forzato sulla WorkSheet appena dichiarata ed aperta.
Se a qualcuno servisse, ecco come ho risolto:
NON FUNZIONANTE:
FUNZIONANTE:codice:. . . With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Collegamento\Uscite.txt", Destination:=exRange) . . .
codice:. . . Set exWs = exWb.Worksheets(1) . . . With exWs.QueryTables.Add(Connection:= _ "TEXT;C:\Collegamento\Uscite.txt", Destination:=exRange) . . .
Grazie comunque per l'Aiuto.
![]()
![]()
![]()