Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Serienbrief Bezug zu Datenquelle mit VBA

Serienbrief Bezug zu Datenquelle mit VBA
15.05.2019 09:20:09
Grouden
Hallo zusammen,
habe folgendes Problem:
Habe ein Serienbrief Dokument und eine Excel Datenquelle erstellt. Kann wie gewünscht die einzelnen Serienbrief Dokumente als PDF abspeichern.
Dazu setzte ich in der Empfängerliste in Word Haken bei den Empfängern, für die PDF Dateien erstellt werden sollen.
Allerdings kann ich hier immer nur alle von Anfang bis zur Stelle X auswählen und erstellen lassen. Wenn ich beliebe Datensätze auswähle, die nicht direkt hintereinander kommen und nicht beim ersten starten, dann kommt der Fehler:
Laufzeitfehler '5631':
Word konnte das Hauptdokument nicht mit der Datenquelle verbinden, da entweder die Datensätze leer waren oder kein Datensatz den Abfrageoptionen entsprach.
Ich würde aber gerne beliebe Daten ankreuzen um diese dann generieren zu lassen. Kann man nicht irgendwie das Fenster "Empfängerliste bearbeiten" ansprechen mit einer If Then Else Funktion und nur die angekreuzten Daten in der Datenquelle suchen lassen?
Vielen Dank für Eure Hilfe!
Hier mein Makro:

Sub SaveAsPDF(FilePath As String)
'Erstellung der PDF
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
FilePath, ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
End Sub

Sub JederDatensatzInEineEigenstandigeDatei()
Application.ScreenUpdating = False
Dim FeldVName, FeldNName, FeldXName, Pfad As String
FeldVName = "F7"
FeldNName = "F1"
FeldXName = "F6"
Pfad = "I:\Abteilung\ZET\Technik\05_Personen\Groten\Fachunternehmererklärung nach EnEV\ _
Serienbriefe PDF\"
With ActiveDocument.MailMerge
If .MainDocumentType = wdNotAMergeDocument Then
MsgBox "Das aktive Dokument ist kein Seriendruckhauptdokument."
Exit Sub
End If
.DataSource.ActiveRecord = wdLastRecord
anzahl = .DataSource.ActiveRecord
If anzahl = 0 Then
MsgBox "Die Datenquelle ist leer."
Exit Sub
End If
.Destination = wdSendToNewDocument
For i = 1 To anzahl
.DataSource.ActiveRecord = i
dsname = Pfad & _
.DataSource.DataFields(FeldVName).Value & "_" & .DataSource.DataFields(FeldXName) & "_" & . _
DataSource.DataFields(FeldNName) & ".pdf"
.DataSource.FirstRecord = i
.DataSource.LastRecord = i
.Execute
ActiveDocument.Range.Find.Execute FindText:="^b", replacewith:=""
SaveAsPDF (dsname)
ActiveDocument.Close (wdDoNotSaveChanges)
Next i
.DataSource.FirstRecord = 1
End With
Application.ScreenUpdating = True
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Serienbrief Bezug zu Datenquelle mit VBA
15.05.2019 09:21:38
SF
Hola,
verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke.
Gruß,
steve1da
;
Anzeige
Anzeige

Infobox / Tutorial

Serienbrief mit VBA: Datenquelle anpassen und Fehler beheben


Schritt-für-Schritt-Anleitung

Um einen Serienbrief mit einer Excel-Datenquelle in Word zu erstellen, gehe wie folgt vor:

  1. Datenquelle in Excel vorbereiten: Stelle sicher, dass die Excel-Tabelle korrekt formatiert ist. Die erste Zeile sollte die Spaltenüberschriften enthalten.

  2. Word-Dokument erstellen: Öffne ein neues Word-Dokument und gehe zu Sendungen > Seriendruck starten > Briefe.

  3. Datenquelle verbinden:

    • Klicke auf Empfänger auswählen > Vorhandene Liste verwenden.
    • Wähle die Excel-Datei aus, die Deine Datenquelle enthält.
  4. Serienbrief erstellen: Füge die entsprechenden Platzhalter für die Daten in das Dokument ein (z.B. FeldVName, FeldNName).

  5. VBA-Makro anpassen: Nutze den bereitgestellten VBA-Code, um den Serienbrief automatisiert in PDFs zu speichern. Achte darauf, den Pfad zur Datenquelle korrekt anzugeben.

  6. Makro ausführen: Drücke F5, um das Makro auszuführen und die PDFs zu generieren.


Häufige Fehler und Lösungen

  • Laufzeitfehler '5631':

    • Problem: Dieser Fehler tritt auf, wenn Word nicht auf die Datenquelle zugreifen kann.
    • Lösung: Überprüfe, ob alle Datensätze in der Excel-Tabelle ausgefüllt sind und ob die Verknüpfung zur Datenquelle korrekt ist.
  • Datenquelle nicht gefunden:

    • Problem: Die Excel-Datei wurde verschoben oder umbenannt.
    • Lösung: Stelle sicher, dass die Datenquelle an dem angegebenen Ort verfügbar ist und die Datei nicht umbenannt wurde.

Alternative Methoden

Falls Du eine andere Methode zur Verwaltung Deiner Datenquelle für den Serienbrief suchst, kannst Du folgende Ansätze in Betracht ziehen:

  • Direkte Bearbeitung in Word:

    • Du kannst die Datenquelle direkt in Word bearbeiten, indem Du in der Empfängerliste die gewünschten Datensätze auswählst und die Änderungen vornimmst.
  • Verwendung von Access:

    • Wenn Du komplexere Daten verwalten möchtest, könnte eine Datenbank in Access die bessere Wahl sein. Hier kannst Du Abfragen erstellen und die Daten effizienter verwalten.

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du die wdLastRecord-Konstante in Deinem Makro nutzen kannst:

.DataSource.ActiveRecord = wdLastRecord

Dieses Beispiel setzt den Fokus auf den letzten Datensatz der Datenquelle für den Serienbrief. Achte darauf, dass Du die Makros an Deine spezifischen Anforderungen anpasst, um die gewünschten Ergebnisse zu erzielen.


Tipps für Profis

  • Datenquelle aktualisieren: Wenn Du Änderungen in Deiner Excel-Datenquelle vornimmst, stelle sicher, dass Du den Word Serienbrief aktualisierst, um die neuen Daten zu laden. Gehe dazu zu Sendungen > Empfänger auswählen > Vorhandene Liste verwenden.

  • Makros automatisieren: Überlege, Deine VBA-Makros so zu gestalten, dass sie automatisch die neuesten Daten aus der Excel-Datenquelle abrufen, um Zeit zu sparen.


FAQ: Häufige Fragen

1. Wie kann ich die Datenquelle für meinen Serienbrief ändern? Du kannst die Datenquelle ändern, indem Du in Word zu Sendungen > Empfänger auswählen > Vorhandene Liste verwenden gehst und die neue Excel-Datei auswählst.

2. Was ist der Unterschied zwischen wdLastRecord und FirstRecord? wdLastRecord bezieht sich auf den letzten Datensatz in Deiner Datenquelle, während FirstRecord den ersten Datensatz angibt. Diese Konstanten sind nützlich, um den Bereich der Datensätze, die Du verarbeiten möchtest, zu steuern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige