Hier ein Modul, das eine E-Mail über Outlook versendet. Dieses Modul kann in allen Office-Programmen (Word, Excel, PowerPoint, Access, Project, Visio) genutzt werden.
Es muss auf jeden Fall unter Extras - Verweise der Verweis auf die Microsoft Outlook X Library gesetzt sein.
Die Prozedur SendEmail versendet eine E-Mail, FileExists prüft, ob Anlagen für den Versand zugänglich sind.
In Zeile 27 wird versucht Outlook anzusprechen, falls Outlook geöffnet ist. Wenn Outlook nicht geöffnet ist, wird in der Fehlerroutine in Zeile 82 Outlook geöffnet.
Ab Zeile 39 werden Anhänge an die E-Mail angefügt. Die Anlagen müssen mit einem Array übergeben werden. Ein Anhang muss immer mit seinem vollen Pfad angegeben werden. In Zeile 45 wird überprüft, ob die Anlage auch wirklich da ist.
Ab Zeile 60 wird der E-Mail-Text aufgebaut.
Wenn HTML = True wird die E-Mail in HTML geschrieben. Dies bedeutet, es wird die Standard-Signatur des Nutzers an die E-Mail angefügt.
In Zeile 61 wird die Signatur ausgelesen und in Zeile 62 wieder angehängt.
Wichtig ist hier das der Text auch in HTML formatiert sein muss.
Ab Zeile 67 wird entschieden, ob die E-Mail angezeigt und vom Nutzer manuell versendet oder automatisch gesendet wird.
Visual Basic-Quellcode
- Option Explicit
- Option Private Module
- Public olApp As Outlook.Application
- ' Der Verweis auf Outlook muss gesetzt sein
- ' strTo - Empfängeradresse ggf. durch Semikolon getrennt
- ' Subject - Betreff
- ' Body - Der Text der E-Mail, falls HTML mit HTML-Formatierung für day Layout
- ' CC - Empfängeradresse in CC ggf. durch Semikolon getrennt
- ' BCC - Empfängeradresse in BCC ggf. durch Semikolon getrennt
- ' Importance - Wichtigkeit 1- normal, 2 - hoch
- ' HTML - True E-Mail mit Outlook-Signatur, False E-Mail mit Nur Text
- ' Display - True zeigt die E-Mail an, False versendet die E-Mail direkt
- ' Attachements - Array mit für Anlagen, die Datei muss mit dem kompletten Pfad angegebnen werden
- Public Sub SendEmail(ByVal strTo As String, ByVal Subject As String, ByVal Body As String, _
- Optional ByVal CC As String = "", Optional ByVal Bcc As String = "", Optional ByVal Importance As Integer = 1, _
- Optional HTML As Boolean = False, Optional Display As Boolean = False, Optional ByVal Attachments As Variant)
- On Error GoTo ErrHandling
- Dim olMail As Outlook.MailItem
- Dim olOldbody As String
- If olApp Is Nothing Then
- Set olApp = GetObject(, "Outlook.Application")
- End If
- Set olMail = olApp.CreateItem(olMailItem)
- With olMail
- .To = strTo
- .CC = CC
- .Bcc = Bcc
- .Subject = Subject
- .Importance = Importance
- If isArrayEmpty(Attachments) = False Then
- Dim strFile As Variant
- For Each strFile In Attachments
- If FileExists(strFile) = True Then
- .Attachments.Add strFile
- Else
- Dim intPos As Integer
- Dim part() As String
- str = Replace(strFile, "/", "\")
- part = Split(strFile, "\")
- MsgBox "Die Datei '" & part(UBound(part)) & "' konnte nicht gefunden werden."
- End If
- Next
- End If
- 'HTML ergibt eine E-Mail mit Outlook-Signatur
- If HTML Then
- olOldbody = .HTMLBody
- .HTMLBody = "<html><body>" & Body & olOldbody
- Else
- .Body = Body
- End If
- If Display Then
- .Display
- .GetInspector.Display
- Else
- .Send
- End If
- End With
- Set olMail = Nothing
- Exit Sub
- ErrHandling:
- Select Case Err.Number
- Case 429
- Set olApp = CreateObject("Outlook.Application")
- Resume Next
- Case Else
- MsgBox "Fehler bein E-Mail versenden" & vbNewLine & Err.Number & " " & Err.Description
- On Error GoTo -1
- End Select
- End Sub
- Public Function FileExists(ByVal strFilePath As String) As Boolean
- FileExists = False
- On Error Resume Next
- If Not Dir(strFilePath) = vbNullString And Not strFilePath = vbNullString Then
- FileExists = True
- End If
- End Function
Es muss auf jeden Fall unter Extras - Verweise der Verweis auf die Microsoft Outlook X Library gesetzt sein.
Die Prozedur SendEmail versendet eine E-Mail, FileExists prüft, ob Anlagen für den Versand zugänglich sind.
In Zeile 27 wird versucht Outlook anzusprechen, falls Outlook geöffnet ist. Wenn Outlook nicht geöffnet ist, wird in der Fehlerroutine in Zeile 82 Outlook geöffnet.
Ab Zeile 39 werden Anhänge an die E-Mail angefügt. Die Anlagen müssen mit einem Array übergeben werden. Ein Anhang muss immer mit seinem vollen Pfad angegeben werden. In Zeile 45 wird überprüft, ob die Anlage auch wirklich da ist.
Ab Zeile 60 wird der E-Mail-Text aufgebaut.
Wenn HTML = True wird die E-Mail in HTML geschrieben. Dies bedeutet, es wird die Standard-Signatur des Nutzers an die E-Mail angefügt.
In Zeile 61 wird die Signatur ausgelesen und in Zeile 62 wieder angehängt.
Wichtig ist hier das der Text auch in HTML formatiert sein muss.
Ab Zeile 67 wird entschieden, ob die E-Mail angezeigt und vom Nutzer manuell versendet oder automatisch gesendet wird.
NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).