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]
Kommentare
Eine Antwort zu „VBA – Outlook: Namen der Dateien im E-Mail-Anhang am Anfang / der aktuellen Cursorposition der E-Mail auflisten [Update 22.10.2018]“
[…] ich die folgende Funktion geschrieben. Die Funktion dient als Input für die Funktion Namen der Dateien im E-Mail-Anhang am Anfang der E-Mail auflisten. Alle Dateinamen im E-Mail-Anhang werden der Reihe nach ausgelesen und zusammen mit einer kurzen […]