Vantaggi delle macro

Transcript

Vantaggi delle macro
Cosa è una macro ?
• strumento per automatizzare delle operazioni
fatte con un programma
• istruzione complessa, composta da più
istruzioni elementari
1
Vantaggi delle macro
•
•
•
•
velocità di esecuzione
semplificazione di operazioni complesse
automazione di procedimenti ripetitivi
standardizzazione di procedure
Attenzione:
A volte si creano macro che
eseguono funzioni già presenti
nel programma ...
2
Un possibile esempio ...
Prelevare dati esterni che esprimono
l’andamento di un fenomeno
Importare i dati in Excel, eseguire
una funzione e produrre un grafico
Trasferire il grafico in Word, in
una relazione, e stamparla
3
Creazione di macro
Registratore
semplice ma non adatto ad
operazioni complesse
Visual Basic
più complicato ma potente
4
Dal registratore al Visual Basic
• Le macro create con il registratore vengono
registrate in Visual Basic e possono essere
rivedute e modificate
• Il solo registratore non è adatto per creare
macro complesse
5
Registratore
• Non è necessario scrivere delle istruzioni per
creare una macro
• Il registratore memorizza tutte le operazioni
(utili) fatte dall’utente:
–
–
–
–
tastiera
mouse
menu
...
6
Procedura di registrazione
1 Avvio del registratore e assegnazione nome macro
2 Esecuzione azioni da registrare
3 Fine della registrazione
Eseguendo la macro si riesegue
la stessa sequenza di azioni
7
Finestra del registratore
nome assegnato alla macro
la macro é
eseguibile
con una
combinazione
di tasti
dove viene registrata la macro
descrizione delle azioni da registrare
8
Dove si registra
• È possibile memorizzare le macro in tre modi:
– in una cartella personale sempre disponibile
– nella cartella aperta
– in una cartella nuova
• Nel secondo e terzo caso la macro sarà usabile
solo quando la relativa cartella è aperta
• Nel primo caso la macro sarà sempre
disponibile in ogni cartella
9
Fine registrazione
• Durante la registrazione compare una barra con
due pulsanti
• Premendo il pulsante la registrazione termina
• Da questo momento la macro può essere
eseguita
10
Modi di esecuzione
• Mediante il menu
Strumenti / Macro / Esegui
• Con una combinazione di tasti
definite in avvio di registrazione oppure con
Strumenti / Macro / Opzioni
• Con un bottone in una barra degli strumenti
• Con un bottone o un oggetto grafico
11
Esempio di creazione
•
•
•
•
•
Strumenti / Registra Macro / Registra nuova macro
Dare un nome (InserisciNomi)
Dare una descrizione (Inserisce i nominativi della squadra)
Con il click su OK si avvia la registrazione
Selezionare una cella (E4) e scrivere cinque nominativi,
terminando ogni inserimento con Invio (sposta alla cella
inferiore)
• Premere il pulsante di fine registrazione
12
Il codice VB corrispondente
Sub
Sub InserisciNomi()
InserisciNomi()
''
'' InserisciNomi
InserisciNomi Macro
Macro
Range("E4").Select
Range("E4").Select
ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 == "Belli"
"Belli"
Range("E5").Select
Range("E5").Select
ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 == "Bertello"
"Bertello"
Range("E6").Select
Range("E6").Select
ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 == "Furlani"
"Furlani"
Range("E7").Select
Range("E7").Select
ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 == "Lanza"
"Lanza"
Range("E8").Select
Range("E8").Select
ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 == "Pacifico"
"Pacifico"
Range("E9").Select
Range("E9").Select
End
End Sub
Sub
13
Selezione di celle
Range("E4").Select
Range("E4").Select
Viene selezionato l’intervallo composto dalla cella E4
Ovvero - si comunica all’oggetto E4, che è di
tipo intervallo, di compiere l’azione di selezione
Range("C2:E2").Select
Range("C2:E2").Select
Seleziona l’intervallo composto dalle celle C2, D2 ed E2
Range("C3,E3").Select
Range("C3,E3").Select
Seleziona l’intervallo composto dalle celle C3 ed E3
Esempio di operazioni con selezioni di celle: modifiche al formato
Selection.Font.Bold=
Selection.Font.Bold= True
True
14
Assegnazione
ActiveCell.Formula
ActiveCell.Formula == "Betti"
"Betti"
Inserisce la stringa “Betti” nella cella attiva
ActiveCell.Formula
ActiveCell.Formula == 30
30
Inserisce il valore numerico 30 nella cella attiva
ActiveCell.Formula
ActiveCell.Formula == "=A1+B1"
"=A1+B1"
Inserisce la formula (non il risultato!) nella cella attiva
15
Riferimenti relativi
• Bottone nella barra di interruzione registrazione
• Definizione come l’esempio precedente
• Le differenze:
– Non è necessaria la selezione della prima cella
– Viene utilizzato un metodo diverso per lo spostamento
– Ci si sposta con:
ActiveCell.Offset(1, 0).Range("A1") Spostamento di
una riga in basso
• Rif. Assoluti = operazioni ripetute nelle stesse celle
• Rif. Relativi = operazioni ripetute in celle diverse
16
Il codice VB corrispondente
Sub
Sub InserisciNomi()
InserisciNomi()
''
'' InserisciNomi
InserisciNomi Macro
Macro
ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 == "Belli"
"Belli"
ActiveCell.Offset(1,
ActiveCell.Offset(1, 0).Range("A1").Select
0).Range("A1").Select
ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 == "Bertello"
"Bertello"
ActiveCell.Offset(1,
ActiveCell.Offset(1, 0).Range("A1").Select
0).Range("A1").Select
ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 == "Furlani"
"Furlani"
ActiveCell.Offset(1,
ActiveCell.Offset(1, 0).Range("A1").Select
0).Range("A1").Select
ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 == "Lanza"
"Lanza"
ActiveCell.Offset(1,
ActiveCell.Offset(1, 0).Range("A1").Select
0).Range("A1").Select
ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 == "Pacifico"
"Pacifico"
End
End Sub
Sub
17
Pulsante in barra strumenti
• Attivare la personalizzazione delle barre
• Attivare la categoria macro e aggiungere un
pulsante
• Scegliere, per il pulsante, la voce assegna
macro dal menu contestuale
• Si possono usare anche icone personalizzate
18
Macro accoppiata ad oggetto grafico
• Attivare la barra del disegno
• Si definisce un oggetto grafico
• Scegliere la voce assegna macro dal menu
contestuale
19
Esempio
• Creare macro per visualizzare le formule
(Opzioni/Visualizza/Formule)
• Con l’editor di Visual Basic trasformarla
in un toggle
• Si utilizza l’operatore logico NOT
ActiveWindow.DisplayFormulas
ActiveWindow.DisplayFormulas == Not
Not (ActiveWindow.DisplayFormulas)
(ActiveWindow.DisplayFormulas)
20