Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
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

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
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
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
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
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

122 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige