Seriendruck, Abfrage Datenquelle...

26/11/2008 - 05:31 von Heinz-Josef Bomanns | Report spam
Moin!

Word 2002, 2003, 2007 - ich habe im Seriendruck eine Access- oder
Excel-Tabelle oder Kontakte aus Outlook als Datenquelle mit z.B. 20
Datensàtzen. Über "Empfàngerliste bearbeiten" wird bei 5 Datensàtzen
das Kontrollkàstchen deaktiviert, sie sollen nicht mit ausgegeben
werden. Per VBA möchte ich nun abfragen, 1. wieviele Datensàtze
insgesamt vorhanden sind (20) und 2. wieviele davon für die Ausgabe
ausgewàhlt wurden (15, da 5 deaktiviert). Laut Doku sollen sich die
Konstanten "wdFirst|Last|Next|Previous|DataSourceRecord" auf die
gesamte Datenquelle beziehen, wàhrend sich
"wdFirst|Last|Next|Previous|Record" auf die ausgewàhlten Datensàtze
(Dataset) beziehen. Meine dementsprechenden Versuche sehen so aus:

With DS 'MailMergeDataSource-Objekt
'Auf letzten Satz der Datenquelle positionieren
.FirstRecord = wdFirstDataSourceRecord
.ActiveRecord = wdLastDataSourceRecord
NumRecsTotal = .ActiveRecord
'Auf letzten Satz des Datasets positionieren
.FirstRecord = wdFirstRecord
.ActiveRecord = wdLastRecord
NumRecsDataset = .ActiveRecord
End With

Das Ergebnis ist in beiden Fàllen "20", also die Gesamtzahl
Datensàtze. Ich hab es schon mit verschiedenen Variationen probiert,
unter anderem einer Abfrage von ".RecordCount", die aber meistens nur
"-1" liefert. Bin auch in einer Schleife alle Datensàtze durch und
habe ".Included" geprüft, das scheint aber standardmàßig immer auf
"True" zu stehen, auch wenn man über "Empfàngerliste bearbeiten"
einzelne Empfànger deaktiviert hat...

Kernfrage ist also: Hat jemand 'ne Idee, wie ich ermitteln kann,
wieviele Datensàtze der Datenquelle tatsàchlich ausgewàhlt sind? Danke
für jeden Hinweis/jede Erleuchtung...


Bis dann...
...Bomi


Bei Replies via EMail bitte Unterstriche (_) in der Adresse löschen - Danke!
 

Lesen sie die antworten

#1 Cindy M.
28/11/2008 - 11:32 | Warnen spam
Hi Heinz-Josef,

Word 2002, 2003, 2007 - ich habe im Seriendruck eine Access- oder
Excel-Tabelle oder Kontakte aus Outlook als Datenquelle mit z.B. 20
Datensàtzen. Über "Empfàngerliste bearbeiten" wird bei 5 Datensàtzen
das Kontrollkàstchen deaktiviert, sie sollen nicht mit ausgegeben
werden.



Wie Du beschreibst, um die Datensàtze anzusprechen, die tatsàchlich
zusammengeführt werden, muss ab Version 2000 mit
wdNextDataSourceRecord bzw. wdPreviousDataSourceRecord durch alle
Datensàtze geschleifen werden. Dazu wird die Eigenschaft Included
geprüft, um herauszufinden, ob der Datensatz vom Benutzer
ausgeschlossen wurde. Offensichtlich führst Du aber keine Schleife
durch.

Das hat für mich immer funktioniert. Zum Beispiel:

Function MailMergeCountIncludedRecs(doc As Word.Document) As Long
Dim counter As Long, recCount As Long
Dim mm_ds As Word.MailMergeDataSource
Dim lRecs As Long

Set mm_ds = doc.MailMerge.DataSource
lRecs = mm_ds.RecordCount
recCount = 0
mm_ds.ActiveRecord = wdFirstDataSourceRecord
For counter = 1 To lRecs
If mm_ds.Included Then
recCount = recCount + 1
'Debug.Print mm_ds.DataFields(4).Value
End If
mm_ds.ActiveRecord = wdNextDataSourceRecord
Next

MailMergeCountIncludedRecs = recCount
End Function


Cindy Meister
Co-Autor von »Microsoft Word-Programmierung Das Handbuch« (MS Press)
http://www.word.mvps.org
http://homepage.swissonline.ch/cindymeister

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

Ähnliche fragen