VBS: Word Serienbrief einzeln an Drucker senden

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

  1. Bisher gibt es keine Kommentare.