Office: (Office 2010) Serienbriefe einzeln speichern

Helfe beim Thema Serienbriefe einzeln speichern in Microsoft Word Hilfe um das Problem gemeinsam zu lösen; Hallo Mirko, zum Filtern: wir reden vom Dialogfeld Seriendruckempfänger, das du vor Start des Makros einrichtest, ja?. Dort brauchst du ein echtes... Dieses Thema im Forum "Microsoft Word Hilfe" wurde erstellt von AliceD, 24. September 2018.

  1. Gerhard H Erfahrener User

    Serienbriefe einzeln speichern


    Hallo Mirko,

    zum Filtern:

    wir reden vom Dialogfeld Seriendruckempfänger, das du vor Start des Makros einrichtest, ja?.

    Dort brauchst du ein echtes Filterkriterium. Du kannst nicht so filtern, wie dort angeboten, dass du z.B. im Feld "Nachname" alle abhakst und nur die letzten vier wieder an. Denn dann erscheint die von dir genannte Fehlermeldung.

    Du musst im gleichen Dialogfeld über Filtern gehen, und dort dein Kriterium angeben, dann läufts. Wenn du kein Kriterium hast, musst du dir temporär eins einrichten, indem du z.B. in deiner Datenquelle eine zusätzliche Spalte einrichtest, in der du die jeweils zu druckenden Datensätze mit einem x versiehst.

    Zum Export:

    Unter ExportAsFixedFormat ist nur PDF und XPS vorgesehen. Aber wenn du Activedocument.SaveAs2 verwendest, da gibts ein Dateiformat wdFormatOpenDocumentText.
     
    Gerhard H, 25. Januar 2022
    #16
  2. Tubben User
    Hallo Gerhard.

    Vielen Dank für die Antwort.

    Ich werde vor kommender Woche leider keine Zeit haben das nochmal zu prüfen, aber natürlich habe ich genau das gemacht, was Du geschrieben hast - Alles abhaken und nur die letzten 4 wieder angehakt.

    Jetzt habe ich das doch eben kurz ausprobiert, und natürlich funktioniert es jetzt ;-) Und über Filtern zu gehen ist kein Problem, die nötigen Kriterien sind in der Datenquelle vorhanden.

    Activedocument.SaveAs2 werde ich kommende Woche probieren, wenn ich irgendwie Zeit dafür freischaufeln kann.

    Vielen, vielen Dank für Deine Hilfe, das wird mir in Zukunft wirklich einiges an Arbeit abnehmen. Und von der Basis aus, kann ich evt. daran arbeiten ein Makro zu erstellen, des selbstständig nacheinander verschiedene Dateien öffnet (haben alle die gleiche Datenquelle) und mir die nötigen Serienbriefe erstellt. Sind immer 7 verschiedene Briefe pro Datensatz, die in unterschiedlichen Formaten gespeichert werden.

    Ich wünsche Dir ein schönes Wochenende und es ist schön, dass Menschen, wie Du, existieren!

    Beste Grüße,
    Mirko
     
  3. Hi Gerhard, ich versuche auch gerade deine Anleitung zu befolgen, aber leider funktioniert das bei mir auch nicht. Vielleicht kannst du mir auch helfen? Wenn ich versuche das Makro auszuführen, sagt er mir immer "Das angeforderte Element ist in der Sammlung nicht vorhanden." Allerdings bin ich auch fast komplett unerfahren mit Makros. Ich habe vor Jahren mal einen Kurs gemacht, aber ich weiß auch gar nicht mal, ob ich alle Zeilen von deinem Code oben exakt so kopiere und dann funktioniert es oder welche Felder ich austauschen muss.
    Zur Erklärung, ich habe 2 Dokumente. 1 Word Dokument mit dem Namen "Serienbrief" als .docm und als docx abgespeichert und eine Excel-Tabelle mit dem Namen "Originaldaten.xlsx" am Speicherort C:\Meine Dateien
    Ich nutze Word 2016.

    Ich hoffe, du kannst mir helfen,
    vielen Dank,
    viele liebe Grüße,
    Juliette
     
    jdillenburg, 3. November 2022
    #18
  4. Gerhard H Erfahrener User

    Serienbriefe einzeln speichern

    Hallo Juliette,

    versuch mal dies:

    Ersetze diese Zeile:
    Pfad = ThisDocument.Path
    durch
    Pfad = C:\Meine Dateien\"
    Vergiss den letzten Backslash nicht.

    Und ersetze diese Zeile:
    dateiname = Pfad & "\" & .DataSource.DataFields("Vorname").Value
    durch:
    dateiname = Pfad & .DataSource.DataFields("Vorname").Value
    Statt "Vorname" setzt du den Namen der Spalte ein, aus der du den Dateinamen generieren willst.

    Wenn es dann noch nicht klappt, geh den Code mit F8 im Einzelschritt durch, beobachte, in der der Fehler passiert. Teile die Zeile mit und den Wortlaut einer eventuellen Fehlermeldung.
     
    Gerhard H, 3. November 2022
    #19
  5. Hi Gerhard,

    wenn ich den Pfad in "Pfad = C:\Meine Dateien\" ändere, kommt sofort die Fehlermeldung: "Fehler beim Kompilieren: Erwartet: Zeilennummer oder Sprungmarke oder Anweisung oder Anweisungsende".

    Sobald ich jetzt versuche das Makro auszuführen, kommt natürlich der Fehler: "Fehler beim Kompilieren: Syntaxfehler".

    ... Weiter komme ich leider nicht Serienbriefe einzeln speichern :( Tausend Dank dir! Wenn ich das hin kriege, bin ich unfassbar glücklich!

    Liebe Grüße,
    Juliette
     
    jdillenburg, 4. November 2022
    #20
  6. Gerhard H Erfahrener User
    Sorry, Fehler beim Anführungszeichen:
    Pfad = "C...."
     
    Gerhard H, 4. November 2022
    #21
  7. Meeega geil!! Es hat funktioniert :))))) Jetzt hab ich noch eine letzte Frage. Was müsste ich tun/ergänzen im Code, wenn ich mal nur bestimmte Zeilen aus einer Excel ausspucken wollte? Zum Beispiel, wenn ich Zeile 10-25 und Zeile 46-88 (neu) abspeichern will?
     
    jdillenburg, 4. November 2022
    #22
  8. Gerhard H Erfahrener User

    Serienbriefe einzeln speichern

    Dann geh so vor: Füge deiner Datenquelle eine zusätzliche Spalte "Druck" hinzu, wo du jeden zu druckenden Datensatz mit einem X versiehst. Filtere dann über Sendungen > Empfänger auswählen nach diesem x, bevor du das Makro startest. Siehe auch Beitrag 16 hier.
     
    Gerhard H, 4. November 2022
    #23
  9. Vielen herzlichen Dank! Ich werde das später ausprobieren. Viele Grüße, Juliette
     
    jdillenburg, 7. November 2022
    #24
  10. ArneL Neuer User
    Hi Gerhard,

    ich bin ebenfalls auf deinen Code gestoßen, weil er genau mein Problem löst.

    Nachdem ich den Code nun ausprobiert habe, funktioniert so weit erst einmal alles (das Makro startet, erstellt die Dateien mit dem gewünschten Namen und Inhalt, die Dateien werden dort gespeichert, wo sie gespeichert werden sollen).

    Wenn das Makro aber die 25 vorhandenen Datensätze als Dokumente gespeichert hat, macht es mir noch ein 26. Dokument auf und gibt die Fehlermeldung "Laufzeitfehler '4198' Befehl misslungen" aus.

    Ein Klick auf Debuggen verrät mir, dass der Fehler diese Zeile betrifft: .SaveAs FileName:=dateiname & ".docx", AddToRecentFiles:=False

    Ich habe in meiner Datenquelle (Excel-Tabelle) alle leeren Zellen gelöscht (komplette Zelle, nicht nur den Inhalt). Der Fehler sieht für mich danach aus, als würde das Makro gern mit einem 26., nicht vorhandenen, Datensatz ein Dokument erstellen, was nicht klappt, weil ".docx" allein kein gültiger Dateiname ist.

    Da meine gesamten VBA Kenntnisse aus 'learning-by-doing' entstanden sind, bin ich nun mit meinem Latein am Ende.

    Ich hoffe, dass du noch aktiv bist und mir bei dem Problem helfen kannst!

    LG Arne
     
    ArneL, 10. Mai 2023
    #25
  11. ArneL Neuer User
    P.S.: Wäre es auch möglich, in den Code einzubetten, dass beim Ausführen des Makros zuerst ein neuer Ordner im Verzeichnis des Serienbrief-Dokumentes erstellt wird, in welchem dann die einzelnen Dokumente abgespeichert werden?
    Derzeit habe ich einen Dateipfad zu einem dedizierten Ordner eingebettet, allerdings muss ich das Dokument nach jeder Änderung im Code neu signieren lassen. Ein neu erstellter Ordner im selben Verzeichnis würde dieses Problem (zumindest nach meiner Vorstellung) umgehen...
    Sollte man dann auch noch automatisch das aktuelle Datum in den Namen des Ordners integrieren können, wäre das das I-Tüpfelchen. LG!
     
    ArneL, 10. Mai 2023
    #26
  12. Gerhard H Erfahrener User
    Hallo Arne,

    zur Fehlersuche:
    Ich würde ja auch auf die Datenquelle tippen. Aber offenbar hast du sie ja schon bereinigt. Wenn ich dich richtig interpretiere, hast du auch schon per Debug.Print oder MsgBox geprüft, was sich für die Nr. 26 als Dateiname ergibt (d.h. er ist leer?).

    Vielleicht hilft es was, wenn du deine Daten ausschneidest und in eine neue Excel-Tabelle einfügst. Wenn nicht, würde mir eine schmutzige Lösung einfallen: Unmittelbar unter der Zeile, in der der Dateiname zusammengesetzt wird, eine Abbruchbedingung einfügen:
    if dateiname = "" then exit sub
    Die Datenquelle dürfte dann natürlich in der namensgebenden Spalte nicht mittendrin eine leere Zelle enthalten.

    Zum Ordner:
    Du meinst: Immer wenn das Makro aufgerufen wird, muss ein neuer Ordner erstellt werden? Das geht schon, aber du musst natürlich sicherstellen, dass der neue nicht so heißt wie ein bereits vorhandener.
    Eine einfache halbautomatische Variante sähe so aus, dass ein vorgeschaltetes Makro erst nach dem gewünschten Ordnernamen fragt, dann die vorhandenen Ordner durchschleift und den gewünschten Ordner nur erstellt, wenn es ihn noch nicht gibt. Es müsste auch noch eine Prüfung auf nicht erlaubte Zeichen im Dateinamen erfolgen, die hab ich mir aber momentan erspart. Im positiven Fall wird das Seriendruckmakro automatisch aufgerufen.

    Hier die beiden Makros (das bisherige musste ich anpassen):
    Code:
    Sub machOrdner()
    Dim fso As Object, Hauptordner As Object, Unterordner As Object
    Dim neuerOrdner As String
    
    neuerOrdner = InputBox("Neuen Ordnernamen eingeben - Datum wird automatisch angehängt") & Format(Date, "yyyy_MM_dd")
    
    Set fso = CreateObject("Scripting.filesystemObject")
    Set Hauptordner = fso.getfolder(ThisDocument.Path)
     
        For Each Unterordner In Hauptordner.subfolders
                If Unterordner.Name = neuerOrdner Then
                    MsgBox Hauptordner & Application.PathSeparator & neuerOrdner & " existiert schon! " _
                    & vbLf & "Bitte neuen Namen ausdenken"
                    Exit Sub
                End If
        Next Unterordner
    
    fso.createfolder Hauptordner & Application.PathSeparator & neuerOrdner
    Call JederDatensatz1Datei(Hauptordner & Application.PathSeparator & neuerOrdner)
    End Sub
    
    
    Sub JederDatensatz1Datei(pfad)
    '*****dieses Makro vom Seriendruck-Hauptdokument aus laufen lassen (statt Dokumente zusammenführen)*********
    
    Dim i As Long, anzahl As Long
    Dim dateiname As String
    
    With ActiveDocument.MailMerge
            If .MainDocumentType = wdNotAMergeDocument Then
               MsgBox "Das Dokument ist noch nicht mit einer Seriendruckquelle verbunden." & vbLf & _
               "Bitte nachholen."
               Exit Sub
            End If
       
        'Anzahl Datensätze feststellen, Abbruch bei 0
        .DataSource.ActiveRecord = wdLastDataSourceRecord
        anzahl = .DataSource.ActiveRecord
            If anzahl = 0 Then
                MsgBox "Es wurden keine Datensätze gefunden."
                Exit Sub
            End If
     
        'beginnen mit dem ersten Datensatz
        .DataSource.ActiveRecord = 1
        .Destination = wdSendToNewDocument
       
            For i = 1 To anzahl
              .DataSource.ActiveRecord = i
             
              'Speicherpfad und Dateiname:
              dateiname = pfad & Application.PathSeparator & .DataSource.DataFields("Vorname").Value '***Anpassen
       
              'macht dem Seriendruck vor, dass es bei jedem Durchgang nur 1 Datensatz gibt
              .DataSource.FirstRecord = i
              .DataSource.LastRecord = i
              .Execute
           
              With ActiveDocument
                  'Schönheitssache: löscht den abschließenden Abschnittsumbruch
                  .Range.Find.Execute findtext:="^b", replacewith:=""
                 
                  'Speichern als .docx
                  '.SaveAs FileName:=dateiname & ".docx", AddToRecentFiles:=False
                  '.Close
                 
                  ' oder speichern als pdf
                  ActiveDocument.ExportAsFixedFormat OutputFileName:= _
                  dateiname & ".pdf", ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
                  .Close savechanges:=False
              End With
               
                'Verschnaufpause für Windows
                If i Mod 20 = 1 Then DoEvents
               
            Next i
           
        .DataSource.FirstRecord = 1
    End With
    MsgBox anzahl & " Dateien erstellt."
    End Sub
     
    Gerhard H, 10. Mai 2023
    #27
  13. ArneL Neuer User

    Serienbriefe einzeln speichern

    Hallo Gerhard,

    tausend Dank für deine schnelle Antwort und deine Hilfe! Die Datei und das Makro funktionieren nun genau so, wie ich es mir vorgestellt habe.

    Zur Fehlersuche:
    Es hat etwas gedauert, aber ich habe nach ein wenig hin und her und einigen Testdatenbanken das Problem beheben können.
    Ich kann nicht mit 100%iger Sicherheit sagen, dass es tatsächlich etwas damit zu tun hatte, aber nachdem ich alle Datensätze manuell in eine neue Excel-Tabelle eingepflegt habe (kopieren der genutzten Zellen mit oder ohne Formatierung funktionierte nicht), erhalte ich keine Fehlermeldung mehr.

    Zum Ordner:
    Klappt genau wie gewünscht!

    Du hast mir eine Menge Arbeit und vermutlich in diesem Zusammenhang auch Verzweiflung erspart!

    LG Arne
     
    ArneL, 11. Mai 2023
    #28
  14. Servus,
    ich war gerade auf der Suche nach einer Lösung um Serienbriefe einzeln zu speichern.
    der Post (Office 2010) - Serienbriefe einzeln speichern hat mir da sehr weitergeholfen. Der VBA-Eintrag funktioniert 1a. Ich hätte jetzt nur noch ne Frage zum Speicherort.

    Aktuell ist da eingetragen: dateiname = Pfad & "" & .DataSource.DataFields("Personalnummer").Value 'hier das gewünschte Feld nehmen

    Kann ich den Pfad auch umstellen, dass das Data.Source.DataFields("Personalnummer") am Anfang steht und dann erst der Pfad? Und falls ja, wie :)

    Besten Dank im Voraus.
    Gruß
    Max
     
    LordHelmchen, 24. Juli 2023
    #29
  15. Gerhard H Erfahrener User
    Hallo Max,

    üblicherweise besteht ein Pfad aus Laufwerk:\Ordner\Dateiname und wenn du da die Reihenfolge umstellst, produzierst du bestenfalls eine Fehlermeldung namens "Pfad nicht gefunden" o.ä. Was hast du vor? Was hab ich da falsch verstanden?
     
    Gerhard H, 24. Juli 2023
    #30
Thema:

Serienbriefe einzeln speichern

Die Seite wird geladen...
  1. Serienbriefe einzeln speichern - Similar Threads - Serienbriefe einzeln speichern

  2. VBA Serienbrief in einzelne Ordner speichern

    in Microsoft Word Hilfe
    VBA Serienbrief in einzelne Ordner speichern: Moin, ich habe ein Serienbriefdokument. Derzeit ist es möglich, mit VBA alle Dokumente nach Nachnamen und Vornamen aus der Excelquelle einzeln zu speichern. Ich würde nun gerne auch das die...
  3. VBA - Serienbriefe in einzelnen Dokumenten speichern

    in Microsoft Word Hilfe
    VBA - Serienbriefe in einzelnen Dokumenten speichern: Hallo, Ich möchte Serienbriefe mit Daten aus einem Excelsheet erstellen. Dann sollen die Briefe als einzelne Word-Dokumente in einem Ordner abgespeichert werden. Dazu soll ein Ordner, benannt...
  4. Serienbrief als einzelne Word-Dateien speichern

    in Microsoft Word Hilfe
    Serienbrief als einzelne Word-Dateien speichern: Hallo! Ich brauche mal eure Hilfe, und zwar möchte ich einen Serienbrief in Word erstellen, und zum Schluss beim Fertigstellen jeden einzelnen Brief als separate Word-Datei abspeichern. Ich...
  5. Serienbrief in einzelnen Dokumenten speichern

    in Microsoft Word Hilfe
    Serienbrief in einzelnen Dokumenten speichern: Hallo Gemeinde, leider versuche ich schon den ganzen Abend, ein Seriendokument in einzelnen Dateien zu speichern. Ich möchte die fertige Datei anschließend digital versenden. Ich habe es bisher...
  6. Serienbrief in einzelne Dateien Speichern

    in Microsoft Word Hilfe
    Serienbrief in einzelne Dateien Speichern: Wünsche allen einen guten Morgen, ich hatte für Word 2003 mal ein Makro, welches einen Serienbrief direkt in einzelne Dateien gespeichert hat. Leider war ich nicht so clever es als txt zu sichern...
  7. Serienbrief erstellen und Tabellen einzeln als Anhang einfügen

    in Microsoft Word Hilfe
    Serienbrief erstellen und Tabellen einzeln als Anhang einfügen: Hallo alle zusammen, ich habe folgendes Projekt bekommen und suche zur Zeit einen Lösungsansatz (keinen vollständigen Code): Es gibt eine Excel-Tabelle mit mehreren Anlagen. Jede Anlage hat...
  8. Serienbrief in einzelne Dateien speichern

    in Microsoft Word Hilfe
    Serienbrief in einzelne Dateien speichern: Hallo! Ich habe folgendes Problem. Besteht die Möglichkeit die erstellten Serienbriefe in einzelne Dateien abzuspeichern. Beispiel: Serienbrief mit 10 Briefen erstellt nun...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden