Newsgroup: it.comp.lang.visual-basic
Titolo: gestione errori: cosa sbaglio?

salve a tutti, sono iscritto da poco e colgo l'occasione per
complimentarmi con la communiti:
Espongo il mio problema:
ho creato uno script  che crea dei Fax intestati, prelevando
l'intestazione da txtBox , aprendo un modello preesistente e
sostituendo alcuni Tag impostati nel modello, va a salvare in un nuovo
documento. Ovviamente se questo è già aperto mi diche che
l'applicazione è occupata e tutto va in crash, Ho pensato allora di
gestire l'errore in modo semplice: Utilizzare ...On Error Go To....
Questo è il mio codice:
___________________________________
Private Sub cmdCrea_Click()
............
............
' Creo una nuova istanza di Word
   Dim WordApp As Word.Application
   Set WordApp = New Word.Application
   Dim Modello As String
   Dim NomeFile As String
  Modello = "\" & txtTipoFile & ".Doc"   ' <<prelevo il nome da una
casella di testo>>
  NomeFile = "\" & txtNomeFile & ".doc"
   On Error GoTo ErroreWord ' << questo è il controllo errore...>>
   WordApp.Documents.Open App.Path & Modello
   'ora chiamo la funzione InserisciVariabileWord per ogni variabile
   'che voglio sostituire
.........
.............
   ' ora che ho il testo posso salvare il documento
   WordApp.Documents(WordApp.Documents.Count).SaveAs App.Path &
NomeFile
   ' chiudo l'istanza di Word precedentemente creata
    WordApp.Quit
   'distruggo esplicitamente l'istanza di word creata in precedenza
   'per evitare problemi di memoria
    Set WordApp = Nothing
      lblMessaggio.Caption = "File creato correttamente...."
      cmdApriFile.Enabled = True
  End If
ErroreWord:
Beep
MsgBox "MSWord in esecuzione: chiudere Word e creare il file"
End Sub
______________________________________
In caso di errore è tutto ok, ma quando tutto va a buon fine, comunque
ErroreWord viene eseguita aprendomi il MsgBox previsto!!! come devo
fare?
Ho provato anche a metterlo dopo il blocco If ma niente!!
help me....

 come devo fare?
Leggere l'help aiuta, sai... nel caso specifico, l'help dell'istruzione
"On Error" riporta queste parole:
***********************
Per evitare che il codice di gestione degli errori venga eseguito
anche se non è stato generato alcun errore, inserire un'istruzione
Exit Sub, Exit Function o Exit Property , a seconda dei casi,
immediatamente prima della routine di gestione degli errori,
come illustrato nell'esempio che segue:
Sub InitializeMatrix(Var1, Var2, Var3, Var4)
 On Error GoTo ErrorHandler
 . . .
 Exit Sub
ErrorHandler:
 . . .
 Resume Next
End Sub
In questo esempio il codice di gestione degli errori segue l'istruzione
Exit Sub e precede l'istruzione End Sub e viene quindi separato
dal flusso di routine normale. Questa soluzione è soltanto una tra
quelle possibili; il codice di gestione degli errori può essere
posizionato in qualsiasi punto di una routine.
***********************
E' più chiaro, ora ? :-)
Bye, G. 

Prima di tutto ti ringraazio del preziosissimo aiuto... adesso è
chiarissimo....
Secondo mi fa piacere che a quest'ora di notte ci sia qualche anima
viva a tenermi compagnia :)))
Terzo Purtroppo non ho il file Help installato... uff...devo
recuperarlo...

 recuperarlo...
VB6
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/vb6anchor.asp
.Net
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/netdevanchor.asp
Ciao