Probleme Serienbrief aus Excel in Word
10.02.2022 19:07:56
Julian
ich habe ein Problem mit meinem Code, aus meiner Tabelle einen Serienbrief im Word zu erstellen.
Hier der Code, Erklärung danach:
Private Const strDatenQuelle As String = "XXX.xlsm"
Private Const strWordVorlage As String = "XXXSerienbrief.docx"
Sub Serienb()
' Im Excel VBA-Editor muss vorher für die Datei mit diesem Makro unter Extras-Verweise
' den Verweis auf die Microsoft Word x.y Object Library aktiviert werden!!
Dim WinWord, WinDoc As Word.Document, docSerienbrief As Word.Document
Dim sFile As String, strCon As String
sFile = strWordVorlage
Set WinWord = CreateObject("Word.Application")
With WinWord
.Visible = True
' Vorlagedatei öffnen
Set WinDoc = .Documents.Open(sFile)
With WinDoc
With .MailMerge
' Datenquelle öffnen
.OpenDataSource Name:=strDatenQuelle, _
ConfirmConversions:=False, _
LinkToSource:=True, _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Provider=Microsoft.Jet.OLEDB.4.0;" _
& "User ID=Admin;" _
& "Data Source=" & strDatenQuelle & ";" _
& "Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";" _
& "Jet OLEDB:System database="""";" & "Jet OLEDB:Registry Path="""";" _
& "Jet OLEDB:Engine ", _
SQLStatement:="SELECT * FROM `Tabelle2$`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
' Serienbrief mit allen Daten im neuen Dokument erstellen
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
Set docSerienbrief = WinWord.ActiveDocument
' Datenquelle wieder schliessen
.DataSource.Close
End With
' Vorlagedatei wieder schliessen
.Close Savechanges:=False
End With
' Serienbrief - Drucken - Seitenvorschau
'docSerienbrief.Application.WindowState = wdWindowStateMinimize
'If MsgBox("Serienbrief Drucken ?", vbYesNo + vbQuestion, _
' "Serienbrief-Erstellung - Drucken - Seitenvorschau") = vbYes Then
' docSerienbrief.Application.WindowState = wdWindowStateMaximize
' docSerienbrief.PrintPreview
' docSerienbrief.PrintOut
'End If
' Serienbrief - Speichern
docSerienbrief.Application.WindowState = wdWindowStateMinimize
If MsgBox("Serienbrief Speichern ?", vbYesNo + vbQuestion, _
"Serienbrief-Erstellung-Speichern") = vbYes Then
docSerienbrief.Application.WindowState = wdWindowStateMaximize
docSerienbrief.Application.Dialogs(wdDialogFileSaveAs).Show
End If
docSerienbrief.Application.WindowState = wdWindowStateMaximize
End With
Set docSerienbrief = Nothing
Set WinWord = Nothing
Set WinDoc = Nothing
End Sub
Im Fett markierten Bereich kommt die Fehlermeldung: Die Zeichenfolge ist länger als 255 Zeichen.Ich werde nicht schlau daraus. Hat jemand ein solches Problem schonmal gehabt? Habe ich irgendwelche Verweise nicht aktiviert?
Anzeige