Τρόπος εισαγωγής πίνακα Excel στο Word με VBA
το γραφείο της Microsoft Microsoft Word Microsoft Microsoft Excel Ήρωας Λέξη / / April 29, 2020
Τελευταία ενημέρωση στις
Το VBA είναι ένα πολύ ισχυρό εργαλείο που μπορείτε να χρησιμοποιήσετε για να αυτοματοποιήσετε πολλές εργασίες μεταξύ πολλών εφαρμογών του Microsoft Office. Μια κοινή δραστηριότητα που μπορείτε να αυτοματοποιήσετε χρησιμοποιώντας το VBA είναι η εισαγωγή ενός πίνακα Excel σε ένα έγγραφο του Word.
Η Visual Basic for Applications (VBA) είναι ένα πολύ ισχυρό εργαλείο που μπορείτε να χρησιμοποιήσετε για να αυτοματοποιήσετε πολλές εργασίες μεταξύ πολλών εφαρμογών του Microsoft Office. Μια κοινή δραστηριότητα που μπορείτε να αυτοματοποιήσετε χρησιμοποιώντας το VBA είναι η εισαγωγή ενός πίνακα Excel σε ένα έγγραφο του Word.
Υπάρχουν δύο τρόποι για να το κάνετε αυτό. Ο πρώτος είναι αυτοματοποίηση ενός ευθείου αντιγράφου και επικόλλησης ενός υπάρχοντος εύρους από το Excel σε έναν νέο πίνακα σε ένα έγγραφο του Word. Το δεύτερο εκτελεί υπολογισμούς στο Excel, δημιουργώντας έναν νέο πίνακα στο Word και γράφοντας τα αποτελέσματα στον πίνακα.
Θα μπορούσατε να προσπαθήσετε
Αντιγράψτε και επικολλήστε μια σειρά Excel στο Word με VBA
Και στα δύο παραδείγματα, θα ξεκινήσουμε με ένα δείγμα υπολογιστικού φύλλου Excel. Αυτό το δείγμα είναι μια λίστα παραγγελιών αγοράς για μια ποικιλία προϊόντων.
Ας υποθέσουμε ότι θέλετε να αντιγράψετε και να επικολλήσετε ολόκληρο το εύρος κελιών σε αυτό το φύλλο εργασίας σε ένα έγγραφο του Word. Για να το κάνετε αυτό, θα χρειαστεί να γράψετε μια συνάρτηση VBA που θα εκτελείται όταν κάνετε κλικ στο κουμπί "Αντιγραφή στο Word".
Επιλέγω Προγραμματιστής από το μενού και επιλέξτε Εισάγετε από την ομάδα ελέγχου στην κορδέλα. Στην αναπτυσσόμενη λίστα, επιλέξτε το κουμπί ελέγχου στο στοιχείο ActiveX Controls.
Στη συνέχεια, σχεδιάστε το κουμπί εντολής στη δεξιά πλευρά του φύλλου. Μπορείτε να αλλάξετε τη λεζάντα σε "Αντιγραφή στο Word" κάνοντας δεξί κλικ στο κουμπί και επιλέγοντας Ιδιότητες. Αλλάξτε το κείμενο της λεζάντας και μπορείτε να χρησιμοποιήσετε τη γραμματοσειρά για να ενημερώσετε το μέγεθος και το στυλ της γραμματοσειράς.
Σημείωση: Εάν δεν βλέπετε Προγραμματιστής στο μενού του Excel και, στη συνέχεια, προσθέστε το. Επιλέγω Αρχείο, Επιλογές, Προσαρμογή κορδέλαςκαι επιλέξτε Όλες οι εντολές από το αριστερό αναπτυσσόμενο μενού. Στη συνέχεια, προχωρήστε Προγραμματιστής από το αριστερό παράθυρο προς τα δεξιά και επιλέξτε ΟΚ για ολοκλήρωση.
Γράψτε τον κώδικα αντιγραφής και επικόλλησης VBA
Τώρα είστε έτοιμοι να αρχίσετε να γράφετε κώδικα VBA. Για να ξεκινήσετε, κάντε διπλό κλικ στο νέο Αντιγραφή στο Word κουμπί για να ανοίξετε το παράθυρο του προγράμματος επεξεργασίας κώδικα.
Θα πρέπει να δείτε μια υπορουτίνα που ονομάζεται Commandbutton1_Click () όπως φαίνεται παρακάτω.
Θα θέλετε να αντιγράψετε κάθε ενότητα κώδικα παρακάτω. Πριν ξεκινήσετε την κωδικοποίηση, για να ελέγξετε το Word στον υπολογιστή σας χρησιμοποιώντας το VBA, θα πρέπει να ενεργοποιήσετε τη βιβλιοθήκη αναφοράς του Microsoft Word.
Στο πρόγραμμα επεξεργασίας κώδικα, επιλέξτε Εργαλεία από το μενού και επιλέξτε βιβλιογραφικές αναφορές. Στη λίστα των διαθέσιμων αναφορών, μετακινηθείτε προς τα κάτω και ενεργοποιήστε Βιβλιοθήκη αντικειμένων του Microsoft Word 16.0.
Επιλέξτε OK και είστε έτοιμοι να ξεκινήσετε την κωδικοποίηση. Θα εξετάσουμε κάθε ενότητα κώδικα κάθε φορά, ώστε να καταλάβετε τι κάνει αυτός ο κώδικας και γιατί.
Αρχικά, πρέπει να δημιουργήσετε τις μεταβλητές και τα αντικείμενα που θα κρατούν το εύρος και θα σας επιτρέψουν να ελέγχετε την εφαρμογή Word.
Dim tblRange As Excel. Εύρος
Χαμηλό WordApp ως Word. Εφαρμογή
Dim WordDoc ως Word. Εγγραφο
Dim Word Πίνακας ως Word. Τραπέζι
Η επόμενη γραμμή κώδικα επιλέγει ένα συγκεκριμένο εύρος κελιών και το αποθηκεύει σε ένα αντικείμενο Excel Range στο VBA.
Ορισμός tblRange = ThisWorkbook. Φύλλα εργασίας ("Φύλλο1"). Εύρος ("A2: G44")
Στη συνέχεια, θέλετε να ελέγξετε εάν η εφαρμογή Word είναι ήδη ανοιχτή στον υπολογιστή. Μπορείτε να αναφέρετε την εφαρμογή Word χρησιμοποιώντας μια ειδική αναφορά "κλάσης" με την εντολή VBA GetObject για να το επιτύχετε. Εάν το Word δεν είναι ήδη ανοιχτό, τότε η επόμενη γραμμή θα το ξεκινήσει χρησιμοποιώντας τη συνάρτηση CreateObject. Η γραμμή "On Error Resume Next" αποτρέπει τυχόν σφάλμα από την πρώτη συνάρτηση GetObject (εάν το Word δεν είναι ήδη ανοιχτό) από τη διακοπή της εκτέλεσης της επόμενης γραμμής στο πρόγραμμα.
Σφάλμα Συνέχιση Επόμενο
Ορισμός WordApp = GetObject (class: = "Word. Εφαρμογή")
Εάν το WordApp δεν είναι τίποτα, τότε ορίστε το WordApp = CreateObject (class: = "Word. Εφαρμογή")
Τώρα που κυκλοφόρησε η εφαρμογή Word, θέλετε να την κάνετε ορατή στον χρήστη και να την ενεργοποιήσετε για χρήση.
WordApp. Ορατό = Αληθινό
WordApp. Θέτω εις ενέργειαν
Στη συνέχεια, θέλετε να δημιουργήσετε ένα νέο έγγραφο μέσα στην εφαρμογή Word.
Ορίστε το WordDoc = WordApp. Εγγραφα. Προσθήκη
Τέλος, θα αντιγράψετε και θα επικολλήσετε το εύρος των κελιών σε έναν νέο πίνακα στο έγγραφο του Word.
tblRange. αντίγραφο
WordDoc. Παράγραφοι (1). Εύρος. ΕπικόλλησηExcelTable _
LinkedToExcel: = Λάθος, _
WordFormatting: = Λάθος, _
RTF: = Λάθος
Οι διακόπτες στην παραπάνω λειτουργία θα εισαγάγουν έναν μη συνδεδεμένο πίνακα χρησιμοποιώντας μορφοποίηση πηγής Excel (όχι μορφοποίηση Word) και δεν θα χρησιμοποιούν μορφή εμπλουτισμένου κειμένου.
Τέλος, για να αντιμετωπίσετε εύρη Excel που είναι ευρύτερα από το έγγραφο, θα πρέπει να κάνετε αυτόματη προσαρμογή του νέου πίνακα, ώστε να ταιριάζει στα περιθώρια του νέου σας εγγράφου Word.
Ορισμός WordTable = WordDoc. Τραπέζια (1)
Πίνακας λέξεων. AutoFitBehavior (wdAutoFitWindow)
Και τώρα τελειώσατε! Αποθηκεύστε το αρχείο ως αρχείο Excel με δυνατότητα μακροεντολής (επέκταση .xlsm). Κλείστε το πρόγραμμα επεξεργασίας, αποθηκεύστε ξανά το αρχικό αρχείο Excel και, στη συνέχεια, κάντε κλικ στο κουμπί εντολής σας για να δείτε τον κωδικό σας σε δράση!
Γράψτε αποτελέσματα Excel σε πίνακα λέξεων με VBA
Σε αυτήν την επόμενη ενότητα, θα γράψετε κώδικα VBA που εκτελεί υπολογισμούς σε τιμές στο Excel και θα τους γράφει έναν πίνακα στο Word.
Για αυτό το παράδειγμα, θα τραβήξουμε δεδομένα αξίας 10 σειρών, θα υπολογίσουμε και θα γράψουμε τα αποτελέσματα σε έναν πίνακα σε ένα έγγραφο του Word. Επίσης, ο αρχικός πίνακας θα περιέχει τέσσερις στήλες και ο κώδικας VBA θα τραβήξει τις πρώτες δέκα σειρές δεδομένων από αυτό το εύρος.
Όπως και στην τελευταία ενότητα, θα εξετάσουμε κάθε ενότητα κάθε φορά, ώστε να καταλάβετε τι κάνει αυτός ο κώδικας και γιατί.
Αρχικά, δημιουργήστε τις μεταβλητές και τα αντικείμενα που θα διατηρούν τα δεδομένα και θα σας επιτρέψουν να γράψετε στην εφαρμογή Word.
Dim tblRange As Excel. Εύρος
Dim WrdRange As Word. Εύρος
Χαμηλό WordApp ως Word. Εφαρμογή
Dim WordDoc ως Word. Εγγραφο
Dim Word Πίνακας ως Word. Τραπέζι
Αχνό intRows
Αχνό intColumns
Dim strDate As String
Dim strItem As String
Dim intUnits ως παραλλαγή
Dim intCost ως παραλλαγή
Αμβλύ intTotal ως παραλλαγή
Στη συνέχεια, ορίστε τις συνολικές στήλες και τις γραμμές που θέλετε να διαβάσετε από το εύρος του Excel.
intNoOfRows = 10
intNoOfColumns = 5
Επαναλάβετε τον ίδιο κωδικό με την τελευταία ενότητα που θα ανοίξει το Word εάν δεν είναι ήδη ανοιχτό.
Σφάλμα Συνέχιση Επόμενο
Ορισμός WordApp = GetObject (class: = "Word. Εφαρμογή")
Εάν το WordApp δεν είναι τίποτα, τότε ορίστε το WordApp = CreateObject (class: = "Word. Εφαρμογή")
WordApp. Ορατό = Αληθινό
WordApp. Θέτω εις ενέργειαν
Ορίστε το WordDoc = WordApp. Εγγραφα. Προσθήκη
Οι επόμενες τέσσερις γραμμές δημιουργούν έναν πίνακα μέσα σε αυτό το έγγραφο Word που άνοιξε πρόσφατα.
Ορισμός WrdRange = WordDoc. Εύρος (0, 0)
WordDoc. Πίνακες. Προσθήκη WrdRange, intNoOfRows, intNoOfColumns
Ορισμός WordTable = WordDoc. Τραπέζια (1)
Πίνακας λέξεων. Σύνορα. Ενεργοποίηση = True
Τέλος, ο παρακάτω βρόχος θα εκτελέσει αυτές τις ενέργειες:
- Για κάθε σειρά, τοποθετήστε την ημερομηνία παραγγελίας, το στοιχείο, τις μονάδες και το κόστος σε μεταβλητές
- Υπολογίστε το κόστος μονάδας (συνολική πώληση) και αποθηκεύστε το σε μια μεταβλητή
- Για κάθε στήλη, γράψτε τις τιμές στον πίνακα του Word, συμπεριλαμβανομένης της υπολογισμένης συνολικής πώλησης στο τελευταίο κελί
- Μεταβείτε στην επόμενη σειρά και επαναλάβετε την παραπάνω διαδικασία
Δείτε πώς μοιάζει αυτός ο κώδικας:
Για i = 1 To intNoOfRows
Για j = 1 Προς intNoOfColumns
Εάν j = 1 τότε
strDate = tblRange. Κελιά (i + 1, j). Τιμή
strItem = tblRange. Κελιά (i + 1, j + 1). Τιμή
intUnits = Val (tblRange). Κελιά (i + 1, j + 2). Τιμή)
intCost = Val (tblRange. Κελιά (i + 1, j + 3). Τιμή)
intTotal = intUnits * intCost
Τέλος εαν
Επιλέξτε Περίπτωση j
Περίπτωση Is = 1
Πίνακας λέξεων. Κελί (i, j). Εύρος. Κείμενο = strDate
Περίπτωση Is = 2
Πίνακας λέξεων. Κελί (i, j). Εύρος. Κείμενο = strItem
Υπόθεση είναι = 3
Πίνακας λέξεων. Κελί (i, j). Εύρος. Κείμενο = intUnits
Περίπτωση Is = 4
Πίνακας λέξεων. Κελί (i, j). Εύρος. Κείμενο = intCost
Περίπτωση Is = 5
Πίνακας λέξεων. Κελί (i, j). Εύρος. Κείμενο = intTotal
Υπόθεση άλλο
Τέλος Επιλογή
Επόμενο
Επόμενο
Η λειτουργία "Cells" στο πρώτο μέρος τραβά το τιμές κελιών εκτός Excel. Κελιά (x, y) σημαίνει ότι τραβά την τιμή του κελιού στη σειρά x και στη στήλη y.
Η συνάρτηση "Cell" στο τελευταίο μέρος γράφει στα κελιά του πίνακα Word, χρησιμοποιώντας τις ίδιες αντιστοιχίσεις γραμμής και στήλης.
Μόλις αποθηκεύσετε και εκτελέσετε αυτόν τον κώδικα VBA, θα δείτε τα αποτελέσματα στο έγγραφο του Word που δημιουργήσατε πρόσφατα.
Όπως μπορείτε να δείτε, δεν είναι πολύ περίπλοκο να δημιουργείτε κάποιο χρήσιμο αυτοματισμό μεταξύ του Excel και του Word. Είναι απλώς θέμα κατανόησης του τρόπου λειτουργίας των διαφόρων «αντικειμένων» που μπορούν να δημιουργήσουν και να ελέγξουν τόσο τις εφαρμογές Excel όσο και τις εφαρμογές Word στον υπολογιστή σας.