Nella
rubrica "Visual Basic per Excel" si sono considerate
alcune funzioni dell'applicazione di Office manipolabili attraverso
la libreria appropriata. Il problema, se non si vuole creare
una macro vera e propria, è che spesso risulta scomoda
l'interazione tra due applicazioni (quella scritta in Visual
Basic e la sessione Excel) separate se si pensa ad esempio
che il semplice passaggio da una all'altra sposta il focus
sull'applicazione selezionata e quindi rende inutilizzabile
l'altra. Fortunatamente Office è stato progettato in
modo da poter essere integrato con applicazioni esterne in
modo da renderle vere e proprie funzioni interne.
E nel corso di questi articoli si vedrà nel dettaglio
come sfruttare quest' utile caratteristica fornita da Microsoft.
Come già è stato visto per le aggiunte dell'IDE
di Visual Basic, è fondamentale tenere a mente i due
eventi principali di una qualsiasi applicazione add-in: il
collegamento e la chiusura.
Collegare un'aggiunta significa caricarla ed integrarla con
l'applicazione a cui si riferisce, scollegarla o chiuderla
invece significa eliminarla dalla lista delle aggiunte a disposizione.
E' chiaro che nessuno dei due procedimenti è irreversibile
in quanto è possibile collegare e scollegare l'add-in
più volte durante un'unica sessione dell'applicazione,
a meno che non si sia impostato il collegamento unicamente
all'apertura dell'applicazione e lo scollegamento alla chiusura.
Essendo due eventi, collegamento e scollegamento possono essere
gestiti in maniera molto semplice dal codice. Proprio come
l'evento Form_Load si riferisce all'apertura di una form,
l'evento OnConnection indica il collegamento di un
add-in. E come l'evento Form_Unload si riferisce alla chiusura
di una form, l'evento OnDisconnection fa riferimento
allo scollegamento di un'aggiunta.
Le modalità di progettazione di un'aggiunta sono:
nessuna: l'aggiunta non sarà caricata all'avvio
dell'applicazione e non sarà disponibile all'interno
della lista delle aggiunte. Pertanto non potrà mai
essere richiamata dall'utente.
A richiesta: l'aggiunta non sarà caricata automaticamente
all'avvio dell'applicazione ma sarà elencata nella
lista delle aggiunte e perciò a disposizione di un'eventuale
richiesta da parte dell'utente.
All'avvio: l'aggiunta sarà collegata automaticamente
ad ogni avvio dell'applicazione.
All'avvio successivo: l'aggiunta sarà collegata
automaticamente all'avvio successivo dell'applicazione.
Preparazioni
per la creazione di un'aggiunta |
Visual
Basic prevede un progetto predefinito nel caso si voglia sviluppare
un'aggiunta. Per accedere a tale progetto sarà sufficiente
aprire un nuovo progetto e nella lista scegliere la voce AddIn.
Il codice visualizzato però fa riferimento unicamente
alle aggiunte che si integrano con Visual Basic e si rivela
pertanto inutile con qualsiasi applicazione di Office (in
questo caso Excel).
Basterà quindi cancellare il codice in attesa di svilupparne
uno ad hoc.
Si sarà notato che alla creazione del progetto (denominato
per default MyAddIn) sono state generate due cartelle: Form
e Finestre di progettazione.
La cartella Form contiene le form di cui si compone l'aggiunta,
ossia la sua interfaccia con la quale l'utente potrà
interagire. Ad esempio se si intende creare un'aggiunta che
visualizzi in un controllo ListBox tutti i valori delle celle
selezionate dall'utente, è necessario prevedere una
form che contenga la ListBox.
La cartella Finestre di progettazione contiene invece il modulo
Connect. Tale modulo è necessario per impostare le
modalità di collegamento e scollegamento dell'aggiunta
oltre che ad indicare come l'aggiunta si integrerà
all'applicazione.
Ad esempio se si vuole inserire un pulsante nella toolbar
di Excel, alla cui pressione verrà lanciata l'interfaccia
dell'aggiunta, questo dev'essere progettato nel modulo Connect.
Conncet inoltre permette di definire l'applicazione Office
alla quale l'aggiunta andrà ad integrarsi.
La
connessione dell'aggiunta |
Come
già detto la connessione dell'aggiunta permette di
avere a disposizione dell'utente l'add-in in caso di successo.
Se però si verifica un'errore l'evento restituirà
il riferimento all'aggiunta che ha generato l'errore. Sarà
semplice in questo modo andare ad isolare e ad eseguire il
debug dell'applicazione.
Ora, ancora prima di inserire il codice nel modulo è
necessario chiedersi cosa si desidera che faccia l'aggiunta
e come si dovrà integrare con l'applicazione Office.
Per rispondere a tali domande basterà visualizzare
l'oggetto "modulo Connect". Apparirà in questo
modo un pannello sul quale sarà possibile operare varie
scelte.
Nella
scheda "Generale" è possibile impostare il
nome che prenderà l'aggiunta (il nome di default, Mia
Add-in va più che bene), una breve descrizione, l'applicazione
a cui si integra (ed in questo caso si sceglierà MS
Excel) e la modalità di connessione come visto nelle
prime righe. Siccome risulta scomodo connettere manualmente
l'aggiunta ad ogni avvio di Excel, l'aggiunta si caricherà
automaticamente (come indicato dalla voce Startup).
Altra
domanda: una volta connessa l'aggiunta, che cosa si desidera
che accada ossia, in che modo si vuole che l'aggiunta sia
raggiungibile dall'utente? Una soluzione può essere
rappresentata dall'immediata visualizzazione dell'interfaccia
dell'aggiunta.
Ma quella che si adotterà nell'esempio analizzato inserirà
un pulsante nella toolbar di Excel, proprio come mostrato
qui sotto.
A
tale scopo si dovrà visualizzare il codice del modulo
Connect, cancellarne tutto il contenuto come già visto
e cominciare ad analizzare gli elementi da aggiungervi.
Il primo passo consiste nello studiare la sintassi dell'evento
OnConnection:
AddinInstance_OnConnection(ByVal
Application As Object, ByVal
ConnectMode As _ AddInDesignerObjects.ext_ConnectMode,
ByVal AddInInst As
Object, custom() As
Variant) |
I
parametri dell'evento sono Application, che indica l'applicazione
Office alla quale l'aggiunta si integrerà, ConnectMode
indica le varie modalità di connessione dell'aggiunta,
AddInInst indica invece il riferimento all'aggiunta, utile
per richiamare ad esempio il nome dell'aggiunta in ogni parte
del codice e custom è un parametro non definito che
però può essere utilizzato da chi progetta l'aggiunta.
Dove sono definiti questi parametri? Al momento della connessione
(OnConnection), il sistema passa tutti gli elementi elencati
sopra alla sottoprocedura. Da quel momento in poi saranno
liberamente utilizzabili all'interno del codice.
Ad esempio: una volta connessa, il sistema indica all'aggiunta
a quale applicazione si è integrata, (tramite il parametro
Application).
Utilizzando nel resto del codice dell'evento la voce Application,
si farà sempre riferimento all'applicazione indicata
dal sistema.
La sottoprocedura dell'evento OnConnection sarà dunque
inizialmente:
Private
Sub
AddinInstance_OnConnection(ByVal
Application As Object, _
ByVal ConnectMode As
AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As
Object, custom() As
Variant)
'
'
'
End Sub |
Ancora
prima di aggiungere codice al posto dei commenti è
necessario fare una considerazione di carattere generale ma
estremamente importante per la comprensione del progetto:
non ci si deve far ingannare dal fatto che l'aggiunta si integri
con Excel.
Se infatti nella rubrica "Visual Basic per Excel"
la libreria utilizzata era quella di MS Excel, in questo caso
si utilizzerà la libreria generale di Office (e per
esserne certi basta vedere quali librerie sono state incluse
automaticamente all'apertura del progetto AddIn):
Perché?
La ragione specifica sta nel fatto che l'aggiunta in sé
stessa non utilizza nessun componente dell'applicazione alla
quale si integra: non è necessario definire un'applicazione
Excel o una cartella di lavoro Excel, né tantomeno
un foglio di calcolo Excel in quanto non saranno utilizzati
se non nel momento in cui si andrà a definire i suoi
specifici compiti.
Una generica aggiunta infatti, inizialmente senza alcuna funzione
per l'utente (ad esempio un'add-in che inserisca un pulsante
nella barra di Excel, alla cui pressione mostri una form vuota),
utilizzerà unicamente gli elementi generici di una
generica applicazione Office come la toolbar, elementi che
fanno appunto parte della libreria di Office.
|