Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel-Makro Zugriff auf Word-Dokument

Excel-Makro Zugriff auf Word-Dokument
12.10.2013 20:02:12
Sandra
Hallo allerseits!
Ich bin neu im Forum und muss mich erstmal bei allen bedanken, ich habe hier schon viele tolle Hinweise bekommen!
Jetzt sitze ich an einem Problem bei dem ich nicht (mehr) weiterkomme.
Ich habe ein Makro in Excel erstellt, dass ein neues Word-Dokument erstellt und Diagramme und Zellen aus Excel in das neue Word-Dokument überträgt.
Als ich damals das Makro erstellt habe, musste ich in Excel etwas aktivieren, damit die Codes für MS Word funktionieren. Ich erinnere mich an eine riesige Liste in der dann unter anderem etwas wie "Microsoft Word" stand, das ich auswählte und "aktivierte". Danach war es erst möglich, Codes auszuführen, um bspw. in Word dann Text einzugeben etc.
Nun soll das Programm auf einem anderen Rechner laufen, was es leider nicht tut, weil ja diese Einstellung nicht vorgenommen wurde. Leider finde ich aber die Quelle nicht mehr, die mir damals weitergeholfen hat. Weiß hier irgendwer wovon ich rede und wenn ja, wie das funktioniert? :)
Ich danke euch im Voraus!
Herzliche Grüße
Sandra

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Makro Zugriff auf Word-Dokument
12.10.2013 20:23:24
mumpel
Hallo!
Einen Verweis setzen auf die "Microsoft Word X.0 Object-Library". Aber weshalb nutzt Du überhaupt Early-Binding? Mit Late-Binding musst Du nichts "aktivieren", da wird das Word-Objekt zur Laufzeit generiert und nach Ablauf des Makros wieder gelöst.
Gruß, René

AW: Excel-Makro Zugriff auf Word-Dokument
12.10.2013 21:02:35
Sandra
Hey René!
Danke für deine Antwort!
Ich muss dazu sagen, dass ich mich vorab noch nie mit dem Zugriff auf andere Anwendungen wie Word befasst habe, dh. ich habe das Programm mehr oder minder "zusammengebastelt". Was Early-Binding und Late-Binding ist, weiß ich leider auch nicht :o) Ich bin einfach froh, dass es jetzt soweit funktioniert.
Ich bin auch gerade noch ein wenig überfordert. Wie setze ich einen solchen Verweis von Hand?
Vielen lieben Dank!
Sandra

Anzeige
AW: Excel-Makro Zugriff auf Word-Dokument
12.10.2013 21:13:30
mumpel
Extras-Verweise.
Unterschied Early-Binding und LateBinding ist nur eine Zeile. Bei letzterem benötigst Du keinen Verweis. Der Vorteil ist dass Du keine Rücksicht auf die Word-Version nehmen musst. Bei Early-Binding kann es passieren dass es auf fremden Rechnern zu einem fehlerhaften Verweis kommt. Daher sollte man möglichst immer Late-Binding nutzen. "TestEins" = Early-Binding, "TestZwei" = Late-Binding.

Anzeige
Nachtrag
12.10.2013 21:15:19
mumpel
Da habe ich mich doch glatt bei den Variablen verschrieben... ;)

AW: Excel-Makro Zugriff auf Word-Dokument
12.10.2013 21:30:53
Sandra
Hey,
Dankeschön!
Habe es in meinem Programm eingebunden:

Dim MSWord As Object        'Word-Datei
Dim MSExcel As Object       'Excel-Datei
Set MSExcel = ActiveWorkbook   'als MSExcel bestimmen
Set MSWord = CreateObject("Word.Application")   'als MSWord bestimmen
MSWord.Visible = True                           'Word sichtbar
MSWord.Documents.Add                            'Word-Dokument erstellen
Hab's laufen lassen, nachdem ich die Library wieder deaktiviert habe.
Bei folgender Zeile generiert es mir einen Fehler mit Laufzeitfehler 9118
MSWord.Selection.InsertBreak wdPageBreak 'Seitenumbruch einfügen
Hat das was mit der Early-Binding-Sache zu tun?

Anzeige
AW: Excel-Makro Zugriff auf Word-Dokument
12.10.2013 22:39:51
mumpel
Bei Nutzung von "wdPageBreak" benötigt man schon wieder einen Verweis. Late-Binding ist zu 99% hilfreich, bei kleineren Dingen ist der Verweis zu setzen.

AW: Excel-Makro Zugriff auf Word-Dokument
12.10.2013 23:16:44
Sandra
Ha, gerade hab ich gefunden wie es geht.
Mit

MSWord.Selection.InsertBreak 7

wird es ausgeführt :)

Anzeige
AW: Excel-Makro Zugriff auf Word-Dokument
12.10.2013 23:17:13
Sandra
Vielen Dank für die Hilfe!

AW: Excel & Access Add-Ins
14.10.2013 11:37:55
Case
Hallo mumpel, :-)
Einspruch euer Ehren. :-)
Du bringst da etwas durcheinander. Ein Verweis muss in keinem Fall gesetzt werden - Du darfst nur nicht die namentlichen Konstanten nutzen, sondern deren Zahlenwert.
IMHO besser ist es die Konstanten am Anfang des Codes zu deklarieren. Also z. B. für eine leere Powerpointfolie "Const ppLayoutBlank As Long = 12". Jetzt kann wieder mit der namentlichen Konstante gearbeitet werden.
Es ist auch nicht nur eine Zeile, um von Early- auf Latebinding umzustellen. Wenn viele Konstanten verwendet wurden ist es doch recht mühselig.
Die Konstanten kann man z. B. im Objektkatalog (F2 im entsprechenden VBA-Editor) der jeweiligen Officeapplikation finden.
Diverse Listen gibt es auch im Netz:
Konstanten...
Servus
Case

Anzeige
AW: Excel & Access Add-Ins
14.10.2013 12:32:52
mumpel
Das ist gut zu wissen. Muss ich doch gleich ausprobieren. Aber erst heute nachmittag auf dem Notebook (hier am Hauptrechner ist nur Office 2013 installiert, das hat keine VBA-Hilfe mehr).

Zitat:
[...] Es ist auch nicht nur eine Zeile [...]
____________________________
Quelle: Herber-Forum


Kommt IMHO darauf an wie man programmiert. Bei mir hat bisher immer der Austausch dieser einen Zeile und die Änderung in der Variablen-Deklaration genügt.

Anzeige
AW: Excel-Makro Zugriff auf Word-Dokument
12.10.2013 21:13:17
Sandra
Ich nochmal, hab es gefunden :)) Vielen lieben Dank! Stundenlanges Suchen hat ein Ende :)
Beim nächsten Projekt befasse ich mich dann mit Late-Binding, um sowas zu vermeiden. Herzlichen Dank nochmal!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel-Makro Zugriff auf Word-Dokument


Schritt-für-Schritt-Anleitung

  1. Verweis setzen (Early-Binding):

    • Öffne den VBA-Editor in Excel (ALT + F11).
    • Gehe zu Extras -> Verweise.
    • Suche und aktiviere die "Microsoft Word X.0 Object-Library".
  2. Makro erstellen:

    • Erstelle ein neues Modul und füge den folgenden Code ein:
      Dim MSWord As Object        'Word-Datei
      Dim MSExcel As Object       'Excel-Datei
      Set MSExcel = ActiveWorkbook   'als MSExcel bestimmen
      Set MSWord = CreateObject("Word.Application")   'als MSWord bestimmen
      MSWord.Visible = True                           'Word sichtbar
      MSWord.Documents.Add                            'Word-Dokument erstellen
  3. Inhalt in das Word-Dokument einfügen:

    • Füge weiteren Code hinzu, um Excel-Daten zu übertragen oder Text in das Word-Dokument einzufügen.
  4. Seitenumbruch einfügen:

    • Um einen Seitenumbruch hinzuzufügen, kannst du:
      MSWord.Selection.InsertBreak wdPageBreak 'Seitenumbruch einfügen
    • Bei Verwendung von wdPageBreak musst du einen Verweis setzen. Für Late-Binding nutze die Zahl 7:
      MSWord.Selection.InsertBreak 7

Häufige Fehler und Lösungen

  • Laufzeitfehler 9118:

    • Dieser Fehler kann auftreten, wenn du wdPageBreak verwendest, ohne den entsprechenden Verweis gesetzt zu haben. Verwende stattdessen die Zahl 7.
  • Makros in diesem Dokument wurden vom Unternehmensadministrator deaktiviert:

    • Stelle sicher, dass die Makros in den Excel- und Word-Einstellungen aktiviert sind. Gehe zu Datei -> Optionen -> Trust Center -> Einstellungen für das Trust Center -> Makroeinstellungen.

Alternative Methoden

  • Late-Binding:

    • Bei Late-Binding musst du keinen Verweis auf die Word-Bibliothek setzen. Der Code könnte so aussehen:
      Dim MSWord As Object
      Set MSWord = CreateObject("Word.Application")
  • Verwendung von Konstanten:

    • Anstatt wdPageBreak zu verwenden, definiere Konstanten am Anfang deines Codes, um die Lesbarkeit zu verbessern:
      Const wdPageBreak As Long = 7

Praktische Beispiele

Hier sind einige praktische Beispiele, die dir den Umgang mit Excel-Makros in Word erleichtern:

  1. Einfügen von Überschriften:

    MSWord.Selection.TypeText "Überschrift 1"
    MSWord.Selection.Style = "Überschrift 1"
  2. Einfügen von Diagrammen:

    MSWord.Selection.InlineShapes.AddPicture "Pfad\zum\Diagramm.png"
  3. Datenübertragung:

    • Übertrage Zellen aus Excel in Word:
      MSWord.Selection.TypeText MSExcel.Sheets("Sheet1").Range("A1").Value

Tipps für Profis

  • Verwende die Bildschirmmitte: Um Inhalte zentriert anzuzeigen, kannst du die Formatierungsoptionen in Word nutzen:

    MSWord.Selection.ParagraphFormat.Alignment = 1 '1 steht für zentriert
  • Nutze Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um Probleme während der Ausführung zu vermeiden:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie aktiviere ich Makros in Word?
Gehe zu Datei -> Optionen -> Trust Center -> Einstellungen für das Trust Center und aktiviere die Makros.

2. Was ist der Unterschied zwischen Early-Binding und Late-Binding?
Early-Binding erfordert das Setzen eines Verweises auf die Bibliothek, während Late-Binding dies nicht tut und flexibler ist, da es keine Versionskonflikte gibt.

3. Wie füge ich ein Bild aus Excel in ein Word-Dokument ein?
Nutze die Methode AddPicture, um das Bild in das Dokument einzufügen, wie im praktischen Beispiel gezeigt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige