Hallo Zusammen,
ich wollte für Outlook ein Makro schreiben, dass das Senden eine E-Mail verhindert, sobald bestimmte Wörter darin auftauchen. Das klappt mit der Funktion Application_ItemSend auch ganz gut - zumindest beim Schreiben einer neuen E-Mail. Über CurrentItem bekomme ich Betreff und E-Mail Inhalt und kann dann, je nachdem ob diese Worte enthalten sind, eine PopUp-Nachricht ausgeben und den Versand mit Cancel = true abbrechen.
Das Problem ist nun, dass der Skript auch beim Antworten auf eine E-Mail laufen soll. Diesmal komme ich über CurrentItem nicht an Betreff und Inhalt der Mail heran. Scheinbar existiert das Objekt an dieser Stelle nicht und ich bekomme einen Laufzeitfehler.
Mit Application.ActiveExplorer.Selection.Item(1) bekomme ich auch nur die Mail, die ich erhalten habe. Ich brauche aber den neuen Betreff und Inhalt, den ich beim Antworten in die Mail schreibe.
Kann mir da jemand weiterhelfen?
Das ist momentan mein Quelltext. Sicherlich sind auch so noch ein paar Sachen die man verbessern kann. Den Laufzeitfehler mit On Error zu umgehen ist nicht gerade sehr sauber. Erstmal müsste ich aber beim Antworten aber an die richten Werte herankommen.
' Suchfunktion zum Finden von Wörtern in einem String
Function FindStr(strAll As String, strPart As String) As Boolean
Dim x As Boolean
FindStr = InStr(1, strAll, strPart) > 0
End Function
' Funktion die beim Betätigen der Senden-Taste ausgeführt wird
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim NewMail As Outlook.MailItem
On Error Resume Next
Set NewMail = Application.ActiveInspector.CurrentItem
If Err.Number > 0 Then
End If
Dim words As Variant
' Sperrwörter in Array eintragen
words = Array("Bilanz", "Gehalt", "Vertraulich", "Lohn")
Dim element As Variant
Dim y As Boolean
For Each element In words
' Betreff auf aktuelles Sperrwort (Arrayelement) überprüfen. Abbruch der Schleife beim Auftauchen eines Wortes
y = FindStr(NewMail.Subject, CStr(element))
' Wurde im Betreff kein gesperrtes Wort gefunden, den Inhalt der E-Mail ebenfalls prüfen
If y = False Then
y = FindStr(NewMail.Body, CStr(element))
End If
If y = True Then Exit For
Next element
If y = True Then
' Enthält der Betreff ein Sperrwort, Fehlermeldung als Popup ausgeben und Sendevorgang nicht ausführen
bMessage = "Der Betreff oder Inhaltstext enthält eines oder mehrere der folgenden, gesperrten Wörter: "
' Ausgabe der Fehlermeldung und der gesperrten Wörter
Dim i As Byte
i = 0
For Each element In words
If i = 0 Then
bMessage = bMessage & " " & CStr(element)
Else
bMessage = bMessage & ", " & CStr(element)
End If
i = i + 1
Next element
MsgBox (bMessage)
Cancel = True
End If
End Sub
|