Daten von Excel nach Word
02.01.2006 18:31:32
Excel
ich möchte Daten aus einer Userform in ein Worddokument schreiben und dieses entweder noch bearbeiten oder einfach ausdrucken. Ich habe mir einigen Code dafür zusammengesucht und es funktioniert auch grundsätzlich. Allerdings kann ich nach Programmstart nur einmal das Worddokument mit Daten füllen, bei jedem weiteren Versuch kann meine Vorlage aus irgendwelchen Gründen nicht geöffnet werden. Stattdessen kommt eine Fehlermeldung "Der Remote-Server-Computer existiert nicht oder ist nicht verfügbar". Dazu wird der Öffnen-Code als fehlerhaft deklariert. Hier ein Ausschnitt aus dem Code (allerdings wird mit dem konkretn Text - um verschiedenen Startbedingungen abzufangen - die Fehlermeldung unterdrückt, aber das Dokument wird halt nicht geöffnet.). Wer kann mit dieser Fehlermeldung etwas anfangen? Vielen Dank im Voraus.
Thomas
Option Explicit
Dim WordObj As Object
Public Pfad As String
Dim sName As String
Dim sTest1 As String
Dim sTest2 As String
Dim sTag As String
Dim newHour
Dim newMinute
Dim newSecond
Dim waitTime
Sub Drucken()
'Variable belegen
sName = fmTest.txtName.Value
sTest1 = fmTest.txtTest1.Value
sTest2 = fmTest.txtTest2.Value
sTag = Date
'Word starten
On Error Resume Next
'falls Word bereits läuft
If Left(Application.Version, 1) = 1 Then Set WordObj = GetObject(, "word.application.10")
If Left(Application.Version, 1) = 9 Then Set WordObj = GetObject(, "word.application.9")
If Err.Number = 429 Then
'falls Word noch nicht läuft
If Left(Application.Version, 1) = 1 Then Set WordObj = CreateObject("word.application.10")
If Left(Application.Version, 1) = 9 Then Set WordObj = CreateObject("word.application.9")
Err.Number = 0
End If
'Vorlage öffnen
Pfad = ActiveWorkbook.Path
Documents.Add Template:=(Pfad & "\Brief1.dot")
'Word sichtbar machen
WordObj.Visible = True
'Textmarken füllen
With ActiveDocument
.Bookmarks("Name").Range.Text = sName
.Bookmarks("Test1").Range.Text = sTest1
.Bookmarks("Test2").Range.Text = sTest2
.Bookmarks("Datum").Range.Text = sTag
End With
'Drucken
ActiveDocument.PrintOut
'Speichern
ActiveDocument.SaveAs (Pfad & "\" & sName & "_Testbrief.doc")
'Dokument schließen
ActiveDocument.Close
'Word nach Druck nach 5 Sekunden beenden
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 5
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
Word.Application.Quit
'Userform leeren
fmTest.txtName = ""
fmTest.txtTest1 = ""
fmTest.txtTest2 = ""
'Objektvariable aus dem Speicher löschen
Set WordObj = Nothing
End Sub