Serienbrief von EXCEL nach Word
Guten Abend ins Forum. Auf der Suche nach einem geeigneten VBA Kode für eine Serienbrieffunktion bin ich hier fündig geworden. Habe den Kode bei meiner EXCEL Datei in ein Modul eingefügt und wie ich glaube die entsprechenden Pfade abgestimmt. Bis dahin läuft auch alles, er meckert bei folgender Codezeile " With ThisDocument.MailMerge" mit dem Fehlertext: Laufzeitfehler 424, Objekt erforderlich. Könnte mich jemand bei der Fehlerkorrektur unterstützen? Danke, Mark
Sub MailMergeSaveAsSingleDocs()
Dim strDatenquelle As String, i As Long, strFilenameDOCX As String, strFilenamePDF As String
' Ausgabepfad
' Const outputpath = "C:\Daten\output"
Const outputpath = "C:\Users\Besitzer\Desktop\Dokument1.docx"
' Datenquelle
strDatenquelle = "C:\Users\Besitzer\Desktop\5ter Serienbrief.xlsm" ' "D:\Daten\datenquelle.xlsx"
'Screenupdating deaktivieren
Application.ScreenUpdating = False
With ThisDocument.MailMerge
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 521245
Url: https://administrator.de/contentid/521245
Ausgedruckt am: 25.11.2024 um 22:11 Uhr
10 Kommentare
Neuester Kommentar
Moin,
hast Du den VBA-Code schon mal in Word probiert? Der Seriebrief wird ja in Word generiert und die Excel-Tabelle nur als Datenquelle verwendet.
Außerdem ist in Zeile 05 der Ausgabepfad kein Pfad sondern eine Datei, dass dürfte auch nicht funktionieren - dort also ein Verzeichnis angeben.
Gruß
cykes
hast Du den VBA-Code schon mal in Word probiert? Der Seriebrief wird ja in Word generiert und die Excel-Tabelle nur als Datenquelle verwendet.
Außerdem ist in Zeile 05 der Ausgabepfad kein Pfad sondern eine Datei, dass dürfte auch nicht funktionieren - dort also ein Verzeichnis angeben.
Gruß
cykes
Hi,
da hast Du meine obige Anmerkung bezüglich des Pfads ebenfalls nicht umgesetzt. Außerdem hättest Du mal die Quelle angeben können (>dieser Thread<). Natürlich kannst Du nicht einfach alles 1:1 kopieren, das muss schon Deiner Office-Version, sowie Deinen Randbedingungen angepasst werden. Vor 2,5 Jahren war das bestimmt noch eine andere Office-Version als die von Dir verwendete.
Versuch doch erstmal den Code von @colinardo zu verstehen anstatt ihn einfach nur zu kopieren und auszuführen, was in Deiner Umgebung auch schieflaufen muss.
Gruß
cykes
da hast Du meine obige Anmerkung bezüglich des Pfads ebenfalls nicht umgesetzt. Außerdem hättest Du mal die Quelle angeben können (>dieser Thread<). Natürlich kannst Du nicht einfach alles 1:1 kopieren, das muss schon Deiner Office-Version, sowie Deinen Randbedingungen angepasst werden. Vor 2,5 Jahren war das bestimmt noch eine andere Office-Version als die von Dir verwendete.
Versuch doch erstmal den Code von @colinardo zu verstehen anstatt ihn einfach nur zu kopieren und auszuführen, was in Deiner Umgebung auch schieflaufen muss.
Gruß
cykes
Kürze in Zeile 7 den String in der Variable soweit wie möglich.
Ferner stelle sicher, dass der ohne Leerzeichen auskommt.
Folgendes ist ein ungeprüfter Ansatz mit dem Du Zeile 14 alternieren könntest:
Ich hab jetzt nicht getestet, ob RecordCount dann ebenfalls funktioniert, wenn man eine Excel-Datei nicht über einen OLE-Provider öffnet.
Ferner stelle sicher, dass der ohne Leerzeichen auskommt.
Folgendes ist ein ungeprüfter Ansatz mit dem Du Zeile 14 alternieren könntest:
.OpenDataSource bstrDataSource:="C:\tabelle.xlsm", bstrTable:="out_pub", fNeverPrompt:=True, fOpenExclusive:=True
Ich hab jetzt nicht getestet, ob RecordCount dann ebenfalls funktioniert, wenn man eine Excel-Datei nicht über einen OLE-Provider öffnet.
"C:\Users\Besitzer\Desktop\5ter_Serienbrief.xlsm"
Sieht mir ganz schwer nach Leerzeichen-Problem aus, da in Zeile 14 keine Anführungszeichen um den Pfad gesetzt sind beschwert sich der Interpreter über einen String größer als 255 Zeichen, logisch .Also Zeile 14 einfach noch weitere Anführungszeichen um den Pfad einbauen dann sollte er dort zufrieden sein:
.OpenDataSource Name:=strDatenquelle, Format:=wdOpenFormatAuto, Connection:="Provider=Microsoft.ACE.OLEDB.12.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 Type=37;Jet OLEDB:Database Locking Mode=0;Jet OL", SQLStatement:="SELECT * FROM `Tabelle1$`", SQLStatement1:="", SubType:=wdMergeSubTypeAccess
Zitat von @mark47:
Danke, mit dem Einbauen weiterer Anführungszeichen läuft der Prozess weiter stockt allerdings mit folgender Fehlermeldung in Zeile 14:
Laufzeitfehler 438, Objekt unterstützt diese Methode oder Eingenschaft nicht. Hat da vielleicht noch jemand eine Lösung für mich parat?
Hast Du den outputpath inzwischen korrekt zugewiesen? Oder steht der nach wie vor auf "C:\Users\Besitzer\Desktop\Dokument1.docx" ?Danke, mit dem Einbauen weiterer Anführungszeichen läuft der Prozess weiter stockt allerdings mit folgender Fehlermeldung in Zeile 14:
Laufzeitfehler 438, Objekt unterstützt diese Methode oder Eingenschaft nicht. Hat da vielleicht noch jemand eine Lösung für mich parat?
.SaveAs2 OUTPUTPATH & "\" & strFilenameDOCX
Das geht nämlich nicht, da das einen Datei und kein Pfad ist. Also auf bspw. "C:\Users\Besitzer\Desktop" kürzen, dann sollte es klappen.
Gruß
cykes
Tja das kommt vom stumpfen Copy n Paste und ohne Verstand und Beitrag lesen, zumal sich der User ja extra die Zeit genommen hat jede Zeile extra noch mit einem Kommentar zu versehen 🙄....
Das ist schon mal ein Anfang, aber hast Du den Code und unsere Hinweise auch verstanden?
Vielleicht wäre es besser, wenn Du etwas kleiner anfängst mit einer kleineren Datenquelle mit bspw. 5 Adressen, den Code neu schreibst und Dich dann langsam hochhangelst. So lernst Du etwas dabei.
Mit der aktuellen Vorgehensweise hast Du nach einiger Zeit vergessen, woran es nun genau gehangen hat und kannst nicht mehr nachvollziehen, was Du genau wo anpassen musst.
Gruß
cykes
Ich verwende Office 2007 und die Microsoft Word x.y Object Library kann bei mir nicht aktiviert werden, weil nicht vorhanden. Kann das vielleicht
ein Hemmnis sein?
Dann läuft der OLE-Aufruf vermutlich schief.ein Hemmnis sein?
Weiterhin hatte ich den Pfad korrigiert, der Fehler erscheint aber weiterhin unverändert. Was ich jetzt auch nicht verstehe ist, das ein Serienbrief1 aktiviert wird, den ich aber nirgends anvisiere?
Sei mir nicht böse, aber so wird das nichts, wir sehen hier nicht was Du wo genau tust und nur anhand der Fehlemeldungen lässt sich die Ursache aus der Ferne nicht ermitteln. Auch kennen wir den Inhalt Deiner Dateien (Datenquelle und Word-Datei nicht, inbesondere ob die Feldnamen korrekt sind und die Daten auch in den korrekten Spalten/Zeilen stehen) nicht.Vielleicht wäre es besser, wenn Du etwas kleiner anfängst mit einer kleineren Datenquelle mit bspw. 5 Adressen, den Code neu schreibst und Dich dann langsam hochhangelst. So lernst Du etwas dabei.
Mit der aktuellen Vorgehensweise hast Du nach einiger Zeit vergessen, woran es nun genau gehangen hat und kannst nicht mehr nachvollziehen, was Du genau wo anpassen musst.
Gruß
cykes