# Worddokument aus Excel VB



## cyperdark (4. Januar 2005)

Hallo!
Ich hab ein kleines Problem bei dem ich nicht weiterkomme und da ich auch kein besonders guter VB Programmierer bin ( ich bevorzuge C/C#.NET) hoffe ich hier ein wenig Hilfe zu finden.
Mein Problem:
Ich habe eine Excel Arbeitsmappe in der ich mit VB aus Excel heraus Zykloidenberechnungen durchführe. Alle errechneten Werte werden ich Excel ausgegeben und die entsprechenden Graphen mit den XY-Koordinaten werden gezeichnet.
Jetzt möchte ich aus VB Excel heraus ein Word-Dokument generieren, auf dem ich das aktuelle Datum, die aktuelle Uhrzeit im Kopf stehen habe und darunter die XY-Koordinaten der Berechnungen aufgeführt sind.
Die Sache in Excel ist gelöst, leider weiß ich aber nicht wie man aus Excel heraus ein Word-Dokument generieren kann, welches sich automatisch in Word öffnet und welches die Daten aus den Cells der Excel Tabellen enthält.
Vielleicht weiß jemand von euch Rat. Leider habe ich bei google.de nichts gefunden was mir wirklich hilft.
Ich nutze übrigens MS Office 2003.

Hier noch der Quelltext für die Ausgabe in Word der leider nicht funktioniert.
Das ist das Ergebnis aus einigen PDFs die ich im Internet zu dem Thema gefunden habe und einigen Stunden Kopfzerbrechens. Leider waren die PDFs alle nicht sehr hilfreich.

PPrivate Sub OpenWord()
Dim wdapp As Word.Application
Dim wdDok As Word.Document
Dim I As Integer

On Error Resume Next
Set objApp = CreateObject("Word.Application.11")
If Err = 429 Then
MsgBox "Office Word ist nicht installiert!"
Else
'Koordinaten nach Word schreiben...
'Shell "C:\Programme\Microsoft Office\OFFICE11\WINWORD.EXE", vbMaximizedFocus
objApp.Visible = True
Set wdapp = Word.Application

'Daten schreiben...
'For I = 1 To 360
Set wdDok = Word.Documents.Add("Koordinaten")
With wdapp
    With .Selection
    .GoTo what:=wdGoToBookmark, Name:="Typ"
    .TypeText Text:="Text"
    End With
End With
'Next
End If

Set wdapp = Nothing
Set wdDok = Nothing

End Sub


cu
cyperdark


----------



## Fingers (5. Januar 2005)

Hallo,

mach mit dem CreateObject ein Word auf (so wie Du es schon hast):

objWrd=CreateObject ...

In dem Ding kannst Du dann mit 

objWord.Documents.add ein neues Dokument anlegen.

Danach hängt die Sache von Deinem perönlichen Geschmack ab. Du kannst im Prinzip über

obj.Documents.last.paragraphs immer neue Absätze anhängen. Alernativ kannst Du über die Collection Tables eine Tabelle einrichten und immer mit Table.rows.add neue Zeilen anhängen. Da musst Du mal erzählen, was Du brauchst.

Gruß
Fingers.

P.S. Kann mir jemand sagen, wir ich Sourcecode hier reinbekomme?


----------



## cyperdark (5. Januar 2005)

Gut, ich werde es mal versuchen. Etwas Beispielcode wäre schon recht hilfreich.
Hier  kann man ihn mir schicken.
Wäre wirklich nett, wenn jemand was für mich hat.

cu
cyperdark


----------



## cyperdark (6. Januar 2005)

Ja Super @Fingers!
Hat soweit alles funktioniert. Danke noch mal!

Zwei kleine Probleme hab ich jetzt leider noch.

1. Ich kann immer nur einmal ein Worddokument erzeugen, muss danach das Excel - Dokument erst schliessen, bevor ich ein erneut ein Worddokument erzeugen kann.

2. In Excel hab ich die Ländereinstellungen so eingestellt das ich als Trennzeichen bei Gleitkommawerten einen Punkt und keine Komma habe, wenn ich das Worddokument erzeuge wird aber der Punkt wieder durch ein Komma ersetzt.
Das kann ich nicht gebrauchen, weil ich die errechneten Daten später wieder ein ein CAD-System einlesen muss.

Mit dem ersten Problem kann ich erst einmal leben, aber die Sache mit Punkt und Komma ist schon recht dumm.   
Wie kann man das Problem lösen?  

Hier mal meine jetztige Lösung:
Private Sub OpenWord()
Dim wdapp As Word.Application
Dim wdDok As Word.Document
Dim I As Integer
Dim Text As String

On Error Resume Next
Set objApp = CreateObject("Word.Application.11")
If Err = 429 Then
MsgBox "Office Word ist nicht installiert!"
Else
'Koordinaten nach Word schreiben...
'Shell "C:\Programme\Microsoft Office\OFFICE11\WINWORD.EXE", vbMaximizedFocus
objApp.Visible = True
Set wdapp = Word.Application

'Daten schreiben...

Set wdDok = Word.Documents.Add("Koordinaten")

With wdapp
    With .Selection


    'For I = 1 To 360
    'obj.Documents.Last.Paragraphs
    wdDok.Documents.Last.Paragraphs
    '.TypeText Text:="Koordinaten - EPI-/HYOZYKOIDE" & vbCr
    '.TypeText Text:=Date & " / " & Time & vbCr & vbCr
    '.GoTo what:=wdGoToBookmark, Name:="Typ"
    '.TypeText Text:="EPIZYKLOIDE" & vbCr & vbCr

    For I = 1 To 360
    Text = Cells(I + 9, 2).Value & " " & Cells(I + 9, 3).Value & " " & Cells(I + 9, 4).Value & " " & Cells(I + 9, 5).Value & " " & Cells(I + 9, 6).Value & vbCr
    .TypeText Text:=Text
    Text = ""
    Next

    '.TypeText Text:=vbCr & vbCr & "HYPOZYKLOIDE" & vbCr & vbCr
    For I = 1 To 360
    Text = Cells(I + 9, 9).Value & " " & Cells(I + 9, 10).Value & " " & Cells(I + 9, 11).Value & " " & Cells(I + 9, 12).Value & " " & Cells(I + 9, 13).Value & vbCr
    .TypeText Text:=Text
    Text = ""
    Next

    End With
End With
End If

Set wdapp = Nothing
Set wdDok = Nothing

End Sub


cu
cyperdark


----------

