Οι μακροεντολές γράφονται σε μια γλώσσα προγραμματισμού, που λέγεται Visual Basic for Applications (VBA). Για τον σκοπό αυτό, το Word χρησιμοποιεί ένα εργαλείο που πολλοί χρήστες πιθανόν δεν έχουν δει: τον Visual Basic Editor (VBE).
Βέβαια, η εκμάθηση της γλώσσας VBA είναι πέρα από τα όρια του παρόντος, αλλά είναι χρήσιμες μερικές γενικές γνώσεις για τον VBE, για τον τρόπο που λειτουργεί και πώς μπορείτε να τον χρησιμοποιήσετε ειδικά σε ό,τι έχει σχέση με την διαχείριση των μακροεντολών.
Ο πιο απλός τρόπος για να εμφανίσετε τον VBE είναι με την συντόμευση ALT+F11.
ΣΗΜΕΙΩΣΗ Ο VBE είναι ένα εργαλείο ενσωματωμένο στο Word. Δεν μπορείτε να τον εμφανίσετε αν το Word δεν είναι ανοικτό, και δεν μπορείτε να τον διατηρήσετε ανοικτόν, όταν κλείνετε το Word.
Εικ. 1 Περιβάλλον εργασίας του VB Editor
Τα πιο βασικά από τα εργαλεία που εμφανίζονται, όταν ανοίγετε τον VB Editor είναι τα πλαίσια Project Explorer και Properties, καθώς και το παράθυρο κώδικα μακροεντολής. Αυτή είναι η πιο συνηθισμένη εμφάνιση του περιβάλλοντος εργασίας, η οποία όμως εξαρτάται από την κατάσταση που βρισκόταν την προηγούμενη φορά που είχατε χρησιμοποιήσει τον VB Editor. Π.χ. αν την προηγούμενη φορά είχατε κλείσει το πλαίσιο Project Explorer, το πλαίσιο θα παραμείνει κλειστό και την επόμενη φορά.
Στον VB Editor κάθε αρχείο ή πρότυπο θεωρείται ως "έργο" (project) που περιλαμβάνει διάφορα στοιχεία προγραμματισμού. Σ' αυτά τα στοιχεία ανήκουν π.χ. οι Λειτουργικές μονάδες (modules), που είναι το σημείο όπου καταχωρείται ο κώδικας των μακροεντολών. Ένα project μπορεί να έχει πολλά modules και κάθε module μπορεί να περιέχει πολλές μακροεντολές.
Για να διαχειριστείτε σχεδόν όλα τα στοιχεία προγραμματισμού ενός project θα χρησιμοποιήσετε τον Project Exlporer.
Εικ. 2: Project Explorer
Ο Project Explorer εμφανίζεται από προεπιλογή στην πάνω αριστερή γωνία του παράθυρου. Αν δεν είναι ορατός χρησιμοποιήστε την συντόμευση CTRL+R ή από το μενού View επιλέξτε Project Explorer.
Ο Project Explorer εμφανίζει τα projects που είναι ενεργά την δεδομένη στιγμή. Εμφανίζει δηλαδή όλα τα έγγραφα που είναι ανοικτά στο Word, καθώς και το πρότυπο ή τα πρότυπα στα οποία αυτά στηρίζονται. Στην εικ. 2 βλέπετε τα δύο projects Normal (πρόκειται για το βασικό πρότυπο Normal.dotm) και Project (Document1), το έγγραφο με όνομα Document1 που είναι ανοικτό στο Word.
Ο Project Explorer σας επιτρέπει να εντοπίσετε το module που θέλετε, και να εργαστείτε με αυτό. Π.χ. να το ανοίξετε για να τροποποιήσετε τον κώδικα μιας μακροεντολής που περιέχει, να το αντιγράψετε σε κάποιο άλλο project, ή ακόμα και να το διαγράψετε. Αναλυτικά:
ΣΗΜΕΙΩΣΗ Δεν επιτρέπεται η μεταφορά του module (αποκοπή από το ένα project και επικόλληση σε κάποιο άλλο).
ΣΗΜΕΙΩΣΗ Τα αρχεία μακροεντολών συνήθως έχουν την μορφή .bas. Π.χ. macro.bas. Ωστόσο, μετά την εισαγωγή, το module που δημιουργείται έχει όνομα Module1 (ή Module2 αν το Module1 υπάρχει ήδη κ.ο.κ.).
Εικ. 3: Πλαίσιο Properties
Το πλαίσιο Properties εμφανίζεται από προεπιλογή κάτω από τον Project Explorer. Αν δεν είναι ορατό χρησιμοποιήστε την συντόμευση F4 ή από το μενού View επιλέξτε Properties Window.
Το πλαίσιο Properties εμφανίζει τις ιδιότητες του στοιχείου που έχετε επιλέξει στον Project Explorer, με την μορφή λίστας, όπου αριστερά είναι το πεδίο (μια ιδιότητα) και δεξιά η τιμή του (η κατάσταση της ιδιότητας). Ειδικά για τα modules, εμφανίζεται το πεδίο (Name) με τιμή το όνομα του module. Αυτό είναι το σημείο που θα χρησιμοποιήσετε όταν θέλετε να μετονομάσετε ένα module.
ΣΗΜΕΙΩΣΗ Για το όνομα επιτρέπονται μόνο γράμματα και αριθμοί. Όχι κενά διαστήματα, όχι ειδικοί χαρακτήρες (*, ", ? κ.λπ.).
Κάνετε διπλό κλικ στο όνομα ενός module για να εμφανίσετε το παράθυρο με τον κώδικα της μακροεντολής ή των μακροεντολών που περιέχει.
Εικ. 4 Παράθυρο επεξεργασίας μακροεντολών
Στην Εικόνα 4, φαίνονται τα περιεχόμενα του module NewMacros, το οποίο
περιέχει δύο μακροεντολές με ονόματα allCapitals
και
convertCase
. Οι μακροεντολές, ειδικά αυτές που έχουν
δημιουργηθεί με το εργαλείο Καταγραφή μακροεντολής,
καταχωρούνται σε αυτόνομα μπλοκ κώδικα, γνωστά ως υπο-ρουτίνες
(subroutines). Η μακροεντολή αρχίζει με την έκφραση Sub
και
τελειώνει με την έκφραση End Sub
.
Στην δεύτερη μακροεντολή της εικόνας υπάρχουν τρεις γραμμές που αρχίζουν με απόστροφο (μονό εισαγωγικό). Όποια γραμμή αρχίζει με μονό εισαγωγικό δεν λαμβάνεται υπ' όψιν κατά την εκτέλεση της μακροεντολής. Θεωρείται σχόλιο και χρησιμοποιείται από τους προγραμματιστές συνήθως για να γράψουν μια εξήγηση για τον τρόπο λειτουργίας του κώδικα που ακολουθεί. Μπορείτε να τις διαγράψετε, χωρίς να επηρεαστεί η λειτουργία της μακροεντολής.
Μεταξύ των μακροεντολών ο VBA Editor προσθέτει αυτόματα μία
διαχωριστική γραμμή. Αυτό σας επιτρέπει με μια γρήγορη ματιά να δείτε
πού τελειώνει η μία μακροεντολή και πού αρχίζει η επόμενη. Προσέξτε
όμως: Ο VBA Editor αναγνωρίζει ως τέλος μιας μακροεντολής την δήλωση
τέλους End Sub
, αλλά αυτό ισχύει απόλυτα, μόνο όταν οι
μακροεντολές έχουν δημιουργηθεί με το εργαλείο Καταγραφή
μακροεντολής. Εάν έχετε τον κώδικα μακροεντολής από κάποια άλλη
πηγή (κάποιον που γνωρίζει VBA, από ένα email, από ένα site κ.λπ.)
ίσως η δήλωση τέλους να μην ορίζει το τέλος της μακροεντολής. Στο
επόμενο παράδειγμα, η μακροεντολή AutoExec
"καλεί" μια
άλλη υπο-ρουτίνα (AddPasteSpecial
) και επομένως οι δύο
υπο-ρουτίνες αποτελούν ένα αναπόσπαστο σύνολο, ενώ ο VBA Editor θα τις
χωρίσει με την διαχωριστική γραμμή (η κόκκινη έμφαση έχει
χρησιμοποιηθεί για καλύτερη εμφάνιση του παραδείγματος):
Sub AutoExec() Call AddPasteSpecial End Sub - - - - - - - - - - - - - - - - - - - Sub AddPasteSpecial() Dim cb As CommandBar Dim c As CommandBarButton ... End Sub
Τέλος, θα πρέπει να προσέχετε ιδιαίτερα τις μακροεντολές που λαμβάνετε μέσω email, καθώς λόγω της αναδίπλωσης κειμένου, είναι πιθανόν μία γραμμή κώδικα που θα έπρεπε να είναι συνεχόμενη, να έχει κοπεί σε δύο κομμάτια. Αυτό το σφάλμα το εντοπίζει αυτόματα ο VBA Editor, και εμφανίζει το συγκεκριμένο σημείο του κώδικα με κόκκινα γράμματα:
Do While myRange.Find.Execute FieldText = (myRange.Text) ActiveDocument.Fields.Add Range:=myRange, Type:=wdFieldIncludeText, Text:=FieldText myRange.MoveEndUntil cset:="""""" myRange.Collapse wdCollapseEnd myRange.Select Loop ...
Για να διορθώσετε το σφάλμα στο ανωτέρω παράδειγμα τοποθετήστε τον δείκτη στην αρχή της δεύτερης γραμμής και πατήστε το BACKSPACE έως ότου ενωθεί με την προηγούμενη (αφήνοντας ένα κενό διάστημα). Εναλλακτικά, τοποθετήστε τον δείκτη στο τέλος της πρώτης γραμμής, αφήστε ένα κενό διάστημα και πληκτρολογήστε τον χαρακτήρα υπογράμμισης ( _ ). Ο χαρακτήρας υπογράμμισης "λέει" στον VB Editor να θεωρήσει ως συνεχόμενες τις διακεκομμένες γραμμές κώδικα.
ΣΗΜΑΝΤΙΚΟ Αφού ολοκληρώσετε τις εργασίες σας με τον VB Editor και θελήσετε να τον κλείσετε, δεν θα σας ζητηθεί η αποθήκευση των αλλαγών. Αυτές έχουν ήδη μεταφερθεί αυτόματα στο αντίστοιχο πρότυπο ή έγγραφο που επηρεάστηκε. Αν όμως δοκιμάσετε να κλείσετε το Word, τότε θα εμφανιστεί προειδοποιητικό μήνυμα για αποθήκευση των αλλαγών, ακόμα κι αν δεν έχετε κάνει άλλες αλλαγές στο κείμενο του εγγράφου, ή την λειτουργία του προτύπου.