Outlook-Workshop - Email ausdrucken - Teil 1

Möchten oder müssen Sie auch mal bestimmte Seiten einer Email drucken? Oder möchten Sie Inhalte einer Email in ein Word-Dokument überführen? Dann kennen Sie sicher die Probleme in Outlook. Die Druckfunktion in Outlook ist nicht gerade flexibel. Dem Druckbefehl in Outlook-VBA kann man keine Parameter mitgeben. Der Weg könnte über Microsoft Word führen. Mit Hilfe von Outlook-VBA können Sie dies erledigen.

Wechseln Sie in den VBA-Editor. Zuerst müssen einen Verweise setzen auf die "Microsoft Word X.0 Object Library". Das X steht hier für die Officeversion.

Fügen Sie nun ein neues Modul ein. In dieses Modul den folgenden Code. Dieser Code darf nicht geändert werden.

Option Private Module
Option Explicit

Public Sub PrintAPageFromEmail(Optional wdPrintOut As Boolean = True, _
                               Optional printCopies As Integer = 1, _
                               Optional startPage As String = "1", _
                               Optional endPage As String = "1", _
                               Optional closeDoc As Boolean = True, _
                               Optional quitWDApp As Boolean = True, _
                               Optional wdPrintAll As Boolean = False, _
                               Optional wdPrinter As String)
                               
                               
Dim Ins            As Outlook.Inspector
Dim obj            As Outlook.MailItem
Dim wdApp          As Word.Application
Dim wdDoc          As Word.Document
Dim wdRange        As Word.Range
Dim wdOldPrinter   As String


 Select Case True
        Case TypeOf Application.ActiveWindow Is Outlook.Inspector
             Set obj = Application.ActiveInspector.CurrentItem
        Case Else
             With Application.ActiveExplorer.Selection
                  If .Count Then Set obj = .Item(1)
             End With
                 If obj Is Nothing Then Exit Sub
 End Select


Set Ins = obj.GetInspector
Set wdDoc = Ins.WordEditor
Set wdRange = wdDoc.Range
    wdRange.WholeStory
    wdRange.Copy

Set wdApp = New Word.Application
     With wdApp
         .Visible = True
         wdOldPrinter = .ActivePrinter
         If wdPrinter <> "" Then .ActivePrinter = wdPrinter
         .Documents.Add
        
          With .ActiveDocument
          
            If Not wdDoc Is Nothing Then
               .PageSetup.RightMargin = 42.55
               .PageSetup.LeftMargin = 42.55
               .PageSetup.TopMargin = 70.85
               .PageSetup.BottomMargin = 56.7
            End If
               .Range(0, 0).Paste
            If wdPrintOut Then
             If wdPrintAll Then
               .PrintOut copies:=printCopies
             Else
               .PrintOut copies:=printCopies, Range:=wdPrintFromTo, _
                         From:=CStr(startPage), To:=CStr(endPage)
             End If
            End If
            If closeDoc Then
               .Close SaveChanges:=False
            End If
          End With
         .ActivePrinter = wdOldPrinter
       If quitWDApp Then
         .Quit
       End If
     
     End With

End Sub




wdPrintOut:
Gibt an ob gedruckt werden soll. Standard ist "True". Bei "True" wird gedruckt. Bei "False" wird nicht gedruckt, sondern der Inhalt nur in ein neues Word-Dokument eingefügt. In diesem Fall müssen die Parameter "closeDoc" und "quitWDApp" ebenfalls auf False gesetzt werden.

printCopies:
Die Anzahl der zu druckenden Exemplare. Standard ist 1.

startPage:
Die erste zu druckende Seite. Standard ist Seite 1.

endPage:
Die letzte zu druckende Seite. Standard ist Seite 1.

closeDoc:
Gibt an ob das Dokument nach dem Drucken geschlossen werden soll. Standard ist "True", Dokument wird nicht gespeichert. Wenn dieser Parameter auf "False" gesetzt werden soll, muss der Parameter "quitWDApp" ebenfalls auf False gesetzt werden.

quitWDApp:
Gibt an ob Word nach dem Drucken geschlossen werden soll. Standard ist True. Wenn Sie diesen Parameter auf True setzen, muss der Parameter "closeDoc" ebenfalls auf True gesetzt werden.

wdPrintAll:
Gibt an, ob die gesamte Mail oder nur die angegebenen Seiten gedruckt werden soll. Standard ist False, es werden nur die angegebenen Seiten gedruckt. Setzen Sie diesen Parameter auf True, wenn die gesamte Mail gedruckt werden soll.

wdPrinter:
Gibt den Namen des Druckers an. Als Name geben Sie den Namen an, wie er in der Systemsteuerung unter "Geräte und Drucker" angezeigt wird. Soll der Standarddrucker verwendet werden, dann lassen sie den Parameter leer.

Hinweis:
Diese Prozedur kann nicht direkt über den Makrodialog aufgerufen werden. Stattdessen wird sie über andere Prozeduren aufgerufen. Sie können die Prozedur ohne Paramterübergabe aufrufen. In diesem Fall werden die Standardparameter genutzt. Sie können auch eigene Parameter übergeben. Damit beschäftigen wir uns im folgenden Abschnitt.



------------------------------

Hinweis:
Fügen Sie zuerst ein weiteres Modul ein.

Im Folgenden ein paar Beispielcodes.

Beispiel 1:
Emailinhalt in ein neues Word-Dokument kopieren. Die Email wird nicht gedruckt. Dokument wird nicht geschlossen. Word wird nicht beendet.

Sub PrintMailWithWord()
 On Error Resume Next
   PrintAPageFromEmail False, , , , False, False
 On Error GoTo 0
End Sub


Beispiel 2:
Email drucken. Es werden 4 Kopien gedruckt. Gedruckt werden die Seiten 2 bis 4. Das Dokument wird geschlossen, Word beendet. Es wird der Standard-Drucker verwendet.

Sub PrintMailWithWord()
 On Error Resume Next
    PrintAPageFromEmail True, 4, 2, 4
 On Error GoTo 0
End Sub


Beispiel 3:
Email drucken. Es wird eine Kopie ausgegeben. Es wird die erste Seite gedruckt. Das Dokument wird nicht geschlossen. Word wird nicht beendet. Es wird ein anderer Drucker verwendet.

Sub PrintMailWithWord()
  On Error Resume Next
   PrintAPageFromEmail True, 1, , , False, False, , "Samsung CLP-320 Series"
   On Error GoTo 0
End Sub


Beispiel 4:
Email drucken. Es wird eine Kopie ausgegeben. Es wird die gesamte Email gedruckt. Das Dokument wird geschlossen. Word wird beendet. Es wird ein anderer Drucker verwendet.

Sub PrintMailWithWord()
 On Error Resume Next
  PrintAPageFromEmail True, 1, , , , , True, "Samsung CLP-320 Series"
 On Error GoTo 0
End Sub