Informationen und Beispiele zum Thema Userform | |
---|---|
![]() |
Userform-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema TextBox | |
---|---|
![]() |
TextBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: nochmal Word nach Excel
von: ing.grohnl
Geschrieben am: 04.02.2010 16:04:30
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 SubDieses Modul wird aus einer Userform aus aufgerufen
Betrifft: AW: wievile Word-Instanzen laufen?
von: JOWE
Geschrieben am: 04.02.2010 17:35:51
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
Betrifft: AW: wievile Word-Instanzen laufen?
von: ing.grohnl
Geschrieben am: 04.02.2010 18:38:19
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
Betrifft: AW: wievile Word-Instanzen laufen?
von: Ramses
Geschrieben am: 04.02.2010 20:04:24
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
Betrifft: AW: wievile Word-Instanzen laufen?
von: JOWE
Geschrieben am: 04.02.2010 20:59:58
aber die würde er ja sehen, oder?
Betrifft: AW: wievile Word-Instanzen laufen?
von: Ramses
Geschrieben am: 04.02.2010 21:11:35
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
Betrifft: AW: was ist richtig: DocNeu.. o. ObjWord..?
von: ing.grohnl
Geschrieben am: 04.02.2010 22:01:03
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