With ActiveDocument.MailMerge
.DataSource.ActiveRecord = 1
würde daraufhin deuten das bereits eine Exceldatei als Datenquelle im Worddokument angelegt ist. Sonst müsstest du die erst dort anlegen. Siehe deine Fehlermeldung.
Hier ist Activedocument auch eine mögliche Fehlerquelle. Gerade wenn man etwas herumprobiert und dann eine andere Datei das Activedocument ist. Z.b ein gerade erstellte Worddatei aus den Serienbriefdocument.
Befindet sich der VBA Code in dem Serienbrief? Dann verwende lieber Thisdocument und nicht Activedocument.
Als Beispiel habe ich hier ein Teil aus einem Makro das in Excel läuft. Die beteiligten Dateien werden in Variablen gelesen. Der Brief wird geöffnet und eine Datenquelle zugeordnet. Das brauch man natürlich nicht wenn die Datenquelle schon eingebunden ist.
strDatenquelle = ThisWorkbook.Path & "\Datenquelle.xlsx" 'anpassen
strWordvorlage = ThisWorkbook.Path & "\Serienbrief.docx" 'Anpassen
PDFpath = ThisWorkbook.Path & "\" ' 'anpassen
Set objWinword = New Word.Application
With objWinword
.Visible = False
Set WinDoc = .Documents.Open(strWordvorlage)
With WinDoc.MailMerge
.OpenDataSource _
Name:=strDatenquelle, _
ConfirmConversions:=False, _
ReadOnly:=False, _
LinkToSource:=True, _
AddToRecentFiles:=False, _
PasswordDocument:="", _
PasswordTemplate:="", _
WritePasswordDocument:="", _
WritePasswordTemplate:="", _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Provider=Microsoft.ACE.OLEDB.12.0;" & _
"User ID=Admin;" & _
"Data Source=" & strDatenquelle & ";" & _
"Mode=Read;" & _
"Extended Properties="""";" & _
"Jet OLEDB:System database="""";" & _
"Jet OLEDB:Registry Path="""";" & _
"Jet OLEDB:Engine Type=5;" & _
"Jet OLEDB:Database", _
SQLStatement:="SELECT * FROM `B1RDSL$`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
|