Μάθετε τη μακροεντολή VBA που κωδικοποιεί το Word 2007

Ο στόχος αυτού του μαθήματος είναι να βοηθήσει τους ανθρώπους που δεν έχουν γράψει ποτέ ένα πρόγραμμα πριν μάθουν να γράψουν ένα. Δεν υπάρχει κανένας λόγος για τους εργάτες γραφείου, τους νοικοκύρους, τους επαγγελματίες μηχανικούς και τα άτομα που παραδίδουν πίτσα δεν θα πρέπει να είναι σε θέση να επωφεληθούν από τα δικά τους χειροποίητα προσαρμοσμένα προγράμματα ηλεκτρονικών υπολογιστών για να λειτουργούν πιο γρήγορα και εξυπνότερα. Δεν πρέπει να παίρνει έναν «επαγγελματία προγραμματιστή» (ό, τι κι αν είναι) για να κάνει τη δουλειά. Ξέρεις τι πρέπει να γίνει καλύτερα από οποιονδήποτε άλλο. Μπορείτε να το κάνετε μόνοι σας!

(Και το λέω αυτό ως κάποιον που έχει περάσει πολλά χρόνια γράφοντας προγράμματα για άλλους ανθρώπους... 'επαγγελματικώς'.)

Με αυτό είπε, αυτό δεν είναι ένα μάθημα για το πώς να χρησιμοποιήσετε έναν υπολογιστή.

Αυτό το μάθημα προϋποθέτει ότι γνωρίζετε πώς να χρησιμοποιείτε το δημοφιλές λογισμικό και ειδικότερα ότι έχετε εγκαταστήσει το Microsoft Word 2007 στον υπολογιστή σας. Θα πρέπει να γνωρίζετε βασικές δεξιότητες στον υπολογιστή, όπως πώς να δημιουργείτε φακέλους αρχείων (δηλαδή, καταλόγους) και πώς να μετακινείτε και να αντιγράφετε αρχεία. Αλλά αν έχετε πάντα αναρωτηθεί τι ήταν ένα πρόγραμμα υπολογιστή, ήταν εντάξει. Θα σας δείξουμε.

instagram viewer

Το Microsoft Office δεν είναι φθηνό. Αλλά μπορείτε να πάρετε μεγαλύτερη αξία από το ακριβό λογισμικό που έχετε ήδη εγκαταστήσει. Αυτός είναι ένας μεγάλος λόγος που χρησιμοποιούμε Visual Basic για εφαρμογές ή VBA, μαζί με το Microsoft Office. Υπάρχουν εκατομμύρια που το έχουν και μια χούφτα (ίσως κανείς) που χρησιμοποιεί ό, τι μπορεί να κάνει.

Πριν προχωρήσουμε περαιτέρω, ωστόσο, πρέπει να εξηγήσω ένα ακόμα πράγμα για τη VBA. Τον Φεβρουάριο του 2002, η Microsoft έκανε ένα στοίχημα 300 δισεκατομμυρίων δολαρίων σε μια εντελώς νέα τεχνολογική βάση για όλη την εταιρεία της. Το ονόμασαν .NET. Από τότε, η Microsoft έχει μεταφέρει όλη την τεχνολογική βάση της στο VB.NET. Το VBA είναι το τελευταίο εργαλείο προγραμματισμού που χρησιμοποιεί ακόμα την VB6, την δοκιμασμένη και αληθινή τεχνολογία που χρησιμοποιήθηκε πριν από το VB.NET. (Θα δείτε τη φράση "βασισμένη σε COM" για να περιγράψετε αυτήν την τεχνολογία επιπέδου VB6.)

VSTO και VBA

Η Microsoft έχει δημιουργήσει έναν τρόπο εγγραφής προγραμμάτων VB.NET για το Office 2007. Ονομάζεται Visual Studio Tools for Office (VSTO). Το πρόβλημα με το VSTO είναι ότι πρέπει να αγοράσετε και να μάθετε να χρησιμοποιείτε το Visual Studio Professional. Το ίδιο το Excel εξακολουθεί να βασίζεται σε COM και τα προγράμματα .NET πρέπει να λειτουργούν με το Excel μέσω διεπαφής (που ονομάζεται PIA, Primary Interop Assembly).

Ετσι... έως ότου η Microsoft πάρει την πράξη μαζί και σας δίνει έναν τρόπο να γράψετε προγράμματα που θα λειτουργούν με το Word και δεν σας κάνει να ενταχθούν στο τμήμα πληροφορικής, οι μακροεντολές VBA είναι ακόμα ο τρόπος να πάτε.

Ένας άλλος λόγος που χρησιμοποιούμε το VBA είναι ότι είναι πραγματικά ένα "πλήρως ψημένο" (όχι μισοψημένο) ανάπτυξη λογισμικού το οποίο έχει χρησιμοποιηθεί εδώ και χρόνια από τους προγραμματιστές για να δημιουργήσει μερικά από τα πιο εξελιγμένα συστήματα που υπάρχουν. Δεν έχει σημασία πόσο ψηλά έχουν ρυθμιστεί οι τόνοι προγραμματισμού σας. Η Visual Basic έχει τη δύναμη να σας μεταφέρει εκεί.

Τι είναι μια μακροεντολή;

Ενδέχεται να έχετε χρησιμοποιήσει εφαρμογές επιφάνειας εργασίας που υποστηρίζουν τη λεγόμενη γλώσσα μακροεντολών πριν. Οι μακροεντολές είναι παραδοσιακά μόνο σενάρια ενεργειών πληκτρολογίου που ομαδοποιούνται μαζί με ένα όνομα, ώστε να μπορείτε να τις εκτελείτε ταυτόχρονα. Αν ξεκινάτε πάντα την ημέρα ανοίγοντας το έγγραφό σας "MyDiary", καταχωρίζοντας τη σημερινή ημερομηνία και πληκτρολογώντας τις λέξεις "Αγαπητέ Ημερολόγιο" - Γιατί να μην αφήσετε τον υπολογιστή σας να το κάνει αυτό για σας; Για να είναι συνεπής με άλλο λογισμικό, η Microsoft καλεί επίσης τη γλώσσα μακροεντολών VBA. Αλλά δεν είναι. Είναι πολύ περισσότερο.

Πολλές εφαρμογές γραφείου περιλαμβάνουν ένα εργαλείο λογισμικού που θα σας επιτρέψει να καταγράψετε μια μακροεντολή "πληκτρολόγησης". Στις εφαρμογές της Microsoft, αυτό το εργαλείο ονομάζεται συσκευή εγγραφής μακροεντολών, αλλά το αποτέλεσμα δεν είναι μια παραδοσιακή μακροεντολή πληκτρολόγησης. Είναι ένα πρόγραμμα VBA και η διαφορά είναι ότι δεν επαναλαμβάνει απλώς τις πληκτρολογήσεις. Ένα πρόγραμμα VBA σας δίνει το ίδιο τελικό αποτέλεσμα, αν είναι δυνατόν, αλλά μπορείτε επίσης να γράψετε εξελιγμένα συστήματα στο VBA που αφήνουν απλές μακροεντολές πληκτρολογίου στη σκόνη. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε τις λειτουργίες του Excel στο Word χρησιμοποιώντας VBA. Και μπορείτε να ενσωματώσετε το VBA σε άλλα συστήματα όπως βάσεις δεδομένων, web ή άλλες εφαρμογές λογισμικού.

Αν και η εγγραφή μακροεντολών VBA είναι πολύ χρήσιμη για την απλή δημιουργία απλών μακροεντολών πληκτρολογίου, προγραμματιστές έχουν ανακαλύψει ότι είναι ακόμα πιο χρήσιμο να τους δώσουμε μια εκκίνηση σε πιο εξελιγμένα προγράμματα. Αυτό θα κάνουμε.

Αρχή Microsoft Word 2007 με ένα κενό έγγραφο και ετοιμαστείτε να γράψετε ένα πρόγραμμα.

Η καρτέλα Προγραμματιστής στο Word

Ένα από τα πρώτα πράγματα που πρέπει να κάνετε για να γράψετε το πρόγραμμα Visual Basic στο Word 2007 είναι βρείτε τη Visual Basic! Η προεπιλογή στο Word 2007 δεν εμφανίζει την κορδέλα που χρησιμοποιείται. Για να προσθέσετε το Προγραμματιστής καρτέλα, κάντε πρώτα κλικ στο Γραφείο (το λογότυπο στην επάνω αριστερή γωνία) και μετά πατήστε Επιλογές λέξεων. Κάντε κλικ Εμφάνιση καρτέλας Προγραμματιστής στην Κορδέλα και στη συνέχεια κάντε κλικ στο κουμπί Εντάξει.

Όταν κάνετε κλικ στο Προγραμματιστής καρτέλα, έχετε ένα εντελώς νέο σύνολο εργαλείων που χρησιμοποιούνται για την εγγραφή προγραμμάτων VBA. Θα χρησιμοποιήσουμε το VBA Macro Recorder για να δημιουργήσουμε το πρώτο σας πρόγραμμα. (Εάν η κορδέλα με όλα τα εργαλεία σας εξακολουθεί να εξαφανίζεται, ίσως θελήσετε να κάνετε δεξί κλικ στη κορδέλα και να είστε σίγουροι Ελαχιστοποιήστε την Κορδέλα δεν έχει ελεγχθεί.)

Κάντε κλικ Εγγραφή μακροεντολής. Ονομάστε τη μακροεντολή σας: Σχετικά με το ΒΒ1 πληκτρολογώντας το όνομα στο Όνομα μακροεντολής πλαίσιο κειμένου. Επιλέξτε το τρέχον έγγραφο ως τη θέση αποθήκευσης της μακροεντολής σας και κάντε κλικ στο OK. Δείτε το παρακάτω παράδειγμα.

(Σημείωση: Αν επιλέξετε Όλα τα έγγραφα (Normal.dotm) από το αναπτυσσόμενο μενού, αυτό το πρόγραμμα δοκιμής VBA θα αποτελέσει ουσιαστικά μέρος του Word, διότι θα είναι στη διάθεσή σας για κάθε έγγραφο που δημιουργείτε στο Word. Εάν θέλετε να χρησιμοποιήσετε μόνο μια μακροεντολή VBA σε ένα συγκεκριμένο έγγραφο ή εάν θέλετε να μπορείτε να την στείλετε σε κάποιον άλλο, είναι καλύτερα να αποθηκεύσετε τη μακροεντολή ως μέρος του εγγράφου. Normal.dotm είναι η προεπιλογή, επομένως πρέπει να την αλλάξετε.)

Με τη συσκευή εγγραφής μακροεντολών ενεργοποιημένη, πληκτρολογήστε το κείμενο "Hello World." στο έγγραφό σας στο Word. (Ο δείκτης του ποντικιού θα αλλάξει σε μικρογραφία της κασέτας ταινίας για να δείξει ότι καταγράφονται οι πληκτρολογήσεις.)

(Σημείωση: Το Hello World είναι σχεδόν απαραίτητο για ένα "Πρώτο Πρόγραμμα" επειδή το πρώτο εγχειρίδιο προγραμματισμού για τα πρώτα γλώσσα υπολογιστή "C" το χρησιμοποίησα. Είναι από τότε μια παράδοση.)

Κάντε κλικ Διακοπή εγγραφής. Κλείστε το Word και αποθηκεύστε το έγγραφο χρησιμοποιώντας το όνομα: Σχετικά με το ΒΒ1.doc. Πρέπει να επιλέξετε ένα Έγγραφο με δυνατότητα Macro Word από το Αποθήκευση ως Τύπος dropdown.

Αυτό είναι! Τώρα έχετε γράψει ένα πρόγραμμα Word VBA. Ας δούμε τι μοιάζει!

Κατανόηση του τι είναι ένα πρόγραμμα VBA

Εάν έχετε κλείσει το Word, ανοίξτε το ξανά και επιλέξτε το Σχετικά με το ΒΒ1.doc αρχείου που αποθηκεύσατε στο προηγούμενο μάθημα. Εάν όλα έγιναν σωστά, θα πρέπει να δείτε ένα banner στην κορυφή του παραθύρου του εγγράφου σας με μια προειδοποίηση ασφαλείας.

VBA και Ασφάλεια

Το VBA είναι πραγματικό γλώσσα προγραμματισμού. Αυτό σημαίνει ότι η VBA μπορεί να κάνει σχεδόν οτιδήποτε χρειάζεται να κάνει. Και αυτό, με τη σειρά του, σημαίνει ότι εάν λάβετε ένα έγγραφο του Word με μια ενσωματωμένη μακροεντολή από κάποιο «κακό», η μακροεντολή μπορεί να κάνει σχεδόν οτιδήποτε. Επομένως, η προειδοποίηση της Microsoft πρέπει να ληφθεί σοβαρά υπόψη. Αφ 'ετέρου, εσείς έγραψε αυτή τη μακροεντολή και το μόνο που κάνει είναι να πληκτρολογήσετε "Hello World" έτσι δεν υπάρχει κίνδυνος εδώ. Κάντε κλικ στο κουμπί για να ενεργοποιήσετε τις μακροεντολές.

Για να δείτε τι έχει δημιουργήσει η εγγραφή μακροεντολών (καθώς και για να κάνετε τα περισσότερα άλλα πράγματα που περιλαμβάνουν VBA), πρέπει να ξεκινήσετε τον επεξεργαστή της Visual Basic. Υπάρχει ένα εικονίδιο για να το κάνετε αυτό στην αριστερή πλευρά της κορδέλας προγραμματιστή.

Αρχικά, παρατηρήστε το αριστερό παράθυρο. Αυτό ονομάζεται Εξερεύνηση έργου και συγκεντρώνει τα αντικείμενα υψηλού επιπέδου (θα μιλήσουμε περισσότερα γι 'αυτά) που είναι μέρος του έργου Visual Basic.

Όταν ξεκίνησε η εγγραφή μακροεντολών, είχατε μια επιλογή από το Κανονικός πρότυπο ή το τρέχον έγγραφο ως θέση για τη μακροεντολή σας. Αν έχετε επιλέξει Κανονική, τότε το NewMacros θα είναι μέρος του Κανονικός υποκατάστημα της οθόνης του Project Explorer. (Θα έπρεπε να επιλέξετε το τρέχον έγγραφο. Εάν επιλέξατε Κανονικός, διαγράψτε το έγγραφο και επαναλάβετε τις προηγούμενες οδηγίες.) Επιλέξτε NewMacros υπό Ενότητες στο τρέχον έργο σας. Εάν δεν υπάρχει ακόμα κάποιο παράθυρο κώδικα, κάντε κλικ στο κουμπί Κώδικας σύμφωνα με το Θέα μενού.

Το έγγραφο του Word ως δοχείο VBA

Κάθε πρόγραμμα Visual Basic πρέπει να είναι σε κάποιο είδος 'δοχείο' αρχείου. Στην περίπτωση μακροεντολών VBA του Word 2007, το συγκεκριμένο κοντέινερ είναι ένα έγγραφο του Word ('.docm'). Τα προγράμματα VBA του Word δεν μπορούν να εκτελεστούν χωρίς το Word και δεν μπορείτε να δημιουργήσετε προγράμματα μεμονωμένης ('.exe') Visual Basic όπως μπορείτε με Visual Basic 6 ή Visual Basic .NET. Αλλά αυτό αφήνει ακόμα έναν ολόκληρο κόσμο από πράγματα που μπορείτε να κάνετε.

Το πρώτο σας πρόγραμμα είναι σίγουρα σύντομο και γλυκό, αλλά θα χρησιμεύσει για την εισαγωγή των βασικών χαρακτηριστικών του VBA και του Visual Basic Editor.

Η πηγή του προγράμματος θα αποτελείται συνήθως από μια σειρά υπορουτίνων. Όταν αποφοιτήσετε σε πιο προηγμένο προγραμματισμό, θα ανακαλύψετε ότι άλλα πράγματα μπορούν να είναι μέρος του προγράμματος εκτός από τις υπορουτίνες.

Αυτή η συγκεκριμένη υπορουτίνα ονομάζεται Σχετικά με το ΒΒ1. Η κεφαλίδα υπορουτίνας πρέπει να αντιστοιχιστεί με μια End Sub στον πάτο. Η παρένθεση μπορεί να κρατήσει έναν κατάλογο παραμέτρων που αποτελείται από τιμές που διαβιβάζονται στην υπορουτίνα. Τίποτα δεν έχει περάσει εδώ, αλλά πρέπει να είναι εκεί στο Υπο δήλωση ούτως ή άλλως. Αργότερα, όταν τρέχουμε τη μακροεντολή, θα αναζητήσουμε το όνομα Σχετικά με το ΒΒ1.

Υπάρχει μόνο μία πραγματική δήλωση προγράμματος στην υπορουτίνα:

Επιλογή. TypeText Κείμενο: = "Γεια σας Κόσμος!"

Αντικείμενα, μέθοδοι και ιδιότητες

Αυτή η δήλωση περιέχει τα τρία μεγάλα:

  • ένα αντικείμενο
  • μια μέθοδος
  • ένα ακίνητο

Η δήλωση προσθέτει πραγματικά το κείμενο "Hello World." στα περιεχόμενα του τρέχοντος εγγράφου.

Το επόμενο καθήκον είναι να εκτελέσουμε το πρόγραμμά μας μερικές φορές. Ακριβώς όπως αγοράζοντας ένα αυτοκίνητο, είναι καλή ιδέα να το οδηγήσετε για λίγο μέχρι να αισθανθεί λίγο άνετα. Αυτό το κάνουμε στη συνέχεια.

Προγράμματα και έγγραφα

Έχουμε το ένδοξο και πολύπλοκο σύστημα μας... που αποτελείται από μία δήλωση προγράμματος... αλλά τώρα θέλουμε να το τρέξουμε. Ας δούμε τι είναι αυτό.

Υπάρχει μια ιδέα που πρέπει να μάθουμε εδώ που είναι πολύ σημαντική και συχνά μπερδεύει πραγματικά τους πρώτους χρονοδιακόπτες: τη διαφορά μεταξύ των πρόγραμμα και το έγγραφο. Αυτή η έννοια είναι θεμελιώδης.

Τα προγράμματα VBA πρέπει να περιέχονται σε ένα αρχείο υποδοχής. Στο Word, ο κεντρικός υπολογιστής είναι το έγγραφο. Στο παράδειγμά μας, αυτό είναι Σχετικά με το ΒΒ1.doc. Το πρόγραμμα αποθηκεύεται πραγματικά μέσα στο έγγραφο.

Για παράδειγμα, αν αυτό ήταν Excel, θα μιλούσαμε για το πρόγραμμα και το υπολογιστικό φύλλο. Στην Access, το πρόγραμμα και το βάση δεδομένων. Ακόμα και στην αυτόνομη εφαρμογή Visual Basic Windows, θα έχουμε ένα πρόγραμμα και ένα μορφή.

(Σημείωση: Υπάρχει μια τάση στον προγραμματισμό να αναφέρεται σε όλα τα εμπορευματοκιβώτια υψηλού επιπέδου ως "έγγραφο". Αυτό συμβαίνει ειδικά όταν XML... μια άλλη προηγμένη τεχνολογία... χρησιμοποιείται. Μην το συγχέετε. Αν και είναι μια μικρή ανακρίβεια, μπορείτε να σκεφτείτε τα "έγγραφα" ως περίπου τα ίδια με τα "αρχεία".)

Υπάρχουν... ummmmm... σχετικά με τρεις κύριους τρόπους για να εκτελέσετε τη μακροεντολή VBA.

  1. Μπορείτε να το εκτελέσετε από το έγγραφο του Word.
    (Σημείωση: Δύο υποκατηγορίες επιλέγουν τις μακροεντολές από το μενού Εργαλεία ή απλά πατήστε Alt-F8. Αν έχετε αντιστοιχίσει τη μακροεντολή σε μια συντόμευση στο Toolbar ή στο πληκτρολόγιο, αυτό είναι ακόμα ένας τρόπος.))
  2. Μπορείτε να το εκτελέσετε από το Editor χρησιμοποιώντας το εικονίδιο Run ή το μενού Run.
  3. Μπορείτε να κάνετε ένα βήμα μέσω του προγράμματος στη λειτουργία εντοπισμού σφαλμάτων.

Θα πρέπει να δοκιμάσετε όλες αυτές τις μεθόδους μόνο για να γίνετε άνετοι με τη διεπαφή Word / VBA. Όταν τελειώσετε, θα έχετε ένα ολόκληρο έγγραφο γεμάτο με επαναλήψεις του "Hello World!"

Η εκτέλεση του προγράμματος από το Word είναι αρκετά εύκολη. Απλά επιλέξτε τη μακροεντολή αφού κάνετε κλικ στο Macro κάτω από το εικονίδιο Θέα αυτί.

Για να το εκτελέσετε από τον Editor, ανοίξτε πρώτα τον επεξεργαστή της Visual Basic και, στη συνέχεια, κάντε κλικ στο εικονίδιο Εκτέλεση ή επιλέξτε Εκτέλεση από το μενού. Εδώ, η διαφορά μεταξύ του εγγράφου και του προγράμματος μπορεί να προκαλέσει σύγχυση σε ορισμένους. Εάν έχετε ελαχιστοποιήσει το έγγραφο ή ίσως τα παράθυρά σας έχουν ρυθμιστεί ώστε ο συντάκτης να το καλύπτει, μπορείτε να κάνετε κλικ στο εικονίδιο Εκτέλεσης ξανά και ξανά και τίποτα δεν φαίνεται να συμβαίνει. Αλλά το πρόγραμμα τρέχει! Μεταβείτε ξανά στο έγγραφο και δείτε.

Η απλή μετάβαση στο πρόγραμμα είναι ίσως η πιο χρήσιμη τεχνική επίλυσης προβλημάτων. Αυτό γίνεται επίσης από τον επεξεργαστή της Visual Basic. Για να το δοκιμάσετε, πατήστε F8 ή επιλέξτε Βήμα προς τα μέσα από το Debug μενού. Η πρώτη δήλωση στο πρόγραμμα, η Υπο δηλώνεται. Πατώντας το πλήκτρο F8 εκτελούνται οι εντολές του προγράμματος κάθε φορά μέχρι το τέλος του προγράμματος. Μπορείτε να δείτε ακριβώς πότε προστίθεται το κείμενο στο έγγραφο αυτό τον τρόπο.

Υπάρχουν πολλές πιο εξευγενισμένες τεχνικές εντοπισμού σφαλμάτων, όπως τα σημεία διακοπής, εξετάζοντας αντικείμενα του προγράμματος στο 'Άμεσο Παράθυρο' και τη χρήση του 'Παραθύρου Παρακολούθησης'. Αλλά για τώρα, απλά να γνωρίζετε ότι πρόκειται για μια πρωτογενή τεχνική εντοπισμού σφαλμάτων που θα χρησιμοποιήσετε ως προγραμματιστής.

Αντικειμενοστραφής προγραμματισμός

Το επόμενο μάθημα της τάξης είναι το θέμα Αντικειμενοστραφής προγραμματισμός.

"Whaaaattttt!" (Σας ακούω να γκρίνετε) "Θέλω μόνο να γράψω προγράμματα. Δεν είχα εγγραφεί για να είμαι επιστήμονας υπολογιστών! "

Μη φοβάσαι! Υπάρχουν δύο λόγοι για τους οποίους πρόκειται για μια μεγάλη κίνηση.

Πρώτον, στο σημερινό περιβάλλον προγραμματισμού, απλά δεν μπορείτε να είστε ένας αποτελεσματικός προγραμματιστής χωρίς να κατανοήσετε τις αντικειμενοστραφείς προγραμματιστικές έννοιες. Ακόμη και το πολύ απλό πρόγραμμα "Hello World" μιας γραμμής αποτελούταν από ένα αντικείμενο, μια μέθοδο και ένα ακίνητο. Κατά τη γνώμη μου, η κατανόηση των αντικειμένων δεν είναι το μεγαλύτερο πρόβλημα που ξεκινούν οι προγραμματιστές. ¶Έτσι πρόκειται να αντιμετωπίσουμε το θηρίο ακριβώς μπροστά!

Δεύτερον, πρόκειται να το καταστήσουμε όσο πιο ανώδυνο. Δεν πρόκειται να σας μπερδέψουμε με ένα φορτίο φρασεολογίας της επιστήμης των υπολογιστών.

Αλλά αμέσως μετά θα πάμε ξανά στο γράψιμο κώδικα προγραμματισμού με ένα μάθημα όπου θα αναπτύξουμε μια μακροεντολή VBA που μάλλον θα χρησιμοποιήσετε! Θα τελειοποιήσουμε αυτό το πρόγραμμα λίγο περισσότερο στο επόμενο μάθημα και θα τελειώσουμε, δείχνοντάς σας πώς να αρχίσετε να χρησιμοποιείτε το VBA με πολλές εφαρμογές ταυτόχρονα.