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

Word-Makro in Verbindung mit Serienbrief

417 views
Skip to first unread message

Beate Plach

unread,
Dec 13, 2003, 7:29:08 AM12/13/03
to
Hallo NG,
ich habe da ein Problem:
seit dem Update auf Office XP kann ich für folgende Aufgabe kein Makro mehr
schreiben (unter Office 97 klappte das problemlos).
Wir haben eine große Adressendatei (Excel-Tabelle), die außer den Adressen
noch bestimmte Rubiken (nenne ich jetzt mal Funktion1; Funktion2; Funktion3;
usw) haben, die alle als Filter eine "1" haben. Das heißt z.B. alle
Adressen, die in Funktion1 eine 1 haben, sollen gefiltert werden.
Wenn ich nun die Makroaufzeichnung starte, den Serienbriefassistent - hier
Etiketten - aufrufe und Schritt für Schritt die erforderlichen Eingaben
abarbeite, anschließend das Makro beende, kommt jedesmal beim Aufrufen des
Makros: Laufzeitfehler 509.
Es spielt hier keine Rolle, ob ich den Assistenten oder über die Menueleiste
das Makro aufzeichne. Ich denke, dass es irgendetwas mit der Sortierung zu
tun hat. Ich habe auch schon eine Dokumentenvorlage erstellt (damit die
Adresse nicht jedesmal formatiert werden muss), wenn ich mit dieser
Dokumentenvorlage das Makro schreibe, funktioniert es zwar, es werden jedoch
alle Adressen angezeigt, also nicht gefiltert. Ich kann bei der
Tabellenauswahl vorher filtern (gefilterte Tabelle dann auswählen) oder erst
im Assistenten filtern, es kommt immer der gleiche Fehler.
Weiß hier jemand Rat?
Danke für eure Hilfe.
Beate


Cindy M -WordMVP-

unread,
Dec 14, 2003, 11:51:25 AM12/14/03
to
Hi Beate,

Ohne den Code zu sehen, mit Vermerk, welche Zeile den Fehler veranlasst, ist
es unmöglich zu sagen, was da los sein könnte.

Wo hast Du probiert, den Filter zu setzen? Direkt im Empfänger Dialogfeld?
Oder in den Abfrage-Optionen (wie in Word97)? Falls im ersteren, probiere es
wie anhin über die Abfrage Optionen. (Du findest sie, wenn Du den letzten
Eintrag einer "Filterliste" im Empfänger Dialogfeld wählst)

Cindy Meister
Autor von: Microsoft Word. Das Profibuch (MS Press)
INTER-Solutions, Switzerland
http://www.mvps.org/word
http://homepage.swissonline.ch/cindymeister
http://go.compuserve.com/MSOfficeForum

Rückfragen & Antworten nur in der Newsgroup, bitte!

Beate Plach

unread,
Dec 14, 2003, 3:25:48 PM12/14/03
to

> Ohne den Code zu sehen, mit Vermerk, welche Zeile den Fehler veranlasst,
ist
> es unmöglich zu sagen, was da los sein könnte.

siehe unten

> Wo hast Du probiert, den Filter zu setzen? Direkt im Empfänger Dialogfeld?
> Oder in den Abfrage-Optionen (wie in Word97)? Falls im ersteren, probiere
es
> wie anhin über die Abfrage Optionen. (Du findest sie, wenn Du den letzten
> Eintrag einer "Filterliste" im Empfänger Dialogfeld wählst)

leider verstehe ich nicht, wie das du hier meinst. Wie komme ich denn zu den
Abfrageoptionen wie in Word97? Deshalb gebe ich dir nochmals die Schritte
und auch die Fehleranzeige in Debuggen an:

Makrorekorder an.
- Etiketten wählen
- Datenquelle -->meine Tabelle öffnen
- Tabelle auswählen -->erster Eintrag - oder wenn vorher schon Filter
gesetzt, diesen Eintrag auswählen
- Seriendruckfelder einfügen
- Etiketten übertragen
- Seriendruckempfänger -->hier setze ich meinen Filter mit dem Pfeil in der
Spaltenüberschrift
- Seriendruck in Datei -->alles wird nun richtig angezeigt, d.h. auch
gefiltert
Makrorekorder aus.

Wenn ich jetzt das Makro ausführe kommt: Laufzeitfehler 509 und wenn ich
debugge:
ein gelber Pfeil, der auf den gelben Text
"WordBasic.MailMergePropagateLabel" zeigt.

> Cindy Meister
> Autor von: Microsoft Word. Das Profibuch (MS Press)
> INTER-Solutions, Switzerland
> http://www.mvps.org/word
> http://homepage.swissonline.ch/cindymeister
> http://go.compuserve.com/MSOfficeForum
>
> Rückfragen & Antworten nur in der Newsgroup, bitte!
>

Vielen Dank für deine Hilfe
Beate


Cindy M -WordMVP-

unread,
Dec 15, 2003, 12:01:16 PM12/15/03
to
Hi Beate,

Gut, jetzt verstehe ich, was alles los ist.

Das erste Problem ist, dass man die Erstellung von Seriendrucketiketten mit
dem Makrorekorder nicht aufzeichnen kann. Das Etikettenblatt muss "von Hand"
programmiert werden. Aber ich frage mich, ob das hier wirklich notwendig ist.

Kannst Du genauer beschreiben, was mit dem Makro erreicht werden soll? Bzw,
was würde es machen, dass eine Dokumentvorlage, die mit der Datenquelle
verbunden ist, nicht tut?

Abfrageoptionen: Im Empfängerdialogfeld, klicke auf den Pfeil irgendeines
Feldnamens. Der allerletzte Eintrag in der Liste öffnet das Dialogfeld mit den
Abfrageoptionen (setzen einen Filter). Im allgemein arbeitet der Seriendruck
besser mit diesen Filtern, als mit einer in der Empfängerliste festgelegten
Auswahl.

Beate Plach

unread,
Dec 15, 2003, 12:12:40 PM12/15/03
to
> Das erste Problem ist, dass man die Erstellung von Seriendrucketiketten
mit
> dem Makrorekorder nicht aufzeichnen kann. Das Etikettenblatt muss "von
Hand"
> programmiert werden. Aber ich frage mich, ob das hier wirklich notwendig
ist.
>
> Kannst Du genauer beschreiben, was mit dem Makro erreicht werden soll?
Bzw,
> was würde es machen, dass eine Dokumentvorlage, die mit der Datenquelle
> verbunden ist, nicht tut?

Ich hatte mit Word97 ein Makro (mehrere, je nach Filterfunktion) erstellt
und mir dieses als Schaltflächensymbol in die Symbolleiste gelegt, das
musste nur angeklickt werden und schon lagen die gefilterten
Adressenetiketten im Drucker. Mit der Dokumentvorlage klappt das ja auch
schon gut, sind aber 1-2 Mausklicks mehr :-).


Vielen Dank für deine Hilfe.
Beate


Cindy M -WordMVP-

unread,
Dec 16, 2003, 8:43:54 AM12/16/03
to
Hi Beate,

> Ich hatte mit Word97 ein Makro (mehrere, je nach Filterfunktion) erstellt
> und mir dieses als Schaltflächensymbol in die Symbolleiste gelegt, das
> musste nur angeklickt werden und schon lagen die gefilterten
> Adressenetiketten im Drucker. Mit der Dokumentvorlage klappt das ja auch
> schon gut, sind aber 1-2 Mausklicks mehr :-).
>

Es geht also hauptsächlich um die Filter, und nicht um die Verknüpfung der
Daten? DAS lässt sich aufzeichnen, glaube ich.

Hast du inzwischen die Abfrageoptionen gefunden? Und ein wenig getestet?
Starte den Makrorekorder unmittelbar vor der Einblendung des
Empfänger-Dialogfelds. Gehe in die Abfrageoptionen, lege einen Filter fest,
mit OK wieder raussteigen und den Rekorder anhalten.

Wenn Du den Code anschaust, sollst Du eigentlich nur ein Kommando sehen,
die ungefähr wie folgt anfängt:
ActiveDocument.MailMerge.DataSource.QueryString = "SELECT..."

Beate Plach

unread,
Dec 16, 2003, 11:30:10 AM12/16/03
to

"Cindy M -WordMVP-" <C.Mei...@hispeed.ch> schrieb im Newsbeitrag
news:VA.00008eeb.00c2ff40@speedy...

> Hi Beate,
>
> > Ich hatte mit Word97 ein Makro (mehrere, je nach Filterfunktion)
erstellt
> > und mir dieses als Schaltflächensymbol in die Symbolleiste gelegt, das
> > musste nur angeklickt werden und schon lagen die gefilterten
> > Adressenetiketten im Drucker. Mit der Dokumentvorlage klappt das ja auch
> > schon gut, sind aber 1-2 Mausklicks mehr :-).
> >
> Es geht also hauptsächlich um die Filter, und nicht um die Verknüpfung der
> Daten? DAS lässt sich aufzeichnen, glaube ich.
>
> Hast du inzwischen die Abfrageoptionen gefunden? Und ein wenig getestet?
> Starte den Makrorekorder unmittelbar vor der Einblendung des
> Empfänger-Dialogfelds. Gehe in die Abfrageoptionen, lege einen Filter
fest,
> mit OK wieder raussteigen und den Rekorder anhalten.

Abfrageoptionen habe ich gefunden. Leider funktioniert das Makro auch damit
nicht. Auch mit obiger Anleitung habe ich keinen Erfolg, da gerade das
Filtern (nur gefilterte Adressenetiketten ausgeben) nicht funktioniert. Das
Makro funktioniert nur in der Hinsicht, dass _alle_ Adressen, die in der
Tabelle sind, angezeigt werden.

Danke und viele Grüße
Beate


Cindy M -WordMVP-

unread,
Dec 17, 2003, 11:15:46 AM12/17/03
to
Hi Beate,

> Abfrageoptionen habe ich gefunden. Leider funktioniert das Makro auch damit
> nicht. Auch mit obiger Anleitung habe ich keinen Erfolg, da gerade das
> Filtern (nur gefilterte Adressenetiketten ausgeben) nicht funktioniert. Das
> Makro funktioniert nur in der Hinsicht, dass _alle_ Adressen, die in der
> Tabelle sind, angezeigt werden.
>

Gut, wenigstens ein Schritt näher!

Könntest Du bitte dieses letzte Makro kopieren und in Deine Antwort einfügen?

Beate Plach

unread,
Dec 17, 2003, 2:54:27 PM12/17/03
to

> >Das Makro funktioniert nur in der Hinsicht, dass _alle_ Adressen, die in
der
> > Tabelle sind, angezeigt werden.
> >
> Gut, wenigstens ein Schritt näher!

dass alle Adressen angezeigt wurden ging auch vorher schon, bevor ich
gepostet habe, allerdings nur in Verbindung mit der
"Adressenformat-Vorlage" - im Makro "testadrema.dot" genannt.
Die Adressenformat-Vorlage "testadrema.dot" beinhaltet die Formatierung der
Adressenfelder und die Verknüpfung mit der (Excel-)Adressen-Tabelle.

Wenn ich das Makro ganz von Anfang (also in ein leeres Dokument)
aufgezeichne, kommt der bereits in vorigen Postings beschriebene
Laufzeitfehler 509 ff.

> Könntest Du bitte dieses letzte Makro kopieren und in Deine Antwort
einfügen?

Sub adrema()

Documents.Add Template:= _
"C:\Dokumente und
Einstellungen\Beate\Anwendungsdaten\Microsoft\Vorlagen\testadrema.dot" _
, NewTemplate:=False, DocumentType:=0
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
End Sub


Cindy M -WordMVP-

unread,
Dec 18, 2003, 10:09:43 AM12/18/03
to
Hi Beate,

Hmmm. Diese Makro hat die Erstellung eines neuen Dokuments von einer
bestimmten Vorlage, sowie die Einstellung für die Anzeige der Feldcodes
aufgezeichnet. Das habe ich nicht gemeint.

Führe alle diese Schritte "von Hand" aus. Du sitzest nun vor einem
Seriendruckhauptdokument, das alle Daten anzeigt.

Starte die Makroaufzeichnung auf.

Gehe in das Empfänger-Dialogfeld. Klicke den Pfeil neben irgendeinem
Feldnamen und wähle den allerletzten Eintrag aus (steht in Klammer). Ein
anderes Dialogfeld wird eingeblendet.

Setze nun den gewünschten Filter in diesem Dialogfeld. OK. OK. (Also im
Empängerdialogfeld *keine* Änderungen vornehmen).

Makrorekorder ausschalten. Diesen Code nun in Deine Antwort kopieren. Und
bitte sage mir auch, in Wörter, was der festgelegte Filter machen soll.
(Beispiel: alle Datensätze anzeigen, wo "Frankfurt" als Ort steht)

> > Könntest Du bitte dieses letzte Makro kopieren und in Deine Antwort
> einfügen?
>
> Sub adrema()
>
> Documents.Add Template:= _
> "C:\Dokumente und
> Einstellungen\Beate\Anwendungsdaten\Microsoft\Vorlagen\testadrema.dot" _
> , NewTemplate:=False, DocumentType:=0
> ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
> End Sub
>

Cindy Meister

Beate Plach

unread,
Dec 18, 2003, 12:06:15 PM12/18/03
to
> Führe alle diese Schritte "von Hand" aus. Du sitzest nun vor einem
> Seriendruckhauptdokument, das alle Daten anzeigt.
>
> Starte die Makroaufzeichnung auf.
>
> Gehe in das Empfänger-Dialogfeld. Klicke den Pfeil neben irgendeinem
> Feldnamen und wähle den allerletzten Eintrag aus (steht in Klammer). Ein
> anderes Dialogfeld wird eingeblendet.
>
> Setze nun den gewünschten Filter in diesem Dialogfeld. OK. OK. (Also im
> Empängerdialogfeld *keine* Änderungen vornehmen).

> Makrorekorder ausschalten. Diesen Code nun in Deine Antwort kopieren. Und
> bitte sage mir auch, in Wörter, was der festgelegte Filter machen soll.
> (Beispiel: alle Datensätze anzeigen, wo "Frankfurt" als Ort steht)
>

Eben in dieser Filterung liegt der Hund begraben. Wenn ich mich ganz genau
an die von dir aufgeführten Schritte halte, wird mein Hauptdokument sehr
wohl gefiltert, das Makro aber tut überhaupt nichts. Im "Makro -
bearbeiten - Modus = debuggen wird mir auch überhaupt nichts anzeigt (außer
sub Name, etwas Kommentar und end sub).
Die Filterung sollte beispielsweise so sein:
Alle Adressen, die eine "1" in der Rubik(=Tabellenüberschrift)
"Kiga-Ausschuss" haben, sollen gefiltert (also als Adressetikett ausgegeben)
werden.

Aber wie bereits erwähnt, geht das mit der Vorlage, die ich erstellt habe
schon sehr gut. Wenn auch ein Makro, das ich unter Word 97 genau mit der
gleichen Tabelle erstellt hatte, sehr gut lief. Ein Klick und schon lag
alles fertig im Drucker. Nur mit Office XP gehts anscheinend nicht. Wobei
ich es im Geschäft sowie auch Zuhause ausprobiert habe.
(Geschäft: Win2000 und Office xp, Zuhause: WinXp und Office XP).

Ich möchte dir nochmals "herzlichen Dank" sagen für deine unermüdliche Hilfe
und ganz liebe Grüße
Beate


Cindy M -WordMVP-

unread,
Dec 19, 2003, 3:36:49 AM12/19/03
to
Hi Beate,

> Die Filterung sollte beispielsweise so sein:
> Alle Adressen, die eine "1" in der Rubik(=Tabellenüberschrift)
> "Kiga-Ausschuss" haben, sollen gefiltert (also als Adressetikett ausgegeben)
> werden.
>

OK, dann probieren wir es "von Hand" zu schreiben.

Sub Kiga1()
ActiveDocument.MailMerge.DataSource.QueryString _
= "SELECT * FROM [TabellennameHier] WHERE _
[Kiga-Ausschuss]=1"
End Sub

Das obige Makro kopieren und in ein Modul einfügen (aufgepasst auf die
Zeilen - sie könnten in der Nachricht umbrechen!). Die korrekte Tabellenname
anstelle von "TabellennamenHier" eingeben. Das Seriendruckhauptdokument liegt
bereit, alle Datensätze sind angezeigt. Das Makro jetzt ausführen. Klappts?

Beate Plach

unread,
Jan 1, 2004, 6:42:20 AM1/1/04
to
Hallo Cindy,
nachdem ich mit Win XP überhaupt nicht zu Potte komme, habe ich das ganze
mal mit Win 2000 probiert und siehe da, es klappt alles wie am Schnürchen.
Ich liste dir mal das Makro aus Win 2000 auf, vielleicht kannst du ja damit
sehen, wo der Hund begraben liegt.
Viele Grüße und einen guten Rutsch ins neue Jahr.

Sub Adrema()

'

' Adrema Makro

' Makro aufgezeichnet am 31.12.2003 von Bea

'

ActiveDocument.MailMerge.MainDocumentType = wdMailingLabels

ActiveDocument.MailMerge.OpenDataSource Name:= _

"C:\Dokumente und Einstellungen\Beate\Eigene
Dateien\Beate\excel-dateien\adrema1.xls" _

, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _

AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="",
_

WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False,
_

Format:=wdOpenFormatAuto, Connection:="Gesamtes Tabellenblatt", _

SQLStatement:="", SQLStatement1:=""

Application.MailingLabel.DefaultPrintBarCode = False

Application.MailingLabel.CreateNewDocument Name:="", Address:="",
AutoText _

:="ExtrasEtikettenErstellen1", LaserTray:=wdPrinterManualFeed

ActiveDocument.MailMerge.DataSource.QueryString = _

"SELECT * FROM C:\Dokumente und Einstellungen\Beate\Eigene
Dateien\Beate\excel-dateien\adrema1.xls WHERE ((KigaAussch = '1'))" _

& ""

With ActiveDocument.MailMerge

.Destination = wdSendToNewDocument

.MailAsAttachment = False

.MailAddressFieldName = ""

.MailSubject = ""

.SuppressBlankLines = True

With .DataSource

.FirstRecord = wdDefaultFirstRecord

.LastRecord = wdDefaultLastRecord

End With

.Execute Pause:=True

End With

End Sub

0 new messages