Makro ausführen bei Serienbriefproduktion

Hei Programmiererfreunde :smile:
ich habe ein mächtiges Problem:

Ich programmiere kaum in VBA jetzt habe ich allerdings die Aufgabe bekommen ein Word Makro zu schreiben. Mein Problem:

Ich brauche ein Makro, das jedes mal beim erstellen eines Serienbriefes ausgeführt werden soll. Allerdings nicht nach der Erstellung aller Briefe, sondern nach jedem einzeln. Gibt es dafür eine Aktion (Ereignis)?

Zweitrangige Frage:
Ich möchte dann jedem Brief eine zweite Seite hinzufügen. Diese zwei Seiten sollen dann in einem PDF gespeichert werden.

Das Problem ist ja nun, dass die Serienbriefe ja immer in einem RIIIIIIEESIGEN Dokument zusammengefasst werden. Nun will ich aber die Dokumente einzeln in PDFs abspeichern.
Meine Idee wäre dass mit einem zweiten Makro zu erledigen, dass erst ausgeführt wird, wenn dann die Serienbriefe erstellt sind, die Seiten hinzugefügt worden sind usw. und in diesem Makro das ganze in einer schleife zu erledigen.

Tut mir leid, wenn ich jetzt ein wenig Stuss gefragt habe, aber wie gesagt, VBA ist nicht mein Gebiet und schon garnicht Word-VBA. :smile:
Hoffentlich kann mir jemand helfen!!!

Artur Hellmann

Hallo Artur,

Ich brauche ein Makro, das jedes mal beim erstellen eines
Serienbriefes ausgeführt werden soll. Allerdings nicht nach
der Erstellung aller Briefe, sondern nach jedem einzeln. Gibt
es dafür eine Aktion (Ereignis)?

Ich weiß das nicht, glaube es aber nicht.

Ich denke du mußt den Serienbrief komplett mit einem Makro erstellen, dann ginge das.

Ich möchte dann jedem Brief eine zweite Seite hinzufügen.
Diese zwei Seiten sollen dann in einem PDF gespeichert werden.

Das müßte das Makro auch können.

Gruß
Reinhard

Ich habe das Problem selbst gelöst.
Word hat Eventhandler für diesen Fall vordefiniert. Allerdings muss man diese erst freischalten.
Mein Lösungsweg:

Erstmal habe ich eine Klasse erzeugt (Class_Events) In diese schreibt man folgenden Quellcode:

Public WithEvents App as Word.Application

Damit erstellt man eine Referenz mit dem Namen App (Name frei wählbar) des Objektes Word.Application.

Nun kann man oben im Fenster Links seine Referenz auswählen (in dem Fall App) und Rechts das benötigte Event.
Der Editor erstellt nun ein Sub, das den Handler vertritt wo man nun seinen Quellcode platzieren kann:

Private Sub App\_MailMergeAfterRecordMerge(ByVal Doc As Document) 
 MsgBox ("Hallo Welt!") 
End Sub

in diesem Fall gibt Word bei jedem Merge eines Datensatzes eine MsgBox mit dem Text „Hallo Welt!“ zurück.

Bevor Word dies als Sub für den Handler erkennt muss man allerdings seine Referenz mit dem Word.Application Objekt verbinden. Das geschieht in folgendem Quellcode, der in irgend einem Modul geschrieben werden kann:

Dim X As New Class\_Events 
Sub Register\_Event\_Handler() 
 Set X.App = Word.Application 
End Sub

Erstmal erstelle ich in diesem Modul eine Referenz auf meine Klasse (Dim Befehl). Danach schreibe ich mein Sub, in dem ich meine Referenz App mit dem Word.Application Objekt verbinde. Dieses Sub muss man beim Start von Word ausführen, damit es verbunden wird. Schon funktionieren die Events.

Das habe ich jetzt noch mal für alle reingestellt, die das gleiche Problem haben.

Artur