Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1132to1136
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
Inhaltsverzeichnis

nochmal Word nach Excel

nochmal Word nach Excel
ing.grohnl
Hallo Forum,
bei der Übergabe von Excel nach Word hab ich immer wieder Probleme:
Entweder er meldet (in Excel): "der Remote-Server ist nicht verfügbar..."
oder es kommt: "Fehler 4248, dieser Befehl ist nicht verfügbar, weil kein Dokument geöffnet ist."
(das Dokument seh ich aber auf dem Bildschirm)
Beide Fehler kommen in den Zeilen:
ObjWord.ActiveDocument.Close (wdDoNotSaveChanges)
ObjWord.Application.Quit
vor.
Auch wird unter XP nicht immer Word beendet!?
Hier kommt der Code:
Sub Ueberweisung()
Dim Anrede As String
Dim Name As String
Dim Vorname As String
Dim Strasse As String
Dim DocNeu As Object
Dim ObjWord As Object
Dim Bank As String
Dim Konto As String
Dim BLZ As String
Dim Betrag As String
Dim eName As String
Dim eKonto As String
Dim Verwendung1 As String
Dim Verwendung2 As String
Dim Datum As String
Set frm3 = UserForm3
With frm3
Vorname = .TextBox1.Value
Konto = .TextBox2.Value
BLZ = .TextBox3.Value
Bank = .TextBox9.Value
Betrag = .TextBox4.Value
Verwendung1 = .TextBox5.Value
Verwendung2 = .TextBox6.Value
eName = .TextBox7.Value
eKonto = .TextBox8.Value
Datum = Date
End With
On Error Resume Next
Set ObjWord = GetObject("Word.Application")
If ObjWord Is Nothing Then
Set ObjWord = CreateObject("Word.Application")
ObjWord.Visible = True
End If
On Error GoTo 0
If Not ObjWord Is Nothing Then
Set DocNeu = Word.Application.Documents.Add(Template:= _
"C:\Eigene Dateien\Vorlagen\Ueberweisung.dot")
End If
With DocNeu
If Len(LTrim(Vorname)) > 0 Then
.FormFields("Vorname").Result = Vorname
End If
If Len(LTrim(Name)) > 0 Then
.FormFields("Name").Result = Name
End If
If Len(LTrim(Konto)) > 0 Then
.FormFields("Konto").Result = Konto
End If
If Len(LTrim(BLZ)) > 0 Then
.FormFields("Blz").Result = BLZ
End If
If Len(LTrim(Bank)) > 0 Then
.FormFields("Bank").Result = Bank
End If
.FormFields("Betrag").Result = Betrag
.FormFields("Zweck1").Result = Verwendung1
.FormFields("Zweck2").Result = Verwendung2
.FormFields("eName").Result = eName
.FormFields("eKonto").Result = eKonto
.FormFields("Datum").Result = Datum
End With
DocNeu.Application.DisplayAlerts = wdAlertsNone
DocNeu.Application.Activate
DocNeu.Application.PrintOut
ObjWord.ActiveDocument.Close (wdDoNotSaveChanges)
ObjWord.Application.Quit
Set DocNeu = Nothing
Set ObjWord = Nothing
End Sub
Dieses Modul wird aus einer Userform aus aufgerufen
Für eine Hilfe bedanke ich mich.
Mit freundlichen Grüßen
Albrecht

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: wievile Word-Instanzen laufen?
04.02.2010 17:35:51
JOWE
Albrecht,
im Fehlerfall, also wenn das Makro irgendwo aussteigt, bleibt Deine gestartete Word-Instanz (ObjWord) geöffnet, ist aber unsichtbar. Der Taskmanager zeigt Dir unter 'Prozesse' die derzeit laufenden Word-Instanzen auf. Sind mehrere davon aktiv, könnte dies ursächlich für die von Dir beschriebenen Meldungen sein.
In Deinem Code sehe sich so keine Fehler. Du solltest aber unbedingt eine Fehlerroutine einbauen, die die gestartete Word-Instanz im Fehlerfall schließt.
Gruß
Jochen
AW: wievile Word-Instanzen laufen?
04.02.2010 18:38:19
ing.grohnl
Hallo Jochen,
eigentlich möchte ich ja, dass die Word-Instanzen gelöscht werden (auch im Normalfall)
Wie mach das?
Mit freundlichen Grüßen
Albrecht
Anzeige
AW: wievile Word-Instanzen laufen?
04.02.2010 20:04:24
Ramses
Hallo
Das müsste eigentlich auf einen Fehler laufen
Set DocNeu = Word.Application.Documents.Add(Template:= "C:\Eigene Dateien\Vorlagen\Ueberweisung.dot")
Das müsste doch eigentlich objWord.Documents.Add... heissen,... oder ?
Den Rest mit den offenen Word-Instanzen abschiessen würde ich noch überdenken. Wenn dort andere Dokumente offen sind, werden die einfach abgeschossen.
Da ist eine funktionierende Fehlerroutine anstelle von "On Error Resume Next" sicher hilfreicher.
Gruss Rainer
AW: wievile Word-Instanzen laufen?
04.02.2010 20:59:58
JOWE
aber die würde er ja sehen, oder?
AW: wievile Word-Instanzen laufen?
04.02.2010 21:11:35
Ramses
Hallo
"...aber die würde er ja sehen..."
Was willst du mir damit sagen ?
Ich versteh nicht auf was du dich hier beziehst ?
Gruss Rainer
Anzeige
AW: was ist richtig: DocNeu.. o. ObjWord..?
04.02.2010 22:01:03
ing.grohnl
Hallo Rainer, Jowe,
was ist denn nun richtig?
Set DocNeu = Word.Application.Documents.Add(Template:= "C:\Eigene Dateien\Vorlagen\Ueberweisung.dot")
Set DocNeu = ObjWord.Documents.Add...
und wie müßte die Fehlerroutine aussehen?
Übrigens, das ganze hat so schon problemlos funktioniert und mir ist nicht bewusst, etwas geändert zu haben.
Mit freundlichen Grüßen
Albrecht

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige