Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Einzelnen Datensatz aus Access 2007-Abfrage in MS Word 2007 übernehmen

353 views
Skip to first unread message

Erich Walczak

unread,
May 20, 2008, 10:05:22 AM5/20/08
to
Hallo NG,

ich arbeite mit MS Word 2007 und MS Access 2007.

In MSW habe ich einen Serienbrief erstellt, der als Grundlage eine
Abfrage aus einer MSA Datenbank hat und aus MSA aufgerufen wird. Das
funktioniert einwandfrei.

Unter Beibehaltung des bestehenden Layouts des Serienbriefes möchte ich
nun lediglich einen einzelnen Datensatz aus der Abfrage verwenden.
Dieser wird vom Nutzer je nach Bedarf für ein bestimmtes, immer
gleiches Feld der Abfrage bestimmt.

In MSA ist das kein Problem, in dem ich in den Kriterien der Abfrage
einen Ausdruck ähnlich "=MeinWert" einsetze. Beim Ausführen der Abfrage
werde ich nach "MeinWert" gefragt und so der einzelne Datensatz
ausgegeben.

Eine Abfrage mit einem Kriterium ähnlich "=MeinWert" wird aber nicht
von MSW akzeptiert.

Das ist nur der Fall, wenn ich das Kriterium weglasse. Aber wie kann
ich dann einen einzelnen DAtensatz ausgeben?

Wie könnte eine mögliche Lösung aussehen?
--
Gruß
Erich

Lisa Wilke-Thissen

unread,
May 20, 2008, 11:25:04 AM5/20/08
to
Hallo Erich,

"Erich Walczak" schrieb

> ich arbeite mit MS Word 2007 und MS Access 2007.
>
> In MSW habe ich einen Serienbrief erstellt, der als Grundlage eine Abfrage
> aus einer MSA Datenbank hat und aus MSA aufgerufen wird. Das funktioniert
> einwandfrei.

[...]


> Beim Ausführen der Abfrage werde ich nach "MeinWert"
> gefragt und so der einzelne Datensatz ausgegeben.

du verwendest eine Parameterabfrage?

> Eine Abfrage mit einem Kriterium ähnlich "=MeinWert" wird aber nicht von
> MSW akzeptiert.

Es sei denn, du startest den Seriendruck von Word aus. Dann wird auch eine
Parameterabfrage akzepiert, siehe dazu:
http://groups.google.de/group/microsoft.public.de.access/browse_frm/thread/3f0dd3aa69c991f7/54f7ab0f36aa00e9#54f7ab0f36aa00e9

Ob und wie man die dazu nötige Konvertierungsmethode von Access aus steuern
kann, weiß ich nicht.
Möglicherweise klappt es mit einem zuvor in Word (als Vorlage) gespeicherten
Hauptdokument, das bereits entsprechend mit der Access-Datenbank verknüpft
ist.

> Aber wie kann ich dann einen einzelnen DAtensatz ausgeben?

Davon ausgehend, dass in Access "Exportieren | Seriendruck mit Micorosoft
Office Word" gewählt wurde, kann nach dem Export in Word über den Befehl
"Empfängerliste bearbeiten" gefiltert, sortiert und auch ein einzelner
Empfänger ausgewählt werden.

Ansonsten frage in der Access-Newsgroup mal nach.

--
Viele Grüße

Lisa
MS MVP Word

Erich Walczak

unread,
May 20, 2008, 2:27:29 PM5/20/08
to
Hallo Lisa

> du verwendest eine Parameterabfrage?

Ja, funktioniert aber nicht.

> Es sei denn, du startest den Seriendruck von Word aus. Dann wird auch
> eine Parameterabfrage akzepiert, siehe dazu:
> http://groups.google.de/group/microsoft.public.de.access/browse_frm/thread/3f0dd3aa69c991f7/54f7ab0f36aa00e9#54f7ab0f36aa00e9

Ich verstehe nicht, wie ich in Word die Parametereingabe tätigen soll.

> Ob und wie man die dazu nötige Konvertierungsmethode von Access aus
> steuern kann, weiß ich nicht.
> Möglicherweise klappt es mit einem zuvor in Word (als Vorlage)
> gespeicherten Hauptdokument, das bereits entsprechend mit der
> Access-Datenbank verknüpft ist.

Das Word-Dokument ist mit einer Access-Datenbank verknüpft, aber
Eingeben der Parameter....? (s.o.)

> Davon ausgehend, dass in Access "Exportieren | Seriendruck mit
> Micorosoft Office Word" gewählt wurde, kann nach dem Export in Word
> über den Befehl "Empfängerliste bearbeiten" gefiltert, sortiert und
> auch ein einzelner Empfänger ausgewählt werden.

Diesen Befehl kann ich in MSA 2007 nicht finden.

Noch einmal anders gefragt: Wie kann ich beim Öffnen des Word-Dokuments
eine Parametereingabe für ein bestimmtes Feld eingeben?

Gibt es evtl. einen entsprechenden Befehl über VBA beim Öffnen des
Word-Dokumentes?

Gruß
Erich

Lisa Wilke-Thissen

unread,
May 20, 2008, 4:10:15 PM5/20/08
to
Hallo Erich,

"Erich Walczak" schrieb im Newsbeitrag
news:g0v56h$64d$02$1...@news.t-online.com...

> Ich verstehe nicht, wie ich in Word die Parametereingabe tätigen soll.

wenn der Seriendruck in Word (statt Access) gestartet wird, erscheint beim
Verbinden von Hauptdokument und Datenquelle eine Rückfrage nach der
Konvertierungsmethode.
Wählt man DDE statt OLE DB, kann auch auf die Parameter-Abfrage (die doch in
Access bereits existiert?) zugegriffen werden.

> Das Word-Dokument ist mit einer Access-Datenbank verknüpft, aber Eingeben
> der Parameter....? (s.o.)

Ich hatte dich so verstanden, dass du den Seriendruck aus Access heraus
startest. Da kenne ich leider keine Möglichkeit, die Konvertierungsmethode
zu steuern - deshalb mein Rat, in der Access-Newsgroup zu fragen.

[Exportieren | Seriendruck mit Micorosoft Office Word]


> Diesen Befehl kann ich in MSA 2007 nicht finden.

Wie hast du denn den Seriendruck in Access gestartet?
Der genannte Befehl findet sich auf der Registerkarte "Externe Daten", dort
in der Gruppe "Exportieren" unter der Schaltfläche "Weitere".

> Noch einmal anders gefragt: Wie kann ich beim Öffnen des Word-Dokuments
> eine Parametereingabe
> für ein bestimmtes Feld eingeben?

Siehe oben. Wenn die Parameter-Abfrage in Access gespeichert ist und Word
und Parameter-Abfrage per DDE verbunden werden, sollte die Aufforderung für
die Eingabe automatisch erscheinen.

> Gibt es evtl. einen entsprechenden Befehl über VBA beim Öffnen des
> Word-Dokumentes?

Das weiß ich nicht. Da müsstest du in der Newsgroup für Word-VBA nachfragen.
Allerdings denke ich, dass du auch in diesem Fall in der Access-Newsgroup
besser aufgehoben bist. Dort ist genügend Know-how zu Seriendruck mit
Word/Access versammelt.
In dem von mir genannten Thread
http://groups.google.de/group/microsoft.public.de.access/browse_frm/thread/3f0dd3aa69c991f7/54f7ab0f36aa00e9#54f7ab0f36aa00e9
wurde auch auf entsprechende Beispiele verwiesen.

Ahmed Martens

unread,
May 21, 2008, 2:54:04 AM5/21/08
to
Hallo Erich,

ich gehe hierbei immer wie folgt vor:

1. Serienbrief ohne jegliche Beschränkung der Datensatzanzahl.
2. Alle erforderlichen Felder einfügen.
3. Ein eigenes Formular erstellen, um gewünschte Parameter abzufragen.
4. Nachdem alle Parameter abgefragt wurden, wird die Seriendruckquelle
durch einen eigenen SQL-String ersetzt.

Dieser lautet z.B. wie folgt:
ActiveDocument.MailMerge.DataSource.QueryString = "SELECT * FROM
`Word-Seriendruck` WHERE ((`Mandanten-Nr` = " & txtMdNr & "))" & ""

Hier wird immer die auf eine bestimmte MdNr. vom individuellen Formular
txtMdNr beschränkt. Funktioniert seit Jahren absolut prächtig und man
hat immer die aktuellsten Daten aus der Access-DB.

Gruß Ahmed
--
Antworten bitte nur in der Newsgroup.
WinXP Prof. / MS-Office 2003 Prof.

Erich Walczak

unread,
May 21, 2008, 1:33:21 PM5/21/08
to
Hallo Lisa,

> wenn der Seriendruck in Word (statt Access) gestartet wird, erscheint
> beim Verbinden von Hauptdokument und Datenquelle eine Rückfrage nach
> der Konvertierungsmethode.
> Wählt man DDE statt OLE DB, kann auch auf die Parameter-Abfrage (die
> doch in Access bereits existiert?) zugegriffen werden.

Ich habe nochmals alles von vorne gemacht. Hier die eizelnen Schritte
- Word mit Text geöffnet
- Unter "Sendungen/Empfänger auswählen/Datenquelle auswählen/Vorhandene
Liste verwenden..." gewählt"
- Im Dialogfeld "Datenquelle auswählen" "+Verbindung mit neuer
Datenquelleherstellen.odc" gewählt
- Im Dialogfeld "Datenverbindungs-Assistent" "ODBC DSN" gewählt. "DDE"
wird nicht angeboten.
- "Microsoft Access Datenbank" gewählt
- Datenbank (*.mdb) mit den erforderlichen Daten gewählt
- Erforderliche Abfrage (VIEW) gewählt
- Es wurde im Fertigstellungsdialog ein Dateiname in der Art "Datenbank
mit VIEW.odc" angezeigt
- Beim Fertigstellen erschien ein Dialogfeld §Microsoft Office Word"
mit einer Fehlermeldung wie folgt:

=====BEGINN TEXT==========
" +Verbindung mit neuer Datenquelle herstellen.odc kann von Word nicht
als Datenquelle oder Steuersatzquelle geöffnet werden, weil darin keine
Daten enthalten sind."
=====ENDE TEXT============

Meine Frage: Fehlen evtl. Verweise in Access?

> Ich hatte dich so verstanden, dass du den Seriendruck aus Access
> heraus startest. Da kenne ich leider keine Möglichkeit, die
> Konvertierungsmethode zu steuern - deshalb mein Rat, in der
> Access-Newsgroup zu fragen.

Werde ich evtl. auch noch tun.

>
> [Exportieren | Seriendruck mit Micorosoft Office Word]

> Wie hast du denn den Seriendruck in Access gestartet?
> Der genannte Befehl findet sich auf der Registerkarte "Externe
> Daten", dort in der Gruppe "Exportieren" unter der Schaltfläche
> "Weitere".

Ich habe diesen Punkt in Access gefunden und einen Serienbrief wie
folgt erstellt:
- Datenbank (*.mdb) geöffnet
- Erforderliche Abfrage geöffnet
- Parameter gemäß Parameterabfrage eingegeben
- Abfrage öffnete sich und zeigte den entsprechenden Datensatz an
- "Externe Daten/Weitere/Seriendruck mit Microsoft Office Word" gewählt
- Im Dialogfeld "Microsoft Word-Seriendruckassistent" den Radioknopf
"Ihre Daten mit einem bereits vorhandenen Word-Dokument verknüpfen"
gewählt
- Im Dialogfeld "Microsoft Word-Dokument auswählen" die vorhandene
Word-Datei ausgewählt
- Die Datei wurde geöffnet
- Beim Schließen der Datei erschien im Dialogfeld
"Seriendruck-Assisitent" folgende Fehlermeldung:

=====BEGINN TEXT==========
"Die Datenherkunft des ausgewählten Dokuments unterscheidet sich von
der, die Sie beim Start des Seriendruck-Assistenten ausgewählt haben.
Sollder Seriendruck- Assistent die Datenherkunft ändern?"
=====ENDE TEXT============

Beim Wählen von NEIN passierte gar nichts. die Datei wurde einfach
geschlossen.
Beim Wählen von JA (zweiter Versuch) erschien im Dialogfeld
"Seriendruck-Assisitent" folgende Fehlermeldung:

=====BEGINN TEXT==========
"Der Remote-Server-Computer existiert nicht oder ist nicht verfügbar"
=====ENDE TEXT============

Meine Frage: s. o.

> Siehe oben. Wenn die Parameter-Abfrage in Access gespeichert ist und
> Word und Parameter-Abfrage per DDE verbunden werden, sollte die
> Aufforderung für die Eingabe automatisch erscheinen.

Es erscheint keine Parameter-Abfrage, da ich in all meinen bisherigen
Versuchen noch nie einen Hinweis auf DDE gesehen habe.

Gruß
Erich

Erich Walczak

unread,
May 21, 2008, 1:39:17 PM5/21/08
to
Hallo Ahmed

> ich gehe hierbei immer wie folgt vor:
>
> 1. Serienbrief ohne jegliche Beschränkung der Datensatzanzahl.
> 2. Alle erforderlichen Felder einfügen.
> 3. Ein eigenes Formular erstellen, um gewünschte Parameter
> abzufragen.
> 4. Nachdem alle Parameter abgefragt wurden, wird die
> Seriendruckquelle
> durch einen eigenen SQL-String ersetzt.

zu 1. und 2.
Ich gehe davon aus, dass diese Schritte in Word durchgeführt wurden?

zu 4.
Wo geschieht das in Access?

> Dieser lautet z.B. wie folgt:
> ActiveDocument.MailMerge.DataSource.QueryString = "SELECT * FROM
> `Word-Seriendruck` WHERE ((`Mandanten-Nr` = " & txtMdNr & "))" & ""

Das ist, so glaube ich, genau das, was ich benötige. Allein, wo muss
ich diesen Befehl einsetzen?

Gruß
Erich

Lisa Wilke-Thissen

unread,
May 21, 2008, 4:07:33 PM5/21/08
to
Hallo Erich,

aktiviere in den Word-Optionen unter "Erweitert | Allgemein" die Option
"Dateiformatkonvertierung beim Öffnen bestätigen".

"Erich Walczak" schrieb im Newsbeitrag

news:g11mof$bh1$03$1...@news.t-online.com...

> Ich habe nochmals alles von vorne gemacht. Hier die einzelnen Schritte


> - Word mit Text geöffnet
> - Unter "Sendungen/Empfänger auswählen/
> Datenquelle auswählen/Vorhandene Liste verwenden..." gewählt"

zuvor hattest du auch "Seriendruck starten" gewählt, um die Art des
Seriendrucks (Briefe, Etiketten ...) festzulegen?

> - Im Dialogfeld "Datenquelle auswählen" "+Verbindung mit neuer Datenquelle
> herstellen.odc" gewählt

In diesem Dialogfeld "Datenquelle auswählen" musst du lediglich deine
Access-Datenbank (*.accdb) finden und "öffnen".
Daraufhin erscheint das Dialogfeld "Datenquelle bestätigen" mit dem Eintrag
"OLE DB Datenbankdateien".
Aktiviere die Option "Alle anzeigen" und wähle "MS Access-Datenbanken über
DDE".

Ahmed Martens

unread,
May 22, 2008, 3:44:10 AM5/22/08
to
Hallo Erich,

das mach ich alles in Word. Access muss dazu weder vorhanden noch
gestartet sein. Durch die Angabe des SQL-Strings holt sich Word
automatisch die benötigten Daten.

Versuche es mal.

In einem Word-Makro (Alt+F11) kannst Du Dir z. B. die aktuelle
SQL-Anweisung ja mit
debug.print ActiveDocument.MailMerge.DataSource.QueryString anzeigen
lassen.

Erich Walczak

unread,
May 23, 2008, 10:24:05 AM5/23/08
to
Hallo Lisa,

> aktiviere in den Word-Optionen unter "Erweitert | Allgemein" die
> Option "Dateiformatkonvertierung beim Öffnen bestätigen".

Das ist der entscheidende Tipp. Dieses Häkchen war nicht gesetzt.

> In diesem Dialogfeld "Datenquelle auswählen" musst du lediglich deine
> Access-Datenbank (*.accdb) finden und "öffnen".
> Daraufhin erscheint das Dialogfeld "Datenquelle bestätigen" mit dem
> Eintrag "OLE DB Datenbankdateien".
> Aktiviere die Option "Alle anzeigen" und wähle "MS Access-Datenbanken
> über DDE".

Jetzt kann ich meine Abfrage auswählen und den einzelnen Datensatz
auswählen. Bis hierin so weit so gut, aber...:

[1.]
Es passiert, dass das Parameterabfrage-Dialogfeld aus Access "hinter"
dem Word-Bildschirm bleibt. Wenn man jetzt nicht auf den Access-Reiter
in der Taskleiste klickt, oder den Word-Bildschirm verkleinert, so
sieht man das Parameterabfrage-Dialogfeld aus Access nicht und es
erscheint nach einiger Zeit eine Fehlermeldung.

Ich weiß das jetzt, aber wie sagt's man dem unbedarften User?

Gibt es eine Möglichkeit, das Parameterabfrage-Dialogfeld aus Access
"vor dem Word-bildschirm zu plazieren?

[2.]
Ich muss jedes Mal die oben beschriebene Prozedur in Word wiederholen,
da sie nicht mit dem Word-Dokument gespeichert wird. Jedenfalls nicht
bei mir.

Kann man das mit einer einfachen Prozedur oder einem einfachen Befehl
automatiseren, oder muss ich z.B. mittels Makro-Recorder eine
entsprechende Prozedur zusammenstellen?

[3.]
Schön wäre es natürlich, wenn ich all das aus Access heraus erledigen
könnte. Aber hierzu werde ich mich, wie von Dir vorgeschlagen, evtl.
noch einmal in der Access-NG melden, bzw. noch das Beispiel von Ahmed
ausprobieren.

Gruß
Erich

Erich Walczak

unread,
May 28, 2008, 5:14:57 AM5/28/08
to
Hallo Lisa,

ich glaube eine Lösung gefunden zu haben, allein der letzte Schritt
fehlt noch. Hierzu möchte ich noch einmal um Deine Hilfe bitten.

In Anlehnung an den Vorschlag von Ahmed und Deinem Beitrag in

http://www.office-loesung.de/ftopic73472_0_0_asc.php

habe ich bisher folgendes gemacht:

Ein Word-Dokument *.docm mit folgendem Inhalt erstellt:

- erforderliche Access-Datenbank ohne jegliche Filterung und Sortierung
eingebunden
- in VBA ein Formular zur Abfrage des erforderlichen Feldes und eine
"AutoOpen"-Procedur

Das Word-Dokument wird aus Access aufgerufen und es erscheint das
Formular zur Abfrage des erforderlichen Feldes.

Zur Ausgabe des entsprechenden Datensatzes sind in der
"AutoOpen"-Procedur folgende Zeilen enthalten:
.......
DatQuel = ActiveDocument.MailMerge.DataSource.QueryString
DatQuel = DatQuel & "WHERE ((`Feldname` = " & Formularname.txteingabe &
"))" & ""
.......

"txteingabe" ist hierin der Name des Eingabefeldes im Formular
"Formularname".

Es läuft alles ohne Fehlermeldung durch, allein es wird nicht der
gewünschte Datensatz entsprechend des eingegebenen Feldes angezeigt.
Die Datenbank zeigt nach wie vor alle Datensätze an.

Hast Du einen Tipp?

Gruß
Erich

Lisa Wilke-Thissen

unread,
May 28, 2008, 8:59:35 AM5/28/08
to
Hallo Erich,

"Erich Walczak" schrieb

> In Anlehnung an den Vorschlag von Ahmed und Deinem Beitrag in

nein, dort antwortet eine andere Lisa ;-).

> http://www.office-loesung.de/ftopic73472_0_0_asc.php
> habe ich bisher folgendes gemacht:
>
> Ein Word-Dokument *.docm mit folgendem Inhalt erstellt:
>
> - erforderliche Access-Datenbank ohne jegliche Filterung und Sortierung
> eingebunden
> - in VBA ein Formular zur Abfrage des erforderlichen Feldes und eine
> "AutoOpen"-Procedur

mir erscheint es sinnvoller, das Hauptdokument als Dokumentvorlage (*.dotm)
zu speichern und darauf basierend eine neue Datei zu erstellen
(Document.Add).

> DatQuel = ActiveDocument.MailMerge.DataSource.QueryString
> DatQuel = DatQuel & "WHERE ((`Feldname` = " & Formularname.txteingabe &
> "))" & ""
> .......
>
> "txteingabe" ist hierin der Name des Eingabefeldes im Formular
> "Formularname".

Hm, ich bin nicht sicher, aber fehlt da nicht etwas in der Art "Select
from"?
Allerdings bin ich kein VBA-Spezialist, weshalb du doch in der Access- oder
VBA-Newsgroup nachfragen solltest.

Erich Walczak

unread,
May 28, 2008, 12:15:14 PM5/28/08
to
Hallo Lisa,

> nein, dort antwortet eine andere Lisa ;-).

Enttschuldigung.

> Hm, ich bin nicht sicher, aber fehlt da nicht etwas in der Art
> "Select from"?
> Allerdings bin ich kein VBA-Spezialist, weshalb du doch in der
> Access- oder VBA-Newsgroup nachfragen solltest.

Ich werde das jetzt dann wohl tun...

Jedenfalls vielen Dank für Deine Hilfe bis hierher.

Gruß
Erich

Erich Walczak

unread,
May 29, 2008, 9:57:14 AM5/29/08
to
Hallo Ahmed,

> In einem Word-Makro (Alt+F11) kannst Du Dir z. B. die aktuelle
> SQL-Anweisung ja mit
> debug.print ActiveDocument.MailMerge.DataSource.QueryString anzeigen
> lassen.

Kurze Beschreibung des Zustandes meines jetzigen Serienbriefes:

Ich habe für den Serienbrief, den ich zur Ausgabe eines einzelnen
Datensatzes benutzen will, ein Word-Dokument *.docm mit folgendem
Inhalt erstellt:

- erforderliche Access-Datenbank-Tabelle (tblMeine Daten) ohne jegliche


Filterung und Sortierung eingebunden
- in VBA ein Formular zur Abfrage des erforderlichen Feldes und eine
"AutoOpen"-Procedur

Zur Ausgabe des entsprechenden Datensatzes sind in der
"AutoOpen"-Procedur folgende Zeilen enthalten, die in ähnlicher Form in
oben genanntem Link enthalten sind:
.......
DatQuel = ActiveDocument.MailMerge.DataSource.QueryString
DatQuel = DatQuel & "WHERE ((MNR = " & Mitgliedsnummer.txtmitgliedsnr &
"))"
Debug.Print DatQuell
.......

"txteingabe" ist hierin der Name des Eingabefeldes im Formular
"Formularname".

Debug.Print DatQuell gibt im Direktfenster nach Eingabe von z.B. 120 in
das Eingabefeld folgernden Text aus:

SELECT * FROM `tblMeineDaten` WHERE ((MNR = 120))

Das Word-Dokument wird aus Access (oder auch Word) aufgerufen und es
erscheint das Formular zur Abfrage des erforderlichen Feldes.

Es läuft alles ohne Fehlermeldung bis nach der Eingabe in
"txtmitgliedsnr " und bis zur Schließung des Formulars durch, allein es


wird nicht der gewünschte Datensatz entsprechend des eingegebenen
Feldes angezeigt. Die Datenbank zeigt nach wie vor alle Datensätze an.

Hast Du evtl. einen Tipp?

Gruß
Erich

0 new messages