Outlook-Workshop - Email ausdrucken - Teil 1
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