mercoledì 11 marzo 2009

Creazione di componenti aggiuntivi per Excel per visualizzare un calendario

Introduzione:



In questo articolo, vedremo come creare un componente aggiunto (formato .xla) in vba, per il programma di calcolo, excel, tale componente dovrà creare una barra degli strumenti, con un pulsante, il quale visualizza un calendario, qualora, si seleziona la data e si fa click sul pulsante ok, la data selezionata verrà inserita nella cella che ha lo stato attivo (selezionata) di excel.



Il componente sarà come illustrato nella figura riporta qui di seguito.:





Figura 1





Cosa sono i componenti aggiuntivi:



I componenti aggiuntivi sono di due tipi, quelli scritti con vba, e quelli com scritti con diversi linguaggi (vb, c++, ecc)



Noi vedremo come crearli in vba.



Essi si trovano nella cartella AddIns situata nel seguente percorso di cartelle:



Documents e setting->nomeComputer->dati applicazione->Microsoft->AddIns.



Possiamo impostare che un determinato componente venga caricato all’avvio, per ottenere tale risultato basta mettere la spunta sul nome del componente nella finestra componenti aggiuntivi. Come mostrato qui di seguito:





Figura 2





Visual Basic Application:



Apriamo l’editor di visual basic, per far ciò, dobbiamo selezionare dal menu strumenti selezioniamo la voce Macro e facciamo click sulla voce Visual Basic Editor.



Verrà aperto il programma per la creazione delle macro e la stesura del codice vba.







Stesura del codice



Inseriamo un modulo, questo avviene o facendo click sulla voce inserisci modulo, oppure tasto destro del mouse sul nome del progetto, o selezionando la voce modulo nel menu inserisci.



In questo modulo inseriamo le seguente constanti



Private Const CBR_INSERT As String = "Inserimento data wizard"



Private Const CTL_INSERT As String = "Inserisci data"



Esse avranno il compito di impostare le varie caption una per la barra e l’altra per il pulsante.



Fatto ciò dobbiamo creare una funzione, la quale all’avvio del componente, crea una barra o la visualizza qualora sia già creata.



La funzione di avvio dovrà avere il nome Sub Auto_Open() questo nome indica l’avvio del componente, ed è fondamentale, una parola chiave..



Di seguito viene illustrato il codice di tale funzione.



Sub Auto_Open()



Dim cbrWiz As CommandBar



Dim ctlInsert As CommandBarButton



On Error Resume Next



' Inserisco la barra nella lista delle barre.



Set cbrWiz = CommandBars(CBR_INSERT)







If cbrWiz Is Nothing Then



Err.Clear



'istanzion la barra con il titolo



Set cbrWiz = CommandBars.Add(CBR_INSERT)



'la rendo visibile



cbrWiz.Visible = True



' Aggiungo alla barra il pulsante il quale mi apre una form



Set ctlInsert = cbrWiz.Controls.Add



'imposto le varie proprietà del pulsante



With ctlInsert



.Style = msoButtonCaption



.Caption = CTL_INSERT



.Tag = CTL_INSERT



'Indico che funzione intrapendere quando fa click sul bottone



.OnAction = "ShowForm"



'larghezza



.Width = 200



End With



Else



' se già c'è la barra la rendo visibile



cbrWiz.Visible = True



End If



End Sub





Questa procedura crea due oggetti uno di tipo barra (commandBar) e l’altro di tipo pulsante per la barra (commandBarButton), verifica che la barra sia avviata, se non c’è, la crea, altrimenti la visualizza.



Vengono impostate varie proprietà del pulsante il quale viene aggiunto all’oggetto barra.



La proprietà OnAction indica il nome della funzione(sub) che dovrà essere eseguita qualora si fa click sul pulsante.



La funzione Auto_close ha il compito di togliere la barra quando si chiude il foglio.



Sub Auto_Close()



On Error Resume Next



' cancello dalla lista delle barre la mia barra la scarico



CommandBars(CBR_INSERT).Delete



End Sub





La funzione ShowForm dovrà aprire una form (che vedremo successivamente) tramite il metodo show della form.



Il codice sarà come riportato qui di seguito.



Sub ShowForm()





UserForm1.Show



End Sub



Creazione di una form.



Ora dobbiamo creare una form, la quale avrà un calendario ed un pulsante, se l'utente fa click sul pulsante della form verrà inserito sul foglio di calcolo la data selezionata.



Per inserire una form, ci sono varie strade, o si seleziona form dal menu inserisci, o tasto destro sul nome del progetto inserisci form.



Una volta inserita la form, Inseriamo il controllo calendario, facciamo click con il tasto destro del mouse sulla barra dei controlli e selezioniamo il controllo calendario, a questo punto inseriamo nella form un pulsante.



Nell’evento click di tale pulsante inseriamo il seguente codice





Private Sub CommandButton1_Click()



ActiveCell.Value = Calendar1.Value



Unload Me



End Sub



La proprietà VAlue di ACtiveCEll imposta o restituisce il valore della cella attiva, nel nostro esempio viene inserita la data selezionata del calendario nella cella attiva (selezionata)



A questo punto abbiamo finito la parte di codice, non ci resta che salvare tutto, facciamo click sulla voce file e salva, in basso, nelle opzioni di salvataggio alla voce “tipo File" selezioniamo la voce componente aggiuntivo xla.



A questo punto il nostro componente è stato creato, chiudiamo excel.



Apriamo excel, selezioniamo la voce componente aggiuntivi, selezioniamo il nome del componente, (il mio si chiama Esempio) e facciamo click su ok, a questo punto verrà visualizzata la barra. Se nell’elenco non compare il nome del nostro componente, dobbiamo ricercarlo tramite il pulsante sfoglia.





Conclusioni.



Questo articolo ha spiegato le basi per la creazione di un semplice componente aggiuntivo, scritto in vba, tali componenti possono migliorare l’uso dei prodotti Office.



Nelle ultime due versioni di office (xp e 2003) si possono creare componenti che possono potenziare l’uso di questi prodotti.




Download esempio

Nessun commento: