Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 8 su 8

Oggetto Workbooks che non si chiude

  1. #1
    damio non è in linea Novello
    Dovendo effettuare un importazione di dati da un foglio excel a un db di access ho utlizzato la seguente routine:

    'apro
    Workbooks.Open Filename:="Z:\miofoglio.xls"

    'chiudo
    Workbooks.Application.Quit
    Workbooks(Chdir).Close SaveChanges:=False

    Il mio problema è che nel pc che esegue questa routine rimane un istanza aperta di excel rendondo il progrmma stesso (excle) inutilizzabile finche non si termina a mano tale servizio (task-manager)

    ho provato anche con
    Set Workbooks = Nothing
    per eliminare l'oggetto ma niente.
    Volevo sapere se è possibile terminare tale istanza senza magari chiudere eventuali altre istanze di Excel.

  2. #2
    vb6_ non è in linea Scolaretto

    Ma per aprire Excel hai usato CreateObject o GetObject?

    Devi rilasciare l’oggetto con cui hai aperto un’instanza…es:
    (tratto dalla guida)

    Dim xlApp As Object' Dichiara la variabile in cui
    ' memorizzare il riferimento.

    Set xlApp = CreateObject("excel.application")
    ' È necessario impostare la proprietà Visible
    ' su True per visualizzare l'applicazione.
    xlApp.Visible = True
    ' Utilizza xlApp per accedere ad altri oggetti
    ' di Microsoft Excel.
    xlApp.Quit' Al termine, utilizzare il metodo Quit
    ' per chiudere
    Set xlApp = Nothing' l'applicazione, e quindi
    ' rilasciare
    ℹ️ Leggi di più su vb6_ ...

  3. #3
    damio non è in linea Novello
    la mia istanza ancora non si chiude.... ho aggiunto l'oggetto come mi dici tu ma niente

    'apro
    Set xlApp = CreateObject("excel.application")
    xlApp.Workbooks.Open Filename:=Chdir

    'chiudo
    Workbooks.Application.Quit
    Workbooks(Chdir).Close SaveChanges:=False
    xlApp.Quit
    Set xlApp = Nothing

    il servizio EXCEL.EXE rimane aperto e rende excel stesso inutilizzabile

  4. #4
    florence non è in linea Novello

    Forse prima di chiudere l'applicativo, devi chiudere il file:

    'apro
    Workbooks.Open Filename:="Z:\miofoglio.xls"

    'chiudo
    Windows("miofoglio.xls").Activate (da usare se hai due files aperti)
    ActiveWorkbook.Close (False)
    Workbooks.Application.Quit
    ℹ️ Leggi di più su florence ...

  5. #5
    damio non è in linea Novello
    niente anche cosi come mi dici il servizio Excel rimane aperto...

    a questo punto forse è meglio che quando apro l'istanza di excel mi prenda il pid dell'applicazione e poi chiuda l'applicazione che ha quel pid....

    solo che non ricordo i comandi a riguardo...

    qualcuno mi può aiutare!?!

  6. #6
    vb6_ non è in linea Scolaretto
    mi sembra molto strano che non lo chiuda...ci deve esserre qualcos'altro...il tuo codice per esempio:

    'apro

    Dim xlApp As Object

    Set xlApp = CreateObject("excel.application")
    xlApp.Workbooks.Open Filename:=Chdir( meglio un
    altro nome, chdir è una parola chiave..)
    aggiungi .visible=true
    'chiudo
    Workbooks.Application.Quit (no aspetta..)
    Workbooks(.....).Close SaveChanges:=False
    xlapp.visible=false
    xlApp.Quit
    Set xlApp = Nothing

    e togli ogni "on error" messo all'inizio..secondo me potresti avere una gestione degli errori che esce e lascia i dati in memoria..

    2- per l'id questa li cicla tutti e restituisce Excel:

    Function getid()

    For Each Process In GetObject("winmgmts:").InstancesOf("win32_process" )
    'a = Process.Name
    If Process.Name = "EXCEL.EXE" Then
    MsgBox Process.ProcessID, , Process.Name
    PID = Process.ProcessID
    End If
    Next
    End Function

    ℹ️ Leggi di più su vb6_ ...

  7. #7
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    mi sono scontrato diverse volte con questo problema... e devo dire ci sono uscito letteralmente pazzo.

    il punto è questo: quando si richiamano i metodi di excel, come sheets, workbooks, etc... le variabili ad essi associati, vengono allocate implicitamente in memoria, ma non vengono rilasciate, ecco perchè excel rimane aperto.
    Il sistema per risolvere il problema è istanziare esplicitamente delle variabili oggetto che facciano riferimento ai Worksheet, o ai workbook, così da eliminarle "manualmente" una volta che non sono più necessarie.
    In pratica non basta 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")

    per accedere ai valori delle celle:
    A=xlSheet.Range("A1").value
    xlSheet.Range("A1:A100").Select
    xlApp.Selection.Copy


    etc...
    tutto deve passare dalle variabili.

    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...

    TheTruster
    ℹ️ Leggi di più su TheTruster ...

  8. #8
    damio non è in linea Novello
    Scusate se rispondo dopo 10 giorni e se riuppo questo post ma volevo solo dirvi che con l'ultimo post di Thetruster ho finalmente risolto.

    Il suo codice è in effetti il più corretto [img]smileys/smiley20.gif[/img]

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risolto: Applicazione che non si chiude...
    Da Hollywood nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 19-11-2013, 13:47
  2. Risolto: Excel che non si chiude
    Da Hollywood nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 09-02-2013, 12:59
  3. Risposte: 2
    Ultimo Post: 21-02-2008, 15:31
  4. path x excel Workbooks.Open
    Da francof nel forum Visual Basic 6
    Risposte: 8
    Ultimo Post: 26-06-2007, 08:51
  5. win 98 non si chiude
    Da orso bruno nel forum Microsoft Windows
    Risposte: 2
    Ultimo Post: 21-01-2006, 15:28