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!!