So fügen Sie eine Excel-Tabelle mit VBA in Word ein
Microsoft Office Microsoft Word Microsoft Microsoft Excel Held Wort / / April 29, 2020
Zuletzt aktualisiert am
VBA ist ein sehr leistungsfähiges Tool, mit dem Sie viel Arbeit zwischen mehreren Microsoft Office-Anwendungen automatisieren können. Eine häufige Aktivität, die Sie mithilfe von VBA automatisieren können, ist das Einfügen einer Excel-Tabelle in ein Word-Dokument.
Visual Basic für Applikationen (VBA) ist ein sehr leistungsfähiges Tool, mit dem Sie viel Arbeit zwischen mehreren Microsoft Office-Anwendungen automatisieren können. Eine häufige Aktivität, die Sie mithilfe von VBA automatisieren können, ist das Einfügen einer Excel-Tabelle in ein Word-Dokument.
Es gibt zwei Möglichkeiten, dies zu tun. Die erste besteht darin, ein direktes Kopieren und Einfügen eines vorhandenen Bereichs aus Excel in eine neue Tabelle in einem Word-Dokument zu automatisieren. Die zweite besteht darin, Berechnungen in Excel durchzuführen, eine neue Tabelle in Word zu erstellen und die Ergebnisse in die Tabelle zu schreiben.
Sie könnten es versuchen Nehmen Sie ein Makro auf
Kopieren Sie einen Excel-Bereich und fügen Sie ihn mit VBA in Word ein
In beiden Beispielen beginnen wir mit einer Excel-Beispieltabelle. Dieses Beispiel ist eine Liste von Bestellungen für eine Vielzahl von Produkten.
Angenommen, Sie möchten den gesamten Zellenbereich in diesem Arbeitsblatt kopieren und in ein Word-Dokument einfügen. Dazu müssen Sie eine VBA-Funktion schreiben, die ausgeführt wird, wenn Sie auf die Schaltfläche "In Word kopieren" klicken.
Wählen Entwickler aus dem Menü und wählen Sie Einfügen aus der Gruppe Steuerelemente in der Multifunktionsleiste. Wählen Sie in der Dropdown-Liste das Schaltflächensteuerelement unter ActiveX-Steuerelemente aus.
Zeichnen Sie als Nächstes die Befehlsschaltfläche auf der rechten Seite des Blattes. Sie können die Beschriftung in "In Word kopieren" ändern, indem Sie mit der rechten Maustaste auf die Schaltfläche klicken und auswählen Eigenschaften. Ändern Sie den Beschriftungstext, und Sie können Schriftart verwenden, um Schriftgröße und -stil zu aktualisieren.
Hinweis: Wenn Sie nicht sehen Entwickler Fügen Sie es dann in Ihr Excel-Menü ein. Wählen Datei, Optionen, Band anpassenund auswählen Alle Befehle von der linken Dropdown-Liste. Dann bewege dich Entwickler Klicken Sie im linken Bereich nach rechts und wählen Sie OK, um den Vorgang abzuschließen.
Schreiben Sie den VBA-Code zum Kopieren und Einfügen
Jetzt können Sie mit dem Schreiben von VBA-Code beginnen. Doppelklicken Sie zunächst auf das neue Nach Word kopieren Schaltfläche zum Öffnen des Code-Editor-Fensters.
Sie sollten eine Unterroutine namens Commandbutton1_Click () sehen, wie unten gezeigt.
Sie möchten jeden der folgenden Codeabschnitte kopieren. Bevor Sie mit dem Codieren beginnen, müssen Sie die Microsoft Word-Referenzbibliothek aktivieren, um Word auf Ihrem Computer mithilfe von VBA zu steuern.
Wählen Sie im Code-Editor Werkzeuge aus dem Menü und wählen Sie Verweise. Scrollen Sie in der Liste der verfügbaren Referenzen nach unten und aktivieren Sie sie Microsoft Word 16.0-Objektbibliothek.
Wählen Sie "OK" und Sie können mit dem Codieren beginnen. Wir werden jeden Codeabschnitt einzeln durchgehen, damit Sie verstehen, was dieser Code bewirkt und warum.
Zunächst müssen Sie die Variablen und Objekte erstellen, die den Bereich enthalten, und die Word-Anwendung steuern.
Dim tblRange As Excel. Angebot
WordApp als Word dimmen. Anwendung
WordDoc als Word dimmen. Dokumentieren
WordTable als Word dimmen. Tabelle
In der nächsten Codezeile wird ein bestimmter Zellenbereich ausgewählt und in einem Excel-Bereichsobjekt in VBA gespeichert.
Setzen Sie tblRange = ThisWorkbook. Arbeitsblätter ("Sheet1"). Bereich ("A2: G44")
Als Nächstes möchten Sie überprüfen, ob die Word-Anwendung bereits auf dem Computer geöffnet ist. Sie können die Word-Anwendung mithilfe einer speziellen Klassenreferenz mit dem Befehl VBA GetObject referenzieren, um dies zu erreichen. Wenn Word noch nicht geöffnet ist, wird es in der nächsten Zeile mit der Funktion "CreateObject" gestartet. Die Zeile "On Error Resume Next" verhindert, dass Fehler der ersten GetObject-Funktion (falls Word noch nicht geöffnet ist) die Ausführung der nächsten Zeile im Programm stoppen.
On Error Resume Next
Setzen Sie WordApp = GetObject (class: = "Word. Anwendung")
Wenn WordApp nichts ist, setzen Sie WordApp = CreateObject (class: = "Word. Anwendung")
Nachdem die Word-Anwendung gestartet wurde, möchten Sie sie für den Benutzer sichtbar machen und für die Verwendung aktivieren.
WordApp. Sichtbar = Richtig
WordApp. aktivieren Sie
Als Nächstes möchten Sie ein neues Dokument in der Word-Anwendung erstellen.
Setzen Sie WordDoc = WordApp. Unterlagen. Hinzufügen
Schließlich kopieren Sie den Zellenbereich und fügen ihn in eine neue Tabelle im Word-Dokument ein.
tblRange. Kopieren
WordDoc. Absätze (1) .Bereich. PasteExcelTable _
LinkedToExcel: = False, _
WordFormatting: = False, _
RTF: = Falsch
Mit den Schaltern in der obigen Funktion wird eine nicht verknüpfte Tabelle im Excel-Quellformat (nicht im Word-Format) und ohne Rich-Text-Format eingefügt.
Um mit Excel-Bereichen fertig zu werden, die breiter als das Dokument sind, müssen Sie die neue Tabelle automatisch anpassen, damit sie in die Ränder Ihres neuen Word-Dokuments passt.
Setzen Sie WordTable = WordDoc. Tabellen (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
Und jetzt bist du fertig! Speichern Sie die Datei als makrofähige Excel-Datei (Erweiterung .xlsm). Schließen Sie den Editor, speichern Sie die ursprüngliche Excel-Datei erneut und klicken Sie dann auf die Befehlsschaltfläche, um Ihren Code in Aktion zu sehen!
Schreiben Sie Excel-Ergebnisse mit VBA in eine Word-Tabelle
In diesem nächsten Abschnitt schreiben Sie VBA-Code, der Berechnungen für Werte in Excel ausführt, und schreiben diese in eine Tabelle in Word.
In diesem Beispiel werden Daten im Wert von 10 Zeilen abgerufen, die Ergebnisse berechnet und in eine Tabelle in einem Word-Dokument geschrieben. Außerdem enthält die ursprüngliche Tabelle vier Spalten, und der VBA-Code ruft die ersten zehn Datenzeilen aus diesem Bereich ab.
Wie im letzten Abschnitt werden wir jeden Abschnitt einzeln durchgehen, damit Sie verstehen, was dieser Code bewirkt und warum.
Erstellen Sie zunächst die Variablen und Objekte, die die Daten enthalten, und ermöglichen Sie das Schreiben in die Word-Anwendung.
Dim tblRange As Excel. Angebot
Dim WrdRange As Word. Angebot
WordApp als Word dimmen. Anwendung
WordDoc als Word dimmen. Dokumentieren
WordTable als Word dimmen. Tabelle
IntRows dimmen
IntColumns dimmen
Dim strDate As String
Dim strItem As String
IntUnits als Variante dimmen
IntCost als Variante dimmen
IntTotal als Variante dimmen
Legen Sie als Nächstes die Gesamtzahl der Spalten und Zeilen fest, die Sie aus dem Excel-Bereich lesen möchten.
intNoOfRows = 10
intNoOfColumns = 5
Wiederholen Sie denselben Code wie im letzten Abschnitt, in dem Word geöffnet wird, falls er noch nicht geöffnet ist.
On Error Resume Next
Setzen Sie WordApp = GetObject (class: = "Word. Anwendung")
Wenn WordApp nichts ist, setzen Sie WordApp = CreateObject (class: = "Word. Anwendung")
WordApp. Sichtbar = Richtig
WordApp. aktivieren Sie
Setzen Sie WordDoc = WordApp. Unterlagen. Hinzufügen
In den nächsten vier Zeilen wird eine Tabelle in diesem neu geöffneten Word-Dokument erstellt.
Setzen Sie WrdRange = WordDoc. Bereich (0, 0)
WordDoc. Tabellen. Fügen Sie WrdRange, intNoOfRows, intNoOfColumns hinzu
Setzen Sie WordTable = WordDoc. Tabellen (1)
WordTable. Grenzen. Enable = True
Schließlich führt die folgende Schleife diese Aktionen aus:
- Geben Sie für jede Zeile das Bestelldatum, den Artikel, die Einheiten und die Kosten in Variablen ein
- Berechnen Sie die Stückkosten (Gesamtverkauf) und speichern Sie diese in einer Variablen
- Schreiben Sie für jede Spalte die Werte in die Word-Tabelle, einschließlich des berechneten Gesamtverkaufs in der letzten Zelle
- Fahren Sie mit der nächsten Zeile fort und wiederholen Sie den obigen Vorgang
So sieht dieser Code aus:
Für i = 1 bis intNoOfRows
Für j = 1 bis intNoOfColumns
Wenn j = 1 Dann
strDate = tblRange. Zellen (i + 1, j) .Wert
strItem = tblRange. Zellen (i + 1, j + 1) .Wert
intUnits = Val (tblRange. Zellen (i + 1, j + 2) .Wert)
intCost = Val (tblRange. Zellen (i + 1, j + 3) .Wert)
intTotal = intUnits * intCost
End If
Wählen Sie Fall j
Fall ist = 1
WordTable. Zelle (i, j) .Bereich. Text = strDate
Fall ist = 2
WordTable. Zelle (i, j) .Bereich. Text = strItem
Fall ist = 3
WordTable. Zelle (i, j) .Bereich. Text = intUnits
Fall ist = 4
WordTable. Zelle (i, j) .Bereich. Text = intCost
Fall ist = 5
WordTable. Zelle (i, j) .Bereich. Text = intTotal
Fall sonst
Ende auswählen
Nächster
Nächster
Die Funktion „Zellen“ im ersten Teil zieht die Zellenwerte aus Excel. Zellen (x, y) bedeutet, dass der Wert der Zelle in Zeile x und Spalte y abgerufen wird.
Die Funktion „Zelle“ im letzten Teil schreibt mit denselben Zeilen- und Spaltenzuweisungen in die Zellen in der Word-Tabelle.
Sobald Sie diesen VBA-Code gespeichert und ausgeführt haben, werden die Ergebnisse in Ihrem neu erstellten Word-Dokument angezeigt.
Wie Sie sehen, ist es nicht allzu kompliziert, eine nützliche Automatisierung zwischen Excel und Word zu erstellen. Es geht nur darum zu verstehen, wie die verschiedenen "Objekte" funktionieren, mit denen sowohl die Excel- als auch die Word-Anwendung auf Ihrem Computer erstellt und gesteuert werden können.