PDA

Vollständige Version anzeigen : Fehler bei WORD 2003-Aufruf aus VBA


Gregor0310
27.03.2006, 07:52
Hallo Leute,

ich rufe mit nachfolgendem Code aus Access 2000-VBA einen WORD-Seriendruck-Dokument auf.

Dim WordObjekt As Word.Application, Criteria As String, WordDok As Word.Document
' Word öffnen, Briefe anzeigen
Set WordObjekt = CreateObject("Word.Application.8")
WordObjekt.Visible = True
Set WordDok = WordObjekt.Documents.Add(DBPfad)
' Dokument per Hand (1x) von der Datenquelle lösen und hier wieder zuweisen
' damit ist es egal, wo die Datenbank gespeichert ist
WordDok.MailMerge.OpenDataSource CurrentDb.Name, Connection:=vrbAbfrage

Unter WORD 2000 funktioniert dies auch problemlos. In WORD 2003 bringt er mir die Fehlermeldungen, welche ich als Bildschirmausdruck dem anliegenden WORD-Dokument eingefügt habe.
Komischerweise hängt die Fehlermeldung nicht mit 'CreateObject' und der WORD-Version 8 zusammen.
Nein, er übergibt einfach nicht die Abfrage.
Die Fehlermeldung lautet: "Error 4198: (Befehl misslungen) in procedure DatenDrucken of VBA"

Könnt Ihr mir viell. einen Tipp geben?
Viele Grüße
Gregor

Lia
27.03.2006, 09:30
Ich habe vor einiger Zeit auch etwas mit Serienbriefen "rumgespielt" (unter Access 2002). Mir persönlich ist es nicht gelungen, den Serienbrief mit einer Access-Abfrage zu verbinden, d. h., ohne irgendwelche Abfragen (wie du sie hast).

Von Anne wurde damals empfohlen, einen Umweg über Excel zu gehen, der damals auch bei mir funktioniert hat. Also die Abfrage in ein Excel-Dokument zu exportieren und das Excel-Dokument als Mailmerge mit dem Serienbrief zu verbinden. Das hat auf jeden Fall funktioniert.

Gregor0310
27.03.2006, 10:35
Danke Lia,

doch es funktioniert ohne Probleme bei mir in Access 2000.
Muss doch irgendwie möglich sein in Access 2003.

Viele Grüße
Gregor

Smaug
27.03.2006, 10:42
es sollte natürlich auch ohne einen Umweg über ein anderes programm gehen. Versuch mal das Argument Connection explizit wie folgt zu ergänzen:
.........OpenDataSource CurrentDb.Name, Connection:="Query vrbAbfrage" 'für Abfrage
.........OpenDataSource CurrentDb.Name, Connection:="Table vrbAbfrage" 'für Tabelle
als Datengrundlage für den Serienbrief.
PS: das Word-Objekt würde ich erst ganz am Schluss sichtbar schalten (der code läuft dann schneller). In meiner Fusszeile findest Du übrigens einen guten Word-FAQ-Link zu Rene Probst (u.a. auch Serienbriefe)

Nouba
27.03.2006, 10:51
Ich würde das Augenmerk auch mal auf Word 2002/3: Verhindern, dass beim Öffnen eines Seriendruckhauptdokuments eine SQL-Meldung angezeigt wird (http://mypage.bluewin.ch/reprobst/WordFAQ/MMData.htm#MMData10) richten, selbst wenn die Fehlermeldung etwas anderes besagt.

Gregor0310
28.03.2006, 06:53
Hallo Nouba, hallo Smaug,

Vielen Dank erst einmal. Doch leider hat der Registry-Eintrag nicht geholfen.
Die Bezeichnung 'QUERY' hatte ich bereits davor stehen; in der String-Variable 'vrbAbfrage'.
Das Word-Objekt mache ich jetzt wirklich erst zum Schluß sichtbar. Ich glaube, damit ist es wirklich schneller geworden.
Der Fehler besteht darin, daß das Front-End mir nach wie vor ein Auswahl-Feld("Tabellen wählen") für Tabellen und Abfragen bringt, wenn er das Seriendruck-Dokument öffnet.
Dort kann ich nur eine einzelne Front-End-Tabelle bzw. die Front-End-Abfragen auswählen.
Weiterhin bringt er mir die Fehlermeldung: "WORD konnte die Datenquelle nicht öffnen!"

Wisst Ihr noch was?

Viele Grüße
Gregor

Smaug
28.03.2006, 07:05
AFAIK will die OpenDataSource-Methode in der Connection explizit den Ausdruck Query dort stehen haben wenn es sich um eine Abfrage handelt ?!!
Wenn die Verbindung zwischen der Access-Datenbank und dem Word-Serienbrief-Vorlagedokument immer gleich ist, könnte man von Word aus einmalig die Verbindung einrichten und den Serienbrief von Access auch ohne die OpenDataSource-Methode aufrufen. Hast Du mal versucht die Verbindung von Word aus zu erstellen ? ggf. musst Du in Word unter Extras - Optionen… - Allgemein - Konvertierung beim Öffnen bestätigen das Kontrollkästchen aktivieren (das war wohl schon in Nouba´s Link enthalten ?!)