VBA – Outlook: Namen der Dateien im E-Mail-Anhang am Anfang / der aktuellen Cursorposition der E-Mail auflisten [Update 22.10.2018]

Beschreibung

Wer in Outlook E-Mails mit PGP verschlüsselt, nutzt häufig die verfügbare Funktion, die E-Mail vollständig zu verschlüsseln. Das funktioniert gut, so lange Sender und Empfänger PGP verwenden. Verwendet der Empfänger allerdings GPG, taucht das Problem auf, dass die Namen der E-Mail-Anhänge nicht korrekt angezeigt werden. 

Die folgenden VBA-Makros (getrennte Varianten für E-Mails im „Nur Text“-Format und für E-Mails im „HTML“-Format) fügen am Anfang bzw. an der aktuellen Cursorposition [Update 19.10.2018] der aktiven E-Mail einen Textblock ein, der alle Dateinamen der Reihe nach auflistet und dem Empfänger so die Möglichkeit geben, zu erkennen, welche Dateien sich im Anhang befinden. Dem Sender erspart es zudem, manuell zu schreiben, welche Dateien / Dateitypen sich im E-Mail-Anhang befinden.

Damit die Funktion funktioniert, wird darüber hinaus die Funktion Namen der Dateien im E-Mail-Anhang auslesen benötigt.

Sourcecode für E-Mails im „Nur Text“-Format

1 – Text am Anfang der E-Mail einfügen

Public Sub addAttFilenamesToMailAsText()
    ' Textkonstanten für die Begrenzungen
    Const ATTLIST_BORDER As String = "************************************************"
    Const ATTLIST_ENTRY_LINESTART As String = "* "

    ' aktuelles Outlookfenster als zu verwendendes definieren
    Dim curInspector As Outlook.Inspector
    Set curInspector = Application.ActiveInspector

    ' Prüfen, ob Dateianhänge vorhanden sind
    If Not TypeName(curInspector) = "Nothing" Then
        Dim sAtts() As String
        Dim iFoundAttCount As Integer
        Dim sBody As String

        ' Dateianhänge auslesen
        sAtts() = getAtts()

        iFoundAttCount = UBound(sAtts)

        ' Hinzuzufügenden Text zusammensetzen
        sBody = ATTLIST_BORDER + vbCrLf
        If iFoundAttCount > 0 Then
            Dim iAttNo As Integer

            For iAttNo = 0 To iFoundAttCount
                ' Jeden Anhang in einer neuen Zeile aufführen
                sBody = sBody + ATTLIST_ENTRY_LINESTART + sAtts(iAttNo) + vbCrLf
            Next iAttNo
        End If
        sBody = sBody + ATTLIST_BORDER + vbCrLf

        ' Mit aktuellem E-Mail-Objekt arbeiten
        Dim curItem As Outlook.MailItem
        Set curItem = curInspector.CurrentItem

        ' Text am Anfang der E-Mail einfügen
        curItem.Body = sBody + vbCrLf + vbCrLf + vbCrLf + curItem.Body
    End If
End Sub

2 – Text an der aktuellen Cursorposition einfügen [Update 19.10.2018]

Public Sub addAttFilenamesToMailAsText()
    ' Textkonstanten für die Begrenzungen
    Const ATTLIST_BORDER As String = "************************************************"
    Const ATTLIST_ENTRY_LINESTART As String = "* "
 
    ' aktuelles Outlookfenster als zu verwendendes definieren
    Dim objCurInspector As Outlook.Inspector
    Set objCurInspector = Application.ActiveInspector
 
    ' Prüfen, ob Dateianhänge vorhanden sind
    If Not TypeName(objCurInspector) = "Nothing" Then
        Dim strAtts() As String
        Dim intFoundAttCount As Integer
        Dim strBody As String
 
        ' Dateianhänge auslesen
        strAtts() = getAtts()
 
        intFoundAttCount = UBound(strAtts)
 
        ' Hinzuzufügenden Text zusammensetzen
        strBody = ATTLIST_BORDER + vbCrLf
        If intFoundAttCount > 0 Then
            Dim intAttNo As Integer
 
            For intAttNo = 0 To intFoundAttCount
                ' Jeden Anhang in einer neuen Zeile aufführen
                strBody = strBody + ATTLIST_ENTRY_LINESTART + strAtts(intAttNo) + vbCrLf
            Next intAttNo
        
           strBody = strBody + ATTLIST_BORDER + vbCrLf
    
           ' Mit aktuellem E-Mail-Objekt arbeiten
           Dim objCurItem As Outlook.MailItem
           Set objCurItem = objCurInspector.CurrentItem
    
           ' Text an der aktuellen Position der E-Mail einfügen
           ActiveInspector.WordEditor.Application.Selection.TypeText vbCrLf & strBody & vbCrLf
        End If
    End If
End Sub

Sourcecode für E-Mails im „HTML“-Format

1 – Text am Anfang der E-Mail einfügen

Public Sub addAttFilenamesToMailAsHTMLText()
    ' Textkonstanten für die Begrenzungen
    Const ATTLIST_BORDER As String = "************************************************"
    Const ATTLIST_ENTRY_LINESTART As String = "* "
  
    ' aktuelles Outlookfenster als zu verwendendes definieren
    Dim curInspector As Outlook.Inspector
    Set curInspector = Application.ActiveInspector
  
    ' Prüfen, ob Dateianhänge vorhanden sind
    If Not TypeName(curInspector) = "Nothing" Then
        Dim sAtts() As String
        Dim iFoundAttCount As Integer
        Dim sBody As String
  
        ' Dateianhänge auslesen
        sAtts() = getAtts()
 
        iFoundAttCount = UBound(sAtts)
  
        ' Hinzuzufügenden Text zusammensetzen
        sBody = ATTLIST_BORDER + "<br>"
        If iFoundAttCount > 0 Then
            Dim iAttNo As Integer
  
            For iAttNo = 0 To iFoundAttCount
                ' Jeden Anhang in einer neuen Zeile aufführen
                sBody = sBody + ATTLIST_ENTRY_LINESTART + sAtts(iAttNo) + "<br>"
            Next iAttNo
        End If
        sBody = sBody + ATTLIST_BORDER + "<br>"
  
        ' Mit aktuellem E-Mail-Objekt arbeiten
        Dim curItem As Outlook.MailItem
        Set curItem = curInspector.CurrentItem
  
        ' Text am Anfang der E-Mail einfügen
        curItem.HTMLBody = sBody + "<br><br><br>" + curItem.HTMLBody
    End If
End Sub

2 – Text an der aktuellen Cursorposition einfügen [Update 22.10.2018]

Siehe Abschnitt „Sourcecode für E-Mails im „Nur Text“-Format“, Variante 2 – Text an der aktuellen Cursorposition einfügen [Update 19.10.2018]

Ein Gedanke zu „VBA – Outlook: Namen der Dateien im E-Mail-Anhang am Anfang / der aktuellen Cursorposition der E-Mail auflisten [Update 22.10.2018]“

Kommentare sind geschlossen.