Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Excel nach word geht, geht nicht? | Herbers Excel-Forum


Betrifft: Excel nach word geht, geht nicht? von: ing.grohn
Geschrieben am: 02.02.2010 09:35:03

Hallo Forum,
noch mal eine Frage zum Zusammenspiel Excel -> Word.
Folgender Code wird aus einer Userform aufgerufen, Daten aus der Userform übertragen,
das Word-Dokument gedruckt und geschlossen, Word beendet:

Sub HandAkte()
    Dim DocNeu As Object
    Dim frm As Object
    Dim ObjWord As Object
    
    Set frm = UserForm2
    
    MsgBox ("Bitte ein Handakten-Etikett einlegen")
 
    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 = ObjWord.Documents.Add(Template:="C:\Eigene Dateien\Vorlagen\Handakte.dot")
    End If
    
    With DocNeu
      .FormFields("ProzReg").Result = frm.Controls("TextBox21").Value 'frm.TextBox21.Value
      .FormFields("inSachen").Result = Left(frm.TextBox2.Value, 1) & ". " & frm.TextBox3.Value
      .FormFields("gegen").Result = frm.Controls("TextBox22").Value
      .Bookmarks("Grund").Range.Text = frm.TextBox23.Value
      .FormFields("Vorname").Result = frm.Controls("TextBox3").Value
      .FormFields("Name").Result = frm.Controls("TextBox2").Value
      .FormFields("Strasse").Result = frm.Controls("TextBox4").Value
      .FormFields("Ort").Result = frm.TextBox5.Value & " " & frm.TextBox6.Value
      .FormFields("VersNr").Result = frm.Controls("TextBox13").Value
      .FormFields("Versicherung").Result = frm.Controls("TextBox12").Value
      .FormFields("Telefon").Result = frm.Controls("TextBox7").Value
      .FormFields("Telefax").Result = frm.Controls("TextBox8").Value
    End With
    
    DocNeu.Application.DisplayAlerts = wdAlertsNone
    DocNeu.Application.Activate
    DocNeu.Application.PrintOut
    Word.ActiveDocument.Close (wdDoNotSaveChanges)
    Word.Application.Quit
    
End Sub
Beim ersten Aufruf läuft das Ganze fehlerlos durch. Ruf ich diese Prozedur ein 2. mal auf (ohne was anderes gemacht zuhaben), kommen unterschiedliche Fehlermeldungen in unterschiedlichen Zeilen:
Laufzeitfehler 462, der Remote Server existiert nicht oder ist nicht verfügbar oder Object nicht bekannt oder verfügbar u. ä.. Wo der Fehler auftritt hängt auch davon ab, ob ich DocNeu.App... oder Word.App... verwende.
Betroffen sind i. d. R. die Zeilen:
Set DocNeu = ObjWord.Documents.Add(Template:="C:\Eigene Dateien\Vorlagen\Handakte.dot")
DocNeu.Application.PrintOut
Word.ActiveDocument.Close (wdDoNotSaveChanges)

Kann mir einer sagen, wie ichs anders mache oder besser bzw. so, dass keine Fehler mehr entstehen?
Eine Antwort wäre sehr hilfreich und nett.
Mit freundlichen Grüßen
Albrecht
(PS: beende ich den Debugger und starte neu, funktionierts wieder oder eine Änderung!)

  

Betrifft: AW: Excel nach word geht, geht nicht? von: Beverly
Geschrieben am: 02.02.2010 10:04:57

Hi Albrecht,

vielleicht hilft es, wenn du die Set-Variablen am Ende des Codes wieder zurücksetzt mit

Set Variable = Nothing


GrußformelBeverly's Excel - Inn


  

Betrifft: ungetestet. von: Tino
Geschrieben am: 02.02.2010 10:06:03

Hallo,
teste mal so, ich habe es jetzt nicht getestet.

Sub HandAkte()
    Dim DocNeu As Object
    Dim frm As Object
    Dim ObjWord As Object
    
    Set frm = UserForm2
    
    MsgBox ("Bitte ein Handakten-Etikett einlegen")
 
    On Error Resume Next
       Set ObjWord = CreateObject("Word.Application")
       ObjWord.Visible = True
    On Error GoTo 0
    
    If Not ObjWord Is Nothing Then
       Set DocNeu = ObjWord.Documents.Open("C:\Eigene Dateien\Vorlagen\Handakte.dot")
    End If
    
    With DocNeu
      .FormFields("ProzReg").Result = frm.Controls("TextBox21").Value 'frm.TextBox21.Value
      .FormFields("inSachen").Result = Left(frm.TextBox2.Value, 1) & ". " & frm.TextBox3.Value
      .FormFields("gegen").Result = frm.Controls("TextBox22").Value
      .Bookmarks("Grund").Range.Text = frm.TextBox23.Value
      .FormFields("Vorname").Result = frm.Controls("TextBox3").Value
      .FormFields("Name").Result = frm.Controls("TextBox2").Value
      .FormFields("Strasse").Result = frm.Controls("TextBox4").Value
      .FormFields("Ort").Result = frm.TextBox5.Value & " " & frm.TextBox6.Value
      .FormFields("VersNr").Result = frm.Controls("TextBox13").Value
      .FormFields("Versicherung").Result = frm.Controls("TextBox12").Value
      .FormFields("Telefon").Result = frm.Controls("TextBox7").Value
      .FormFields("Telefax").Result = frm.Controls("TextBox8").Value
    End With
    
    DocNeu.Application.DisplayAlerts = wdAlertsNone
    DocNeu.Application.Activate
    DocNeu.Application.PrintOut
    Word.ActiveDocument.Close (wdDoNotSaveChanges)
    Word.Application.Quit
    
End Sub
Gruß Tino


  

Betrifft: AW: Excel nach word geht, geht nicht? von: Luschi
Geschrieben am: 02.02.2010 10:10:13

Hallo Albrecht,

beim Öffnen bzw. Aktivieren von WinWord definierst Du eine Objektvariable 'ObjWord' und arbeitest damit - beim Schließen läßt Du diese Variable unbehandelt links liegen.
Versuch es mal so:

ObjWord.ActiveDocument.Close (wdDoNotSaveChanges)
ObjWord.Application.Quit

Set DocNeu = Nothing
Set ObjWord = Nothing

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Excel nach word geht, geht nicht? von: Tino
Geschrieben am: 02.02.2010 10:18:17

Hallo,
beim beenden der Prozedur werden die Variablen auf Nothing gesetzt
weil diese auch innerhalb der Prozedur deklariert sind.

Kann mir nicht vorstellen, dass es daran liegt.

Gruß Tino


  

Betrifft: sorry, Word ist nicht innerhalb deklariert. oT von: Tino
Geschrieben am: 02.02.2010 10:25:20




  

Betrifft: AW: sorry, Word ist nicht innerhalb deklariert. oT von: Luschi
Geschrieben am: 02.02.2010 11:16:13

Hallo Tino,

das Problem liegt nicht an
- Set ObjWord = Nothing
sondern daran, das dieser Befehl nicht aufgerufen wurde
- ObjWord.Application.Quit (ObjWord.Quit reicht auch!)
statt desen wurde Word so beendet
- Word.Application.Quit
Somit kam es beim nächsten Öffnen von WinWord zu geschilderten Problem.

Deine Aussage betreffs von definierten Objekt-Variablen und Nothing ist zwar in der Theorie richtig,
aber in der Praxis sollte man hinschreiben was man auch meint. Da ich viele Projekte gleichzeitig betreue
(Excel, Access, VB6, VB.Net, Java, MS-SQL-Server) , kann ich mir solche Standard-Ungenauigkeiten einfach nicht leisten. Die Fehlersuche wird wesentlich vereinfacht, wenn der komplette Vba-Code dasteht und ich nicht erst überlegen muß, was irgendwo als Standard definiert ist.

Gruß von Luschi
aus klein-Paris


  

Betrifft: habe ja geschrieben ungetestet... ;-) von: Tino
Geschrieben am: 02.02.2010 11:22:55

Hallo,
ich finde in der Regel meine Fehler.

Dennoch danke.

Gruß Tino


  

Betrifft: AW: Excel nach word geht, geht nicht? von: ing.grohn
Geschrieben am: 02.02.2010 10:18:49

Hallo Luschi,
(wo war noch mal "klein-Paris", ich habs mal gewusst)
Funktioniert prima
Vielen Dank auch den beiden anderen Helfern!
Mit freundlichen Grüßen
aLBRECHT


  

Betrifft: AW: Excel nach word geht, geht nicht? von: Reinhard
Geschrieben am: 02.02.2010 10:27:35

Hallo Albrecht,

das ist Heddernheim, ein Stadtteil von Frankfurt/Mein.
Gehe mal Faschingsdienstag hin... :-)

Gruß
Reinhard


  

Betrifft: Total falsch!!! von: Luschi
Geschrieben am: 02.02.2010 11:01:06

Hallo Reinhard,

schau mal hier: http://de.wikipedia.org/wiki/Klein-Paris
(Stichwort: Goethe)

Gruß von Luschi
aus klein-Paris


  

Betrifft: Nö von: Reinhard
Geschrieben am: 02.02.2010 11:07:26

Hallo Luschi,

ich hab auch mein Wiki :-)

http://de.wikipedia.org/wiki/Klaa_Paris

Gruß
Reinhard


  

Betrifft: AW: Nö von: Luschi
Geschrieben am: 02.02.2010 11:22:30

Hallo Reinhard,

das Internet kann auch auf eine ganz falsche Fährte/Ergebnis führen, wenn man sich auf eine einzige Aussage versteift. Ein Link auf ähnliche Begriffe auf Deiner genannten Inet-Seite hätte den Irrtum aufgeklärt.

Gruß von Luschi
aus klein-Paris


Beiträge aus den Excel-Beispielen zum Thema "Excel nach word geht, geht nicht?"