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

Forumthread: Word-Datei aus Excel erstellen

Word-Datei aus Excel erstellen
30.01.2007 13:10:47
mtremer
Liebe Excel-Freunde,
ich habe nun schon eine Weile recherchiert, aber nicht das gefunden, was ich gerne machen würde.
Ich will einen CommandButton programmieren, der bei Klick folgende Schritte durchläuft:
- Word öffnen
- neues Dokument erstellen
- Adresse des Empfängers eintragen: Name A1, Strasse+Nr. A2, PLZ+Ort A3 der aktiven Exceldatei
- Betreffzeile fett
- 5 Zeilen Freitext
- 2 Unterschriftsberechtigte: Name1 B1, Name2 B2 der aktiven Exceldatei
Ist das möglich?
Dank diesem Forum konnte ich bereits auf ähnlichem Weg mit Outlook eine Mail generieren.
Ich hoffe, Ihr könnt mir bei meinem Problem helfen...
Danke.
Viele Grüße
Marco
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word-Datei aus Excel erstellen
30.01.2007 15:27:10
IngGi
Hallo mtremer,
mal als Ansatz:

Sub Daten_nach_Word()
Dim wdApp As Object
Dim wdoc As Object
Dim ab As Byte
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
On Error GoTo 0
If wdApp Is Nothing Then
   Set wdApp = CreateObject("Word.Application")
   wdApp.Visible = True
End If
wdApp.Documents.Add
Set wdoc = wdApp.ActiveDocument
With wdApp.Selection
   .TypeText Text:=CStr(Range("A1"))
   .TypeParagraph
   .TypeText Text:=CStr(Range("A2"))
   .TypeParagraph
   .TypeText Text:=CStr(Range("A3"))
   For ab = 1 To 6
      .TypeParagraph
   Next 'ab
   .TypeText Text:="Betreff: "
   For ab = 1 To 9
      .TypeParagraph
   Next 'ab
   .TypeText Text:=CStr(Range("B1"))
   For ab = 1 To 5
      .TypeText Text:=vbTab
   Next 'ab
   .TypeText Text:=CStr(Range("B2"))
End With
wdoc.Paragraphs(9).Range.Font.Bold = True
Set wdoc = Nothing
Set wdApp = Nothing
End Sub
Gruß Ingolf
Anzeige
AW: Word-Datei aus Excel erstellen
30.01.2007 15:49:11
mtremer
Hallo Ingolf,
SUUUPER, genau das habe ich gesucht. Wahnsinn!
Ich danke Dir.
Sag mal, wäre es jetzt unverschämt, noch weiter zu fragen?
Nachdem ich es in Excel eingebaut habe und von der Wirkung überwältigt wurde, habe ich noch eine Bitte:
Ich muss jetzt noch
- das Datum rechtsbündig schreiben (bisher mit einem rechtsbündigen Tabulator) und
- den Haupttext als Blocksatz und 1,5-zeilig formatieren...
Wie kann ich das in Deinen Code einbauen?
Danke.
Viele Grüße
Marco
Anzeige
AW: Word-Datei aus Excel erstellen
30.01.2007 17:42:42
IngGi
Hallo mtremer,
das Datum hab ich jetzt auch über Tabulatoren eingetragen. Mit dem Word Objektmodell kenn ich mich leider auch nicht wirklich aus. Ein rechtsbündiges Datum bekommst du nur über eine zweispaltige Tabelle. Probier doch einfach selbst mal ein bisschen mit Makro Aufzeichnen in Word herum.
Die anderen Geschichten hab ich dir in's Makro integriert. Hier nochmal das komplette Makro:

Sub Daten_nach_Word()
Dim wdApp As Object
Dim wdoc As Object
Dim ab As Byte
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
On Error GoTo 0
If wdApp Is Nothing Then
   Set wdApp = CreateObject("Word.Application")
   wdApp.Visible = True
End If
wdApp.Documents.Add
Set wdoc = wdApp.ActiveDocument
With wdApp.Selection
   .TypeText Text:=CStr(Range("A1"))
   For ab = 1 To 10
      .TypeText Text:=vbTab
   Next 'ab
   .TypeText Text:=Format(Date, "dd.mm.yyyy")
   .TypeParagraph
   .TypeText Text:=CStr(Range("A2"))
   .TypeParagraph
   .TypeText Text:=CStr(Range("A3"))
   For ab = 1 To 6
      .TypeParagraph
   Next 'ab
   .TypeText Text:="Betreff: "
   For ab = 1 To 9
      .TypeParagraph
   Next 'ab
   .TypeText Text:=CStr(Range("B1"))
   For ab = 1 To 5
      .TypeText Text:=vbTab
   Next 'ab
   .TypeText Text:=CStr(Range("B2"))
End With
wdoc.Paragraphs(9).Range.Font.Bold = True
With wdoc.Paragraphs(13).Range
   .ParagraphFormat.Alignment = 3
   .ParagraphFormat.LineSpacingRule = 1
   .Select
   wdApp.Selection.TypeText Text:="Bitte hier Text eintragen"
   .Select
End With
wdApp.Activate
Set wdoc = Nothing
Set wdApp = Nothing
End Sub
Gruß Ingolf
Anzeige
AW: Word-Datei aus Excel erstellen
30.01.2007 18:42:30
mtremer
Ingolf, Du bist Klasse.
Aber, mir ist das schon unangenehm, ich habe noch weitere Fragen.
Das mit dem Aufzeichnen war eine gute Idee. Aber es klappt nicht.
Wenn ich den folgenden Code in Deinen Code einbaue, meckert Excel beim Punkt "CentimetersToPoints":
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(15.87 _
), Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces
Selection.TypeText Text:=vbTab
Wie kann ich das trotzdem einfügen, sodass das Datum hinter dem Wohnort A3 rechtsbündig ist?
Zusatzfrage:
Wie kann ich (auf das gesamte Dokument angewendet)
- die Schriftart auf Univers ändern
- die Schriftgrösse auf 11,5 festlegen
- 1,5zeilig schreiben (falls ist nicht nur den Haupttext so schreiben wollte)
Danke für Deine Geduld.
Viele Grüße
Marco
Anzeige
AW: Word-Datei aus Excel erstellen
31.01.2007 00:37:26
IngGi
Hallo mtremer,
in der Codezeile meckert er nicht wegen "CentimetersToPoints", sondern wegen "wdAlignTabRight" und wegen "wdTabLeaderSpaces". Der gemeinsame Beginn mit "wd" deutet schon darauf hin. Bei diesen beiden Ausdrücken handelt es sich um Konstanten, die von Word zur Verfügung gestellt werden. Excel kennt diese Konstanten nicht und meckert daher beim Kompilieren des Makros.
Es gibt zwei Möglichkeiten, das abzustellen. Die starre Möglichkeit: Du kannst die Word Objektbibliothek fest in dein Excel einbinden. Dazu gehst du im Excel-VBA-Editor über das Menü Extras-Verweise und machst ein Häkchen bei "Microsoft Word 10.0 Object Library". Die Version muss bei dir nicht unbedingt 10.0 sein - 10.0 entspricht der Office2002-Version. Nachteil dieser Methode ist, dass das bei jedem Excel, d.h. bei jeder neuen Kombination aus User/PC gemacht werden muss, auf dem das Makro laufen soll. Die flexible Möglichkeit: Verzichte auf das Einbinden der Word-Objektbibliothek per Häkchen bei den Verweisen und verzichte auf alle Wordkonstanten. Jede Wordkonstante hat ihren Wert, der an Stelle der Konstanten verwendet werden kann. "wdAlignTabRight" hat den Wert 3, "wdTabLeaderSpaces" hat den Wert 0. Die Werte lassen sich für alle Wordkonstanten leicht herausfinden. Gehe dazu in den Word-VBA-Editor. Lass dir gegebenenfalls über Strg+G den Direktbereich anzeigen. Schreib nun in den Direktbereich ein Fragezeichen, gefolgt von einer Wordkonstanten (ohne Leerzeichen dazwischen!) und drücke auf Enter. Der Wert der Konstanten erscheint eine Zeile tiefer im Direktbereich.
Die weiteren Formatierungen für das gesamte Dokument kriegst du so hin (hier hab ich übrigens auch den Wert 3 an Stelle der Wordkonstanten "wdLineSpace1pt5" verwendet):

With ThisDocument.Range
   .Font.Name = "Univers"
   .Font.Size = 11.5
   .ParagraphFormat.LineSpacingRule = 3
End Sub
Gruß Ingolf
Anzeige
AW: Word-Datei aus Excel erstellen
31.01.2007 10:42:20
mtremer
OK, das geht. Im Direktbereicht erscheint nun "2". Wie geht es nun weiter?
Du siehst, viel verstehe ich dovon (noch) nicht.
Schriftart und -grösse sowie die Zeilenhöhe klappt. Nur nicht direkt; Deinen Code musste ich noch ein wenig umbauen. Aber so viel verstehe ich davon schon ;-)
Das war keine Kritik, sonder ein Danke! Denn, unteranderem, durch Dich habe ich einiges gelernt.
Jedoch weiss ich bei Word noch nicht genug, sodass ich den Tab auf rechts legen kann...
Danke für Deine Geduld.
Viele Grüße
Marco
Anzeige
AW: Word-Datei aus Excel erstellen
31.01.2007 10:57:55
mtremer
Ich habe mal etwas "herumprobiert".
Folgendes habe ich mitten in den Code eingebaut:
With wdoc.Paragraphs(10)
.Selection.ParagraphFormat.TabStops.Add Position:=449,8583, Alignment:=2, Leader:=0
Selection.TypeText Text:=vbTab
End With
Dennoch klappt es nicht. Er markiert im Code die gesamte Zeile ab .Selection.
Liegt es an der Position des eingeschobenen Befehls oder ist ein With falsch?
Viele Grüße
Marco
Anzeige
AW: Word-Datei aus Excel erstellen
31.01.2007 14:19:54
IngGi
Hallo Marco,
in der ersten Zeile muss das "Selection" raus. Der Wert bei "Position" muss mit Dezimalpunkt, nicht mit Dezimalkomma eingegeben werden. Das gilt in VBA immer! Beim Einfügen des Tabs in der zweiten Programmzeile muss sich das "Selection" auf die Variable wdApp statt wdoc beziehen. Dadurch macht dann das With... keinen Sinn mehr.
Im Ganzen also so:
wdoc.Paragraphs(10).ParagraphFormat.TabStops.Add _
Position:=449.8583, Alignment:=2, Leader:=0
wdApp.Selection.TypeText Text:=vbTab
Gruß Ingolf
Anzeige
AW: Word-Datei aus Excel erstellen
31.01.2007 14:41:49
mtremer
Hallo Ingolf,
OK, einen Schritt weiter. Aber noch nicht am Ende.
Wenn ich das in den bestehenden Code eingebe, meckert er immernoch. Er markiert den Bereich mit wdoc.
.TypeText Text:=CStr(Range("A5"))
wdoc.Paragraphs(10).ParagraphFormat.TabStops.Add _
Position:=449.8583, Alignment:=2, Leader:=0
wdApp.Selection.TypeText Text:=vbTab
For ab = 1 To 5
.TypeParagraph
Nun weiss ich wieder nicht weiter...
Danke.
Viele Grüße
Marco
Anzeige
AW: Word-Datei aus Excel erstellen
31.01.2007 15:22:06
IngGi
Hallo Marco,
das Setzen des Tabstopps muss sich doch auf "wdApp.Selection" beziehen, dann macht auch With... wieder Sinn.

With wdApp.Selection
   .ParagraphFormat.TabStops.Add Position:=449.8583, Alignment:=2, Leader:=0
   .TypeText Text:=vbTab
End With
Gruß Ingolf
Anzeige
AW: Word-Datei aus Excel erstellen
01.02.2007 10:38:08
mtremer
Hallo Ingolf,
ich danke Dir.
Es klappt alles wunderbar!
Nun kann ich mit Excel Briefe über Word schreiben!
Wenn Du jetzt noch Lust hast, kannst Du mir noch das i-Tüpfelchen programmieren:
Das Word-Dokument
- in den Vordergrund holen,
- unter den gleichen Speicherort wie die Exceldatei speichern (mit Vorgabe des Dateinamens)
ABER: Nur wenn Du möchtest. Die beiden Schritte sind nicht so wichtig. Man kann das alles problemlos manuell machen.
Ich bin Dir so schon grenzenlos dankbar!
Viele Grüße
Marco
Anzeige
AW: Word-Datei aus Excel erstellen
01.02.2007 11:30:32
IngGi
Hallo Marco,
mit "wdApp.Activate" holst du Word in den Vordergrund. Das Worddokument speicherst du mit
wdoc.SaveAs Filename:=ActiveWorkbook.Path & "\Dateiname.doc"
Gruß Ingolf
AW: Word-Datei aus Excel erstellen
01.02.2007 11:55:46
mtremer
JAAA, genau so.
Ich dachte nicht, dass es so einfach ist...
Nun kann ich den Thread getrost und mit tausend Dank beenden.
Du hast mir, wie schon so oft bis zur vollständigen Lösung des Problems geholfen.
Ich danke Dir.
Viele Grüße
Marco
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Word-Datei aus Excel erstellen


Schritt-für-Schritt-Anleitung

Um ein Word-Dokument aus Excel zu generieren, kannst Du ein Excel VBA Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, wie Du ein Excel VBA Word Dokument erstellen kannst:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub Daten_nach_Word()
       Dim wdApp As Object
       Dim wdoc As Object
       Dim ab As Byte
    
       On Error Resume Next
       Set wdApp = GetObject(, "Word.Application")
       On Error GoTo 0
    
       If wdApp Is Nothing Then
           Set wdApp = CreateObject("Word.Application")
           wdApp.Visible = True
       End If
    
       wdApp.Documents.Add
       Set wdoc = wdApp.ActiveDocument
    
       With wdApp.Selection
           .TypeText Text:=CStr(Range("A1"))
           .TypeParagraph
           .TypeText Text:=CStr(Range("A2"))
           .TypeParagraph
           .TypeText Text:=CStr(Range("A3"))
           For ab = 1 To 6
               .TypeParagraph
           Next ab
           .TypeText Text:="Betreff:"
           For ab = 1 To 9
               .TypeParagraph
           Next ab
           .TypeText Text:=CStr(Range("B1"))
           For ab = 1 To 5
               .TypeText Text:=vbTab
           Next ab
           .TypeText Text:=CStr(Range("B2"))
       End With
    
       wdoc.Paragraphs(9).Range.Font.Bold = True
       Set wdoc = Nothing
       Set wdApp = Nothing
    End Sub
  4. Ändere die Zellreferenzen Range("A1"), Range("A2"), Range("A3"), Range("B1") und Range("B2") nach Bedarf, um die gewünschten Daten aus der aktiven Excel-Datei zu verwenden.

  5. Führe das Makro aus: Drücke F5, um das Makro zu starten.


Häufige Fehler und Lösungen

  • Fehler: "Komponente nicht gefunden"
    Stelle sicher, dass Microsoft Word installiert ist und die Verweise im VBA-Editor korrekt gesetzt sind.

  • Fehler: "Methoden oder Eigenschaften nicht gefunden"
    Dies kann passieren, wenn Du Word-Konstanten wie wdAlignTabRight verwendest. Verwende stattdessen die numerischen Werte ( z.B. 3 für rechtsbündig).


Alternative Methoden

Wenn Du aus Excel ein Word-Dokument erstellen möchtest, kannst Du auch die folgenden Methoden verwenden:

  1. Word Makro aufzeichnen: Du kannst ein Makro in Word aufzeichnen, um die Aktionen zu sehen, die Du beim Erstellen eines Dokuments machst. Dies hilft Dir, die entsprechenden VBA-Befehle zu identifizieren.
  2. Copy-Paste: Eine einfache Methode ist das Kopieren der Daten aus Excel und das Einfügen in ein Word-Dokument. Dies ist jedoch nicht automatisiert und weniger effektiv.

Praktische Beispiele

Hier sind einige Beispiele, wie Du Word-Dateien aus Excel erstellen kannst:

  • Beispiel 1: Einfache Briefvorlage

    • Verwende die oben angegebenen VBA-Befehle, um eine Briefvorlage zu erstellen, die Empfängerinformationen und einen Betreff enthält.
  • Beispiel 2: Berichterstellung

    • Du kannst Daten aus Excel analysieren und sie in einem formatierten Word-Bericht zusammenfassen.

Tipps für Profis

  • Nutze Word-Objektmodelle: Je mehr Du über das Word-Objektmodell weißt, desto flexibler kannst Du Deine Dokumente gestalten.
  • Makros optimieren: Achte darauf, Deine Makros auf Effizienz zu prüfen, um die Performance zu verbessern.
  • Fehlerbehandlung einbauen: Implementiere eine Fehlerbehandlung in Deinen Code, um unerwartete Fehler elegant zu handhaben.

FAQ: Häufige Fragen

1. Wie kann ich den gespeicherten Dateinamen anpassen?
Du kannst die Zeile wdoc.SaveAs Filename:=ActiveWorkbook.Path & "\Dateiname.doc" verwenden, um das Dokument mit einem spezifischen Namen zu speichern.

2. Kann ich das Word-Dokument direkt drucken?
Ja, Du kannst nach dem Erstellen des Dokuments den Befehl wdApp.ActiveDocument.PrintOut verwenden, um es direkt zu drucken.

3. Wie kann ich das Layout des Word-Dokuments anpassen?
Verwende VBA-Befehle, um Formatierungen wie Schriftart, Schriftgröße und Zeilenabstand anzupassen. Beispiel:

With wdoc.Range
    .Font.Name = "Univers"
    .Font.Size = 11.5
    .ParagraphFormat.LineSpacingRule = 3 ' 1,5-zeilig
End With

Du kannst nun mit den oben genannten Schritten und Tipps Word-Dokumente aus Excel generieren und dabei Deine Aufgaben automatisieren!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige