Inserimento automatico di fogli di calcolo a partire da un elenco di nomi

Stampa
( 1 Vote ) 
Valutazione attuale:  / 1
ScarsoOttimo 
Categoria: Informatica
Data pubblicazione
Scritto da Andrea Visite: 2502

Inserimento automatico di fogli di calcolo a partire da un elenco di nomi

Come inserire un gruppo di fogli di calcolo i cui nomi sono riportati in un menu e richiamarli facilmente con collegamenti ipertestuali


In questo breve esempio di applicazione del VBA di Excel si apprenderà come inserire automaticamente più fogli di calcolo i cui nomi vengono presi da un elenco contenuto in un foglio denominato MENU, e come richiamarli grazie ai collegamenti ipertestuali, già visti in una lezione precedente.
Apriamo una cartella di lavoro e rinominiamo uno dei fogli chiamandolo MENU; scriviamo in questo foglio un elenco di nomi sulla prima colonna.
Apriamo l'editor del VBA, come già spiegato nelle precedenti lezioni, ed incolliamo il codice seguente nella finestra dell'editor:


--------------------
Const Nmax As Integer = 100
'per lavorare su più di 100 fogli occorre cambiare Nmax
Sub Main()
CancellaFogli
InserisciFogli
End Sub
Sub CancellaFogli()
'vengono cancellati tutti i fogli tranne il foglio "MENU"
Application.DisplayAlerts = False
'non fa comparire il messsaggio di richiesta conferma cancellazione del foglio
For Each Foglio In ActiveWorkbook.Sheets
    If Foglio.Name <> "MENU" Then Foglio.Delete
Next
'For Each permette di non sapere a priori quanti fogli esistono
Application.DisplayAlerts = True
End Sub
Sub InserisciFogli()
On Error GoTo GestioneErrori
For n = 1 To Nmax
    If Sheets("MENU").Cells(n, 1) <> "" Then
        Sheets.Add
        ActiveSheet.Name = Sheets("MENU").Cells(n, 1)
        With Sheets("MENU")
            .Hyperlinks.Add Anchor:=.Cells(n, 1), Address:="", _
            SubAddress:=.Cells(n, 1) & "!A1"
        End With
    End If
Next n
CommandBars("Web").Visible = True
'aggiunge la barra di navigazione
GestioneErrori:
If Err.Number = 1004 Then
    MsgBox ("Foglio già esistente: cambiare nome e riavviare")
    End
End If
End Sub
------------------------------
La routine principale (Main) chiama la subroutine per la cancellazione di tutti i fogli superflui
 e quella per la crezione dei nuovi fogli
(ATTENZIONE A NON ESEGUIRE LA ROUTINE QUANDO SONO PRESENTI DEI DATI NEI FOGLI!).
Il nuovo foglio viene inserito se il nome non è una stringa nulla e se non esistono altri fogli con lo stesso nome: in quest'ultimo caso il gestore errori, attivato con On Error, fa comparire il messaggio di errore di Foglio già esistente e arresta il programma.
Infine viene inserito il link al nuovo foglio nella cella del MENU contenente il suo nome.
Alla fine del ciclo viene inserita la barra di navigazione, comoda per ritornare rapidamente al menu dopo aver selezionato un foglio col link.
I commenti sono preceduti da un apice e chiariscono alcuni passi del programma.
A questo punto conviene inserire un'istruzione che apra automaticamente la cartella di lavoro sul foglio MENU:
si apre la casella combinata in alto sulla finestra dell'edito dove si legge (Generale), si sceglie Workbook e nella casella combinata a fianco si seleziona la routine di evento Open (una routine di evento è una routine che scatta quando avviene un evento ben preciso: pressione di un tasto, clic del mouse, apertura di una pagina, ecc).
Nella routine che compare nello spazio dell'editor si inserisce l'istruzione Sheets("MENU").Select, come si vede qui sotto:
Private Sub Workbook_Open()
Sheets("MENU").Select
End Sub
La cartella di lavoro è così pronta per lavorare. Eseguite la routine Main, posizionandovi al suo interno, con la pressione di F5 o di F8 se volete l'esecuzione passo-passo, come già visto in altre lezioni.