Word Serienbrief mit Makro die Datensätze durchgehen
Hallo Admins,
ich verzweifel grad an einem Serienbrief. Hier die Fakten
Word 2003
Serienbrief als Katalog oder Verzeichnis (in der Bezeichnung ist sich MS nicht immer einig)
Datenquelle Exceltabelle
Abfrageoption Seriendruckfeld 1 = XXX
zusammenführen aller Datensätze (die natürlich der Abfrageoption entsprechen)
Da in meinem Katalog immer mehrere Datensätze zu einem Dokument zusammengefasst werden und ich dieses anschließend speichere ist die Auswahl über die Abfrageoption (das SD-Feld 1 ist das Unterscheidungskriterium für den Katalog) ein guter Weg (händisch auch kein Problem). Jetzt stellt sich mir im Makro aber die Anforderung, dass ich jeweils die Datensätze durchgehe und den Wert in SD-Feld 1 prüfe ob ich den schon hatte, wenn ja überspringen, wenn nein als neues Kriterium hinterlegen und zusammenführen, dann wieder von vorne. Genau diese Schleife über die Inhalte des SD-Feld 1 der verschiedenen Datensätze will aber nicht so wie ich will. Mit folgendem Werten sollte eine Steuerung des aktiven Datensatzes möglich sein:
wdFirstDataSourceRecord The first record in the data source.
wdFirstRecord The first record in the result set.
wdLastDataSourceRecord The last record in the data source.
wdLastRecord The last record in the result set.
wdNextDataSourceRecord The next record in the data source.
wdNextRecord The next record in the result set.
wdNoActiveRecord No active record.
wdPreviousDataSourceRecord The previous record in the data source.
wdPreviousRecord The previous record in the result set.
Leider kann ich dabei keine Logik erkennen (z. B. wird vom 1. Datensatz auf den 2. hochgezählt mit wdNextRecord bzw. wdNextDataSourceRecord (was meiner Meinung nach besser passen würde, da ja nicht die selektierten Datensätze bearbeitet werden müssen sondern alle) aber vom 2. wird dann nicht mehr weiter gezählt.
Alles andere davor und danach habe ich soweit fertig, nur der Teil will einfach nicht. Der Code ist unten. So habe ich ihn auch in einer einfachen Datei getestet. Die Ermittlung der Anzahl der Datensätze funktioniert, jedoch muss ich den Wert * -1 rechnen??
Ich hoffe da auf jemanden mit mehr Durchblick.
Danke für eure Hilfe
Gruß Joni
ich verzweifel grad an einem Serienbrief. Hier die Fakten
Word 2003
Serienbrief als Katalog oder Verzeichnis (in der Bezeichnung ist sich MS nicht immer einig)
Datenquelle Exceltabelle
Abfrageoption Seriendruckfeld 1 = XXX
zusammenführen aller Datensätze (die natürlich der Abfrageoption entsprechen)
Da in meinem Katalog immer mehrere Datensätze zu einem Dokument zusammengefasst werden und ich dieses anschließend speichere ist die Auswahl über die Abfrageoption (das SD-Feld 1 ist das Unterscheidungskriterium für den Katalog) ein guter Weg (händisch auch kein Problem). Jetzt stellt sich mir im Makro aber die Anforderung, dass ich jeweils die Datensätze durchgehe und den Wert in SD-Feld 1 prüfe ob ich den schon hatte, wenn ja überspringen, wenn nein als neues Kriterium hinterlegen und zusammenführen, dann wieder von vorne. Genau diese Schleife über die Inhalte des SD-Feld 1 der verschiedenen Datensätze will aber nicht so wie ich will. Mit folgendem Werten sollte eine Steuerung des aktiven Datensatzes möglich sein:
wdFirstDataSourceRecord The first record in the data source.
wdFirstRecord The first record in the result set.
wdLastDataSourceRecord The last record in the data source.
wdLastRecord The last record in the result set.
wdNextDataSourceRecord The next record in the data source.
wdNextRecord The next record in the result set.
wdNoActiveRecord No active record.
wdPreviousDataSourceRecord The previous record in the data source.
wdPreviousRecord The previous record in the result set.
Leider kann ich dabei keine Logik erkennen (z. B. wird vom 1. Datensatz auf den 2. hochgezählt mit wdNextRecord bzw. wdNextDataSourceRecord (was meiner Meinung nach besser passen würde, da ja nicht die selektierten Datensätze bearbeitet werden müssen sondern alle) aber vom 2. wird dann nicht mehr weiter gezählt.
Alles andere davor und danach habe ich soweit fertig, nur der Teil will einfach nicht. Der Code ist unten. So habe ich ihn auch in einer einfachen Datei getestet. Die Ermittlung der Anzahl der Datensätze funktioniert, jedoch muss ich den Wert * -1 rechnen??
Ich hoffe da auf jemanden mit mehr Durchblick.
Danke für eure Hilfe
Gruß Joni
Sub test12()
Dim ANZAHLRECORDS As Variant
Dim i As Variant
i = 1
With ActiveDocument.MailMerge
ANZAHLRECORDS = wdLastDataSourceRecord * -1
.DataSource.ActiveRecord = wdFirstDataSourceRecord
MsgBox .DataSource.ActiveRecord
Do
With .DataSource
.FirstRecord = 1
.LastRecord = ANZAHLRECORDS
End With
If i < ANZAHLRECORDS Then
i = i + 1
.DataSource.ActiveRecord = wdNextDataSourceRecord
MsgBox .DataSource.ActiveRecord
Else
Exit Do
End If
Loop
End With
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 155215
Url: https://administrator.de/contentid/155215
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
1 Kommentar