Autor: Rainer Beckerbauer (Ramses)  --- Aus Excel VBA - Gruppe: Outlook & Excel

Outlook und Excel (2) Workbooks und Worksheets versenden

Autor: Rainer Beckerbauer (Ramses) - Erstellt: --      - Letzte Revision: --Gruppenthema: 6 Folgen 1 2 3 4 5 6 Sie sind in Folge:2

EXCEL Sheets und Workbooks mit Outlook senden

In diesen Lektionen lernen Sie, wie schon gesagt, nur Beispiele kennen, die mit Microsoft Outlook funktionieren. Die Zusammenarbeit mit einzelnen anderen Mail-Systemen ist zwar über VBA prinzipiell möglich (Lotus Notes, Outlook Express, Tobit), aber zusätzliche Funktionen sind vielfach dann eben nicht möglich, weil von der Client Anwendung nicht unterstützt.

Workbook senden

Die häufigste Anwendung ist, die aktive Arbeitsmappe mit Outlook als Anhang zu versenden.
Grundsätzlich können sie dies auch erreichen über

Datei - Senden an - E-Mail-Empfänger

Aber es könnte/sollte doch auch automatisch gehen,... dass man bloss auf einen "Knopf" drücken muss.

Nun denn,... hier ein Beispielcode.
Die Kommentare sind grün dargestellt, und die folgenden Code-Segmente Sfhritt für Schritt erklärt.
Es sollte eigentlich kein Problem sein.
Daher verzichte ich hier auf weitere Erklärungen zum Code.

Option Explicit

Sub Excel_Workbook_via_Outlook_Senden()
    Dim MyMessage As Object, MyOutApp As Object
    Dim Qe As Integer
    Dim AWS As String
    'Testen ob die aktuelle Mappe schon gespeichert wurde
    If ThisWorkbook.Saved = False Then
        'Die letzten Änderungen wurden noch nicht gespeichert
        Qe = MsgBox("Diese Mappe wurde noch nicht gespeichert, und kann nicht versandt werden!" _
        & Chr$(13) & "Soll die Datei gespeichert werden?", vbInformation + vbYesNo, "Sendefehler")
        If Qe = vbNo Then
            'Abbruch durch Benutzer
            MsgBox "Sendevorgang abgebrochen"
            Exit Sub
        Else
            'Prüfen ob die Datei schon mal gespeichert wurde
            If Right(ThisWorkbook.Name, 3) <> "xls" Then
                'Nein > Speicherdialog aufrufen
                Application.Dialogs(xlDialogSaveAs).Show
            Else
                'Speichern
                ThisWorkbook.Save
            End If
        End If
    End If
    'Aktive Arbeitsmappe wird als mail gesendet
    'Übergabe des Mappennames an die Variable
    AWS = ThisWorkbook.FullName
    'Outlook Object erstellen
    Set MyOutApp = CreateObject("Outlook.Application")
    'Outlook Nachricht erstellen
    Set MyMessage = MyOutApp.CreateItem(0)
    With MyMessage
        'Empfänger
        .To = "irgendwer@provider"
        'Betreff
        .Subject = "Testmeldung von Excel2000 " & Date & Time
        .Attachments.Add AWS
        'Hier wird ein normaler Text erstellt
        .Body = "Mail für normalen Textempfang"
        'Hier wird eine HTML Mail erstellt
        'Dies kann zu Problemen führen, wenn der Empfänger
        'nur TEXT Dateien empfangen darf.
        '.HTMLBody = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
        'Hier wird die Mail nochmals angezeigt
        .Display
        'Hier wird die Mail gleich in den Postausgang gelegt und gesendet
        '.Send
    End With
    'Outlook schliessen
    MyOutApp.Quit
    'Variablen leeren
    Set MyOutApp = Nothing
    Set MyMessage= Nothing
End Sub





Nur Worksheet senden


Die Anweisung "Format(Now, "ddmmyyyy_hhmm")" ist nötig, weil "Now", je nach Ländereinstellung,
unerlaubte Sonderzeichen beinhaltet, die ein Speichern verunmöglichen.

Sub Excel_Sheet_via_Outlook_Senden()
    Dim MyMessage As Object, MyOutApp As Object
    Dim SavePath As String
    Dim AWS As String
    SavePath = "D:" '"E:\Eigene Dateien"
    'Kopiert aktuelles Sheet in eine neue Mappe
    'welche nur diese Tabelle enthält
    ActiveSheet.Copy
    'Speichert die Datei unter dem Tabellennamen und einem Zeitstempel
    ActiveWorkbook.SaveAs SavePath & "\" & ActiveSheet.Name & "_" & Format(Now, "ddmmyyyy_hhmm") & ".xls"
    'Mappenname wird an Variable übergeben
    'und anschliessend gleich geschlossen
    With ActiveWorkbook
        AWS = .FullName
        .Close
    End With
    'InitializeOutlook = True
    Set MyOutApp = CreateObject("Outlook.Application")
    'Nachrichtenobject erstellen
    Set MyMessage = MyOutApp.CreateItem(0)
    With MyMessage
        .To = "irgendwer@Irgenwo.de"
        .Subject = "Testmeldung von Excel2000 " & Date & Time
        'Hier wird die temporär gespeicherte Datei als
        'Attachment zugefügt
        .Attachments.Add AWS
        'Hier wird eine normale Text Mail erstellt
        '.body = "Das ist ein Test" & vbCrLf & "Bitte ignorieren"
        'Hier wird die HTML Mail erstellt
        .HTMLBody = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
        'Hier wird die Mail nochmals angezeigt
        .Display
        'Hier wird die Mail gleich in den Postausgang gelegt
        '.Send
        'Hier wird die temporäre Datei wieder gelöscht
        Kill AWS
    End With
    MyOutApp.Quit
    Set MyOutApp = Nothing
    Set MyMessage = Nothing
End Sub






Weitere Artikel der Gruppe: Outlook & Excel Aus Excel VBA
Nach oben