Ganze Excel-Tabellen in Word einfügen.


Sie können nicht nur einzelne Inhalte aus Excel-Tabellen nach Word übergeben, sondern auch komplette Excel-Tabellen in Word einfügen.
Aufgabenstellung

In diesem Beispiel soll eine komplette Excel-Tabelle an ein neues Word-Dokument übergeben werden. Dabei sollen die Daten Zelle für Zelle in eine Word-Tabelle eingefügt werden. Die Ausgangsdatei in Excel sieht wie folgt aus:

Programmlösung

 

Für die Lösung der Aufgabenstellung wird der benutzte Bereich der Excel-Tabelle ermittelt. Anschließend werden die Daten übertragen. Hier ist das passende VBA-Listing:

 

Sub GanzeTabelleTransferieren()

  'Dimensionierung der Variablen
  Dim objWordApp As Object
  Dim objWordDok As Object
  Dim varRange As Variant
  Dim objSheet As Object
  Dim intCount1 As Integer
  Dim intCount2 As Integer

  'Auslesen der gesamten Tabelle
  varRange = ActiveSheet.UsedRange

  'Festlegen der Vorgabewerte
  Set objWordApp = CreateObject("Word.application")

  'Starten der Word-Instanz und eine neues Dokument öffnen
  objWordApp.Visible = True
  Set objWordDok = objWordApp.documents.Add

    'Anschrift in das Dokument eintragen
    With objWordApp.Selection
      .TypeText Text:="Daten aus Excel "
      .TypeParagraph
      .TypeText Text:="Arbeitsmappe: " & ActiveWorkbook.Name
      .TypeParagraph
      .TypeText Text:="Blatt: " & ActiveSheet.Name
      .TypeParagraph
      .TypeText Text:="Datum: " & Format(Now(), "dd.mm.yyyy")
      .TypeParagraph
      .TypeParagraph
      .TypeParagraph
    End With

  'Tabelle im Worddokument einfügen
  Set objSheet = objWordDok.tables.Add
    _(objWordApp.Selection.Range, _
    UBound(varRange, 1), UBound(varRange, 2))

  'Tabelle in Worddokument einfügen
  With objSheet
    For intCount1 = 1 To UBound(varRange, 1)
      For intCount2 = 1 To UBound(varRange, 2)
        .cell(intCount1, intCount2).Range.insertafter _
           varRange(intCount1, intCount2)
      Next intCount2
    Next intCount1
  End With

'Aufheben der Verbindung zu den Objektvariablen
  Set objWordApp = Nothing
  Set objworddoc = Nothing
  Set objSheet = Nothing
End Sub

 

 

In dieser Lösung wird der Variablen "varRange" über die Eigenschaft "UsedRange" der momentan benutzte Bereich des aktiven Tabellenblattes zugewiesen. Nachdem Word gestartet und ein neues Dokument eingefügt wurde, wird mit dem folgenden Befehl eine leere Tabelle in Word eingefügt:

 

Set objSheet = objWordDok.tables.Add(objWordApp.Selection.Range,UBound (varRange, 1), UBound(varRange, 2))

 

 

Diese Tabelle wird anschließend über zwei verschachtelte For-Next-Schleifen gefüllt, indem die Zelleinträge aus der Excel-Tabelle ausgelesen und mit der Methode InserAfter in die Word-Tabelle eingefügt werden. Das Ergebnis sieht wie folgt aus:

 

 

Autor: Alois Eckl


Zurück zu Entwickler!                              Office-VBA intern 30 Tage gratis testen!

Der Fachverlag für Computerwissen ist ein Unternehmensbereich der VNR Verlag für die Deutsche Wirtschaft AG
Theodor-Heuss-Str. 2-4 · D-53095 Bonn · Tel.: 02 28 - 95 50 190 · Fax: 02 28 - 36 96 001
USt.-ID: DE 812639372 · Amtsgericht Bonn, HRB 8165 · Vorstand: Helmut Graf · Vorsitzender des Aufsichtsrats: Norman Rentrop
Copyright © 2008 Fachverlag für Computerwissen. Alle Rechte vorbehalten. Webdesign, Typo3, Programmierung: SimpleThings GmbH