joni2000de
Goto Top

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

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

Content-Key: 155215

Url: https://administrator.de/contentid/155215

Printed on: April 25, 2024 at 08:04 o'clock

Member: joni2000de
joni2000de Nov 24, 2010 at 12:59:23 (UTC)
Goto Top
Hi,

da bin ich wieder. Das Problem ist gelöst. Um die richtige Anzahl der Datensätze bzw. das richtige Hochzählen zu ermöglichen muss vorher immer die Abfrage gelöscht werden (warum??? ich habe ja festgelegt, dass die Datenquelle relevant ist und nicht die ausgewählten Datensätze; ist hat so). D. h. ich ermittle die richtigen Werte setze dann den Filter, erzeuge das Dokument, lösche den Filter und ermittle die neuen Werte, usw.

Falls es jemand hilft.

Gruß Joni