
Normalerweise benötigt man ja keine speziellen Makros um in Word-Serienbriefe zu drucken.
Wenn man allerdings jedes Dokument einzeln an den Drucker senden will (beispielsweise um es zu falzen oder zu lochen (was bei den meißten Druckern leider nur pro Druckauftrag und nicht pro Serienbrief geht)), muss man manuell etwas nachhelfen.
Im Folgenden also der Code, der es ermöglicht, in einem Word-Serienbrief jedes Dokument einzeln zu drucken, die gedruckte Datei als Word-Dokument abzuspeichern und dann mit dem nächsten Dokument weiterzumachen.
Bevor die Prozedur StartDruck ausgeführt wird, sollte der Drucker entsprechend eingestellt werden.
' Durch alle Datensätze des Serienbriefs gehen und jedes Dokument drucken Public Sub StartDruck() Dim i As Integer Dim amount As Integer ' Anzahl aller Datensätze ermitteln. Hierzu springen wir auf den letzten Datensatz ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord ' ermitteln die Menge amount = ActiveDocument.MailMerge.DataSource.ActiveRecord ' und gehen für den Druck-Start zum ersten Datensatz zurück ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord ' Nun gehen wir durch alle Datensätze der Reihe nach und drucken jedes Dokument einzeln aus For i = 0 To amount AutoDruck DoEvents Next End Sub Sub AutoDruck() ' Dateiname für späteres Abspeichern generieren ' Hierzu nehmen wir Felder aus dem Word-Dokument. Diese müssen natürlich individuell abgeändert werden. Dim strFilename As String strFilename = Application.ActiveDocument.MailMerge.DataSource.DataFields("ADM").Value & " - " & _ Application.ActiveDocument.MailMerge.DataSource.DataFields("ADR_NAME1").Value & _ ".doc" Dim strPath As String strPath = "C:\" Dim strFullFilename As String strFullFilename = strPath & strFilename ' Drucken ' Hier muss der Druckername angepasst werden ActivePrinter = "\\Printserver\Druckername" Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _ wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _ Collate:=True, Background:=True, PrintToFile:=False, PrintZoomColumn:=0, _ PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0 ' Als Word-Datei abspeichern Application.ActiveDocument.SaveAs (strFullFilename) Debug.Print "Drucke: " & strFullFilename ' Weiter zum nächsten Dokument ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord End Sub
0 Antworten zu VBS: Word Serienbrief einzeln an Drucker senden