Istruzioni di collegamento tra applicazioni.

La funzione CreateObject
La sintassi è CreateObject(nomeapplicazione.tipodioggetto). Questa funzione permette di creare una nuova istanza di applicazione. L'esempio seguente lancia Excel da un altro applicativo office.
	Public AppXl as object
	Sub creaoggetto()
		Set AppXl = _
		CreateObject("Excel.Application") 
		AppXl.visible = true
	End sub
    
La prima istruzione dichiara una variabile pubblica di nome AppXl di tipo oggetto. Il primo step della routine "creaoggetto" crea un'istanza dell'applicazione Excel e la manda in esecuzione. Lo step successivo rende visibile l'applicazione. Omettendo questa riga avremmo avviato l'applicazione senza vederla a video. Lanciare applicazioni in background è utile in particolari situazioni, ad esempio quando non si vuole distrarre l'attenzione dell'utente da alcuni processi.
L'esempio appena visto potrebbe essere inserito in un modulo di codice su Word per creare una nuova istanza dell'applicazione Excel.
Oltre ad Excel avremmo potuto avviare Word, PowerPoint, Access, Visio, Outlook. Inoltre con Excel e Word si possono creare anche altri tipi di oggetti ad esempio: Excel.Sheet per manipolare fogli di lavoro o Excel.Chart per manipolare grafici.
La parola chiave New
La parola chiave New è un'alternativa all'istruzione CreateObject, la sintassi è:
	Dim NomeAppicazione As New Excel.Application
    
L'esempio dichiara una nuova istanza dell'oggetto applicazione Excel. A differenza di CreateObject non ha bisogno dell'istruzione set, in quanto la nuova istanza è caricata quando viene eseguita la prima istruzione riferita all'oggetto.
Istanze multiple
Nelle applicazioni Word, Excel ed Access ogni volta che usi la variabile CreateObject viene creata una nuova istanza dell'oggetto. Ad esempio se eseguiamo 3 volte la routine "CreaOggetto", vista nei paragrafi precedenti, avremo aperto 3 applicazioni Excel. Diverso invece il comportamento di Outlook e PowerPoint. In questo caso se l'applicazione è in già in uso, l'istruzione CreateObject restituisce lo stesso oggetto già caricato in memoria.
Riferimento ad un oggetto già caricato o esistente
Nel caso vogliamo usare un'istanza di un oggetto già caricato, o caricare una nuova istanza facendo riferimento ad un file già esistente dovremmo usare la funzione GetObject. La sintassi è:
	GetObject(NomePercorso, ClasseApplicazione)
    
NomePercorso indica il path del file che si vuole aprire (Es: "C:\documenti\prova.xls"). Se è presente solo il nome del file, VBA cerca il dataset nella cartella contenente il codice in esecuzione. NomePercorso può essere omesso, in tal caso deve essere presente ClasseApplicazione. Questo indica a VBA che si vuole usare l'istanza di un'applicazione già in esecuzione.
	Public AppXl as object
	Sub PrendiOggetto()
		Set AppXl = _ 
		GetObject("C:\documenti\prova.xls") 
	End sub
    
Nel caso invece specifichiamo il percorso e non la classe, VBA apre il file nel percorso specificato avviando l'applicazione Office più adatta per il documento.
	Public AppXl as object
	Sub PrendiOggetto()
		Set AppXl = _
		GetObject(,"Excel.Application") 
	End sub
    
Chiusura di una connessione
Quando vogliamo terminare la connessione ad un'altra applicazione office, come prima cosa dobbiamo impostare la variabile oggetto creata con CreateObject, GetObject o New a "nothing". In questo modo la nostra variabile viene svincolata dall'effettivo oggetto in memoria. A questo punto usiamo il metodo quit per terminare l'applicazione che abbiamo precedentemente avviato. Segue un esempio di chiusura delle applicazioni aperte in precedenza.
	Sub ChiudiOggetto()
		Set AppXl = Nothing
		AppXl.Quit
	End Sub
    

Cognolato Studio © 2005