Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel mit VBA verschiedene Serienbriefe erstellen

Excel mit VBA verschiedene Serienbriefe erstellen
01.02.2019 10:29:15
Anja
Hallo Ihr Lieben,
ich stehe vor folgender Problematik:
Habe in Word 3 verschiedene Serienbriefe und dazu eine einzige Excelliste.
Je nachdem welche Zahl in der Excel-Spalte A steht (1, 2 oder 3) möchte ich automatisch aus der entsprechende Word-Datei (SB1, SB2, SB3) die Serienbriefe erzeugen.
Da die Serienbriefe für jeden Eintrag ein einzelnes Word-Dokument ausgegeben sollen, habe ich _
hierfür schon einen super funktionierenden VBA-Code, den ich bisher in Word ausführe:

Sub aaaaSerienbrief()
' set variables
Dim iBrief As Integer, sBrief As String
Dim AppShell As Object
Dim BrowseDir As Variant
Dim Path As String
' catch any errors
On Error GoTo ErrorHandling
' determine path
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Speicherort für Serienbriefe auswählen", 0, 16) _
_
_
_
If BrowseDir = "Desktop" Then
Path = CreateObject("WScript.Shell").SpecialFolders("Desktop")
Else
Path = BrowseDir.items().Item().Path
End If
If Path = "" Then GoTo ErrorHandling
Path = Path & "\Serienbrief-" & Format(Now, "dd.mm.yyyy-hh.mm.ss") & "\"
MkDir Path
On Error GoTo ErrorHandling
' hide application for better performance
MsgBox "Serienbriefe werden exportiert. Dieser Vorganag kann einige Minuten dauern -  _
Microsoft Word wird während dieser Zeit ausgeblendet", vbOKOnly + vbInformation
Application.Visible = False
' create bulkletter and export as docx
With ActiveDocument.MailMerge
.DataSource.ActiveRecord = 1
Do
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = .ActiveRecord
.LastRecord = .ActiveRecord
sBrief = Path & .DataFields("ID").Value & ".docx"
End With
.Execute Pause:=False
If .DataSource.DataFields("ID").Value > "" Then
ActiveDocument.SaveAs FileName:=sBrief, FileFormat:=wdFormatdocx
End If
ActiveDocument.Close False
If .DataSource.ActiveRecord  0 Then
MsgBox "Unbekannter Fehler: " & Err.Number & " - Bitte Makro erneut ausführen.",  _
vbOKOnly + vbCritical
Else
MsgBox "Serienbriefe erfolgreich exportiert", vbOKOnly + vbInformation
End If
End Sub

Damit auch meine Kollegen davon profitieren, möchte ich gerne einen Button in die Excelliste setzen, den sie nur noch anklicken müssen und dann werden automatisch die Serienbriefe erstellt (also auch gleich für alle Werte (1, 2 und 3) in Spalte A).
Über Hilfe würde ich mich unglaublich freuen!!
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel mit VBA verschiedene Serienbriefe erstellen
01.02.2019 13:29:12
Anja
Ist es überhaupt möglich, einen Word VBA-Code in Excel zu übernehmen?
AW: Excel mit VBA verschiedene Serienbriefe erstellen
01.02.2019 15:02:19
Niclaus
Hallo Anja
"einen Word VBA-Code in Excel zu übernehmen?" - Das weiss ich nicht. Aber man kann von Excel aus ein Word-Dokument, das ein Makro enthält, öffnen und dieses Word-Makro starten. Das Makro in Excel könnte lauten:
Sub open_word_mMakro()
Dim AppWD As Object
Set AppWD = CreateObject("Word.Application")
AppWD.Documents.Open "D:\TestWordDatei.docm"
AppWD.Visible = True
AppWD.Run "testmakro"
Set AppWD = Nothing
End Sub
Die Word-Datei "TestWordDatei.docm" enthält ein Makro "testmakro"
Ein Serienbrief-docm (mit Deinem Makro) zu öffnen und zu verarbeiten, ist mir nicht gelungen. - Der Serienbrief verliert immer die Verknüpfungen zur Excel-Tabelle. Es kommt dann jeweils Meldung, das Dokument sei kein Serien-Dokument . Woran das liegen mag?
Grüsse Niclaus
Anzeige
AW: Excel mit VBA verschiedene Serienbriefe erstellen
01.02.2019 15:29:25
Anja
Ja ich bekomme tatsächlich die gleiche Fehlermeldung wie du....
Ich habe im Internet noch irgendwas mmit dem Befehl "mailmerge.opendatasource" gefunden aber keine Ahnung was da steht, die schmeissen nur mit irgendwelchen VBA Codes um sich und als Laie kann man das gar nicht verstehen :((
AW: Excel mit VBA verschiedene Serienbriefe erstellen
05.02.2019 07:38:22
Anja
Ist hier niemand, der mir helfen kann? :(
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Serienbriefe mit Excel und VBA erstellen


Schritt-für-Schritt-Anleitung

Um einen Serienbrief aus Excel zu erstellen, der basierend auf Werten in einer Excel-Tabelle unterschiedliche Word-Dokumente generiert, kannst du die folgenden Schritte ausführen:

  1. Vorbereitung der Excel-Tabelle:

    • Stelle sicher, dass deine Excel-Tabelle eine Spalte (z.B. Spalte A) enthält, die die Werte 1, 2 oder 3 enthält, um die entsprechenden Serienbriefe auszuwählen.
  2. Erstellen des VBA-Codes in Excel:

    • Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Füge ein neues Modul ein (Einfügen > Modul) und kopiere den folgenden VBA-Code hinein:
    Sub SerienbriefeErstellen()
       Dim i As Integer
       Dim AppWD As Object
       Dim Doc As Object
       Dim Path As String
    
       ' Word-Anwendung starten
       Set AppWD = CreateObject("Word.Application")
       AppWD.Visible = True
    
       ' Durchlaufe die Excel-Daten
       For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
           Select Case Cells(i, 1).Value
               Case 1
                   Set Doc = AppWD.Documents.Open("D:\Pfad\zu\SB1.docx")
               Case 2
                   Set Doc = AppWD.Documents.Open("D:\Pfad\zu\SB2.docx")
               Case 3
                   Set Doc = AppWD.Documents.Open("D:\Pfad\zu\SB3.docx")
               Case Else
                   MsgBox "Ungültiger Wert in Zeile " & i
                   Exit For
           End Select
    
           ' Serienbrief generieren und speichern
           Doc.MailMerge.Execute
           Doc.SaveAs "D:\Speicherort\Serienbrief_" & i & ".docx"
           Doc.Close False
       Next i
    
       AppWD.Quit
       Set AppWD = Nothing
    End Sub
  3. Makro ausführen:

    • Schließe den VBA-Editor und gehe zurück zu Excel. Füge einen Button hinzu (Entwicklertools > Einfügen > Formularsteuerelemente).
    • Weisen dem Button das Makro SerienbriefeErstellen zu.
  4. Serienbriefe erstellen:

    • Klicke auf den Button, um den Prozess zu starten. Die Serienbriefe werden nun basierend auf den Werten in Spalte A erstellt.

Häufige Fehler und Lösungen

  • Fehler: "Dokument ist kein Serien-Dokument"

    • Lösung: Stelle sicher, dass die Word-Dokumente korrekt als Serienbriefe eingerichtet sind und die Datenquelle (Excel) richtig verknüpft ist.
  • Fehler: Ungültiger Wert

    • Lösung: Überprüfe die Werte in der Excel-Tabelle, um sicherzustellen, dass sie nur 1, 2 oder 3 sind.
  • Fehler beim Öffnen von Word-Dokumenten

    • Lösung: Stelle sicher, dass der Dateipfad korrekt ist und die Dokumente existieren.

Alternative Methoden

Falls du keinen VBA-Code verwenden möchtest, kannst du auch die Seriendruckfunktion in Word nutzen, indem du die Excel-Datei als Datenquelle verwendest. Gehe dabei wie folgt vor:

  1. Öffne Word und gehe zu Sendungen > Seriendruck starten > Briefe.
  2. Wähle Empfänger auswählen > Vorhandene Liste verwenden und wähle deine Excel-Datei aus.
  3. Füge die gewünschten Platzhalter in dein Dokument ein und beende den Seriendruck.

Praktische Beispiele

  • Beispiel für den Seriendruck: Wenn du in deiner Excel-Datei in Spalte A die Werte 1, 2 und 3 hast, kannst du mit dem obigen VBA-Code automatisch die entsprechenden Word-Dokumente (SB1, SB2, SB3) erstellen und speichern.

  • Speicherort für die Serienbriefe: Der Speicherort kann im VBA-Code angepasst werden, um die Serienbriefe an einem gewünschten Ort zu speichern.


Tipps für Profis

  • Optimierung des Codes: Überlege, Fehlerbehandlungen zu integrieren, um unerwartete Probleme besser zu handhaben.

  • Verwendung von Variablen: Du kannst Variablen für Dateipfade und Dokumentnamen definieren, um den Code flexibler und leichter wartbar zu machen.

  • Automatisierung: Wenn du regelmäßig Serienbriefe erstellen musst, denke daran, den Prozess zu automatisieren, indem du eine Benutzeroberfläche in Excel erstellst.


FAQ: Häufige Fragen

1. Ist es möglich, einen Word VBA-Code in Excel zu verwenden? Ja, du kannst von Excel aus ein Word-Dokument öffnen und ein Makro in diesem Dokument ausführen.

2. Wie kann ich sicherstellen, dass die Seriendruckverknüpfungen in Word korrekt sind? Stelle sicher, dass du die Excel-Datei als Datenquelle in Word korrekt verknüpfst, bevor du mit dem Seriendruck beginnst.

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