Newsgroup: it.comp.lang.visual-basic
Titolo: "Chiusura" oggetto Excel

Ciao a tutti,
qualcuno sa come si fa chiudere un oggetto "as Excel.application"?
Purtroppo rimane l'istanza aperta e dopo un po' blocca il computer!!!
Io uso:
oggetto.Application.Quit
Set oggetto = Nothing 
Dove sbaglio???
Grazie 
Mizietto ^___^

 Dove sbaglio???
    Non in queste due righe, direi.
    Se "oggetto" e', come e' probabile che sia, una Cartella di lavoro, se
non e' salvata e' possibile che ti resti "appesa" e invisibile una msgbox di
richiesta salvataggio...
    Puo' essere? Prova a verificare.
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

 richiesta salvataggio...
Oppure, potresti avere qualche puntatore ad altri elementi dell'object
model, tipo WorkBooks, WorkSheet, Range, ecc..., e sarebbe meglio 'buttarli
via' (Set=Nothing) prima del Quit.
Ciao
Alberto

 via' (Set=Nothing) prima del Quit.
    Sicuro?... Non mi convince del tutto questa cosa. Per esempio:
Option Explicit
Public Sub Test()
  Dim oXlApp  As Excel.Application
  Dim oXlWbk  As Excel.Workbook
  Dim oXlWsh  As Excel.Worksheet
  Dim oXlRng  As Excel.Range
  Set oXlApp = New Excel.Application
  Set oXlWbk = oXlApp.Workbooks.Add
  Set oXlWsh = oXlWbk.Worksheets(1)
  Set oXlRng = oXlWsh.Cells(1, 1)
  oXlRng.Value = 1
  On Error Resume Next
  Debug.Print oXlRng.Value
  Debug.Print "'"; Err.Description; "'"
  On Error GoTo 0
  oXlWbk.Close False
  On Error Resume Next
  Debug.Print oXlRng.Value
  Debug.Print "'"; Err.Description; "'"
  On Error GoTo 0
  oXlApp.Quit
  Set oXlRng = Nothing
  Set oXlWsh = Nothing
  Set oXlWbk = Nothing
  Set oXlApp = Nothing
End Sub
OUTPUT:
 1
''
'Necessario oggetto'


     Sicuro?... Non mi convince del tutto questa cosa. Per esempio:
Il tuo codice funziona, e ti dà pienamente ragione.
Tuttavia, su diversi articoli tecnici di MSDN, viene indicato dalla stessa
Microsoft che 'si sono verificati casi' in cui la chiusura di
Excel.Application non ha distrutto gli oggetti allegati se questi erano
puntati da variabili ancora valide.
In modo particolare se sul PC non era installato SP1 di Office 2000.
Siccome fare un Set=Nothing non è una operazione pesante, la Microsoft
consiglia di eseguirla sempre, anche se nel 99.9% dei casi è effettivamente
superflua.
Comunque il mio post era 'in subordine' al tuo, ossia la cosa più probabile
è che effettivamente ci sia un dialog 'appeso', soprattutto se si sta
utilizzando un sistema tipo NT, e l'applicativo è stato lanciato con un
utente diverso da quello di consolle.
Ciao
Alberto

 utente diverso da quello di consolle.
    Grazie. Tre indicazioni utilissime. Come ben sai sono abbastanza
frequenti i post sull'argomento e, anche se generalmente la
"responsabilita'" del problema e' realmente dell'autore del codice stesso,
troppo volte scritto "male", effettivamente e' opportuno tenere ben presente
cio' che segnali anche quando il codice lo si scrive "bene". Cosa dice Lupo
a proposito delle libagioni Microsoft?...


Dimenticavo, Il mio problema si verifica non sempre, mi spiego
ho effettuato prove su due file .xls, il primo più grande del secondo,
beh con il file più grande si verifica la mancata chiusura
dell'oggetto mentre con quello più piccolo no.
I files, tranne per le dimensioni, hanno struttura identica!!
E questo che non capisco :(
Grazie per i consigli dati.


news:9dd45cbe.02093...@posting.google.com...:

    :-)
    Forse sarebbe meglio vedere qualche frammento di codice...


Forse ho capito il problema, 
Io dichiaro:
foglio as Excel.application
...
Set foglio = New Excel.Application
...     
foglio.Workbooks.Open 'gli passo il nome del file che apro 
...      
For i = 0 To foglio.Sheets.Count - 1
    'eseguo delle operazioni su ogni foglio        
Next i
...     
foglio.Quit
Set foglio = Nothing
 
Come vedi utilizzo sempre questo oggetto non dichiaro altri oggetti
per le altre operazioni.
E' questa la cazzata?!
Devo necessariamente dichiarare e "settare" un oggetto
"application","workbook" e "sheets"?
Ma non continuo a spiegarmi il problema del 3d postato in precedenza!
P.S. Si vede che è la prima volte che utilizzo excel con vb é? :)

 P.S. Si vede che è la prima volte che utilizzo excel con vb é? :)
    Vai gia' bene. ;-)


> Ma non continuo a spiegarmi il problema del 3d postato in precedenza!
IMO il problema e' nel codice commentato ;)
Lokar
--
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt

 avrai "un perfetto controllo della situazione" ;)
[...]
... e che lascio come sta, a beneficio di mauriziobatti e non solo, sperando
lo rilegga e lo ricopi cento volte sull'apposito quadernino. Senza
copia/incolla.


Grazie Regŕ, 
Pur leggendo solo ora gli ultimi 3d da mio ultimo sono riuscito a
cavarmela, avevo "raggione" era lě la cazzata!!
Oggetto Excel.application
Oggetto Excel.workgroop
Oggetto Excel.worksheet ... č il gioco č fatto!
Pare vero! ;)
Ancora Grazie!
Un saluto Mizietto ^___^