Word Serienbrief aus Excel starten
Hallo zusammen,
Ich habe da ein Problem, bei dem ich alleine leider nicht weiterkomme und um Eure Hilfe bitte.
Vor einiger Zeit habe ich mir einen VBA Code bauen lassen.
Dieser hat durch betätigen eines Buttons in Excel folgendes getan:
1. Öffnen der Quittung.docx (Pfad der Datei muss im VBA Code vorgegeben werden)
2. Ausführen der Serienbrieffunktion mit allen Daten der xlsm Datei
3. Speichern aller erzeugten Serienbriefe im PDF Format (alle Briefe in nur einer Datei, Ablageort muss wieder im VBA Code vorgegeben werden)
4. Speichern und automatisches (prozessbeendendes) schließen aller docx und der xlsm Dateien
Nun hat sich leider meine Excel Datenquelle verändert und seitdem funktioniert nichts mehr, was ich nicht verstehe, da die Exceldatenquelle ja im Code kaum erwähnt wird. Ich habe alles Mögliche ausprobiert, leider ohne Erfolg.
Der Code sieht folgender Maßen aus:
Ich stelle hier mal meine Beispieldateien zur Verfügung. Öffnet man die .xlsm Datei, geht es speziell um den Button "Quittungen erstellen".
So wie ich das verstehe, hat der Programmierer einen Zwischenschritt mit der result.docx eingebaut. In dieser Datei werden alle Serienbriefe erstellt und das benötigte PDF erzeugt. Die Frage ist nur, ob dieser Zwischenschritt überhaupt nötig ist und ob es vielleicht einfacher geht.
Im Moment funktioniert gar nichts mehr. Betätige ich den Button Quittungen erstellen, erfolgt ein langes laden und dann folgt die Fehlermeldung "Microsoft Excel wartet auf die Beendigung einer OLE-Aktion in einer anderen Anwendung"
Außerdem habe ich noch folgendes herausgefunden. Deklariere ich meine xlsm Datei in den Eigenschaften als schreibgeschützt, öffne sie dann und betätige den Button "Quittungen erstellen", dann läuft es durch. Nur hat das so keinen Nutzen für mich, da die Tabelle ja immer wieder mit neuen Namen befüllt wird und durch den Schreibschutz kein Speichern der neuen Daten möglich ist.
Ich tüftle nun schon seit Tagen und wäre sehr dankbar, wenn jemand helfen könnte.
Besten Dank
Gruß Stefan
Ich habe da ein Problem, bei dem ich alleine leider nicht weiterkomme und um Eure Hilfe bitte.
Vor einiger Zeit habe ich mir einen VBA Code bauen lassen.
Dieser hat durch betätigen eines Buttons in Excel folgendes getan:
1. Öffnen der Quittung.docx (Pfad der Datei muss im VBA Code vorgegeben werden)
2. Ausführen der Serienbrieffunktion mit allen Daten der xlsm Datei
3. Speichern aller erzeugten Serienbriefe im PDF Format (alle Briefe in nur einer Datei, Ablageort muss wieder im VBA Code vorgegeben werden)
4. Speichern und automatisches (prozessbeendendes) schließen aller docx und der xlsm Dateien
Nun hat sich leider meine Excel Datenquelle verändert und seitdem funktioniert nichts mehr, was ich nicht verstehe, da die Exceldatenquelle ja im Code kaum erwähnt wird. Ich habe alles Mögliche ausprobiert, leider ohne Erfolg.
Der Code sieht folgender Maßen aus:
Sub Quittungen_erstellen()
Dim wordfilepath As String
Dim resultpath As String
''''''''''' path of word and document
wordfilepath = "C:\Users\schub\Desktop\Quittung.docx"
resultpath = "C:\Users\schub\Desktop\result.docx"
pdffilepath = "C:\Users\schub\Desktop\Quittungen"
Dim wd As Object
Dim wdocSource As Object
Dim strWorkbookName As String
On Error Resume Next
Set wd = GetObject(, "Word.Application")
If wd Is Nothing Then
Set wd = CreateObject("Word.Application")
End If
On Error GoTo 0
Set wdocSource = wd.Documents.Open(wordfilepath)
strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name
'' Debug.Print strWorkbookName
wdocSource.MailMerge.MainDocumentType = wdFormLetters
wdocSource.MailMerge.OpenDataSource _
Name:=strWorkbookName, _
AddToRecentFiles:=False, _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
SQLStatement:="SELECT * FROM `Pflege_Namen_Quittung$`"
With wdocSource.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
'wd.Visible = True
wd.ActiveDocument.SaveAs resultpath
wd.ActiveDocument.Close SaveChanges:=False
'Print the document as a PDF
wdocSource.Close SaveChanges:=False
Set wdocSource = wd.Documents.Open(resultpath)
'''closing of word and excel
wdocSource.ExportAsFixedFormat pdffilepath & ".pdf", 17
wdocSource.Close
ThisWorkbook.Saved = True
Application.Quit
End Sub
Ich stelle hier mal meine Beispieldateien zur Verfügung. Öffnet man die .xlsm Datei, geht es speziell um den Button "Quittungen erstellen".
So wie ich das verstehe, hat der Programmierer einen Zwischenschritt mit der result.docx eingebaut. In dieser Datei werden alle Serienbriefe erstellt und das benötigte PDF erzeugt. Die Frage ist nur, ob dieser Zwischenschritt überhaupt nötig ist und ob es vielleicht einfacher geht.
Im Moment funktioniert gar nichts mehr. Betätige ich den Button Quittungen erstellen, erfolgt ein langes laden und dann folgt die Fehlermeldung "Microsoft Excel wartet auf die Beendigung einer OLE-Aktion in einer anderen Anwendung"
Außerdem habe ich noch folgendes herausgefunden. Deklariere ich meine xlsm Datei in den Eigenschaften als schreibgeschützt, öffne sie dann und betätige den Button "Quittungen erstellen", dann läuft es durch. Nur hat das so keinen Nutzen für mich, da die Tabelle ja immer wieder mit neuen Namen befüllt wird und durch den Schreibschutz kein Speichern der neuen Daten möglich ist.
Ich tüftle nun schon seit Tagen und wäre sehr dankbar, wenn jemand helfen könnte.
Besten Dank
Gruß Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 389570
Url: https://administrator.de/contentid/389570
Ausgedruckt am: 21.11.2024 um 23:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Stefan,
Aus meiner Sicht funktioniert deine Excel Anwendung ganz gut sofern man die Daten nach links oben verschiebt beginnend mit A1.
Derzeit beginnen deine Daten in der Zelle B2, was für die Serienbrief-Funktion von Word nicht passt. Dadurch funktioniert auch die Zuordnung der Serienbrief-Felder nicht mehr.
Ggf. solltest du lieber die Schaltflächen woanders platzieren!
Viele Grüße
SeriousEE
Aus meiner Sicht funktioniert deine Excel Anwendung ganz gut sofern man die Daten nach links oben verschiebt beginnend mit A1.
Derzeit beginnen deine Daten in der Zelle B2, was für die Serienbrief-Funktion von Word nicht passt. Dadurch funktioniert auch die Zuordnung der Serienbrief-Felder nicht mehr.
Ggf. solltest du lieber die Schaltflächen woanders platzieren!
Viele Grüße
SeriousEE
Ich kann aus dem Screenshot den Fehler noch nicht erkennen. Kann man das aktualisierte Excel Dokument im Google Drive Ordner hinzufügen?
Ich habe im wesentlichen nur folgendes mit deinen Daten gemacht:
PS: Das ganze System reagiert sehr sensibel auf Namensänderungen. Im Screenshot ist zu sehen, dass das Excel Dokument jetzt 2_Namen_&_Quittungen.xlsm statt 1_Namen_&_Quittungen.xlsm heißt!
Ich habe im wesentlichen nur folgendes mit deinen Daten gemacht:
- Google Drive Daten herunterladen
- Word Dokument "Quittung.docx" geöffnet und Datenquelle auf mein Verzeichnis aktualisiert.
- Excel Dokument geöffnet:
- Markieren von B2 nach G8 und verschieben nach A1
- Alt + F11 -> 3x Pfade getauscht
- Ausführen
PS: Das ganze System reagiert sehr sensibel auf Namensänderungen. Im Screenshot ist zu sehen, dass das Excel Dokument jetzt 2_Namen_&_Quittungen.xlsm statt 1_Namen_&_Quittungen.xlsm heißt!