Chiarimento ultrarapido per beginner.
Un visitatore mi ha chiesto come si fa a chiudere, putacaso, Excel quando una macro è terminata e il file .XLS viene chiuso con ActiveWorkbook.Close.
La risposta è facile: Application.Quit. Se poi si fa precedere tale istruzioni da una Application.DisplayAlerts = False Exce viene chiuso insalutato ospite- utente! L'occasione tuttavia si presta a una veloce riflessione pragmatica. Non c'è motivo, tranne il sadismo, per far sparire Excel al povero utente finale, che invece nel 99% dei casi desidera continuare a lavorare col programma del cuore. Diverso però è il caso in cui si richiama, poniamo, Excel e/o un file .xls, dall'interno di un altro applicativo, putacaso Word (o un eseguibile .EXE) tramite OLE Automation. In tal caso l'abbandono di Excel con Quit è necessario, per tornare a lavorare con Word, programma chiamante e col quale si suppone che la macro prosegua e/o l'utente continui a lavorare.
Dimenticavo: un discorso del tutto analogo vale qualora si sfrutti un legame ipertestuale (Hyperlink) che richiami un certo documento relativo a un diiverso applicativo MS Office. Facciamo un esempio. In un modello Bilancio.XLS si abbia un hyperlink del genere, di nome "Rapporto" (*) che guida a un documento Word Report.doc (posto in una precisa cartella di file, meglio se la stessa in cui giace il "chiamante" Bilancio.XLS. Le istruzioni seguenti, connesse a un qualche pulsante ad hoc, potrebbero servire a lanciare Report.doc attivando Word e (se del caso, ovviamente) abbandonare Excel:
Activesheet.Hyperlinks("Report").Follow 'Lancia l'hyperlink
Application.Quit 'Chiudi Excel
Nota (*) - Il nome di un hyperlink è quello indicato nella casella "Testo da visualizzare". In alternativa, si può ricorrere all'indice numerico, del tipo Hyperlinks(1), Hyperlinks(2) ecc.