Warnung bei leerem Betreff in Outlook 2010 / 2013 deaktivieren

Zuletzt geändert am 03. April 2013

In Outlook® 2010 wurde eine vielfach gewünschte Funktion eingefügt, um zu verhindern, dass E-Mails oder Besprechungsanfragen ohne Betreff verschickt werden.

Zweifellos ist das eine nützliche Funktion, die Outlook®-Anwender vor 2010 z. B. kostenlos in dem Add-In AttachmentsManager wiederfinden.

Es gibt aber auch Fälle, in denen diese Meldung stört, wenn man z. B. nur eine kurze Information intern an einen Kollegen schicken möchte, oder wenn man Kurznachrichten auf Handys schickt, die zudem auf 160 Zeichen begrenzt sind.

Leider hat Microsoft es versäumt, eine Möglichkeit zum Abstellen der Warnmeldung einzufügen. Vermutlich wird sie noch nachgerüstet, da sich schon mehrere Benutzer darüber beschwert haben. Bis dahin können leidgeplagte Anwender mit dem folgenden Codebeispiel die Warnmeldung umgehen.

Kurz zur Funktionsweise: Beim Erstellen einer neuen E-Mail etc. wird automatisch ein Leerzeichen in den Betreff gesetzt, sofern dieser leer ist (könnte z. B. bei Vorlagen vorbelegt sein). Der Anwender kann nun dieses Leerzeichen mit seinem Betreff überschreiben oder auch stehen lassen. Auch kein Betreff ist dadurch möglich, da Outlook® das Leerzeichen als Betreff erkennt und so keine Warnung ausgibt. Kurz vor dem Senden der E-Mail entfernt der Code das zuvor eingefügte Leerzeichen wieder, so dass wirklich nur das beim Empfänger ankommt, was der Anwender in den Betreff eingegeben hat.

Zur Verwendung dieses Beispiels beachten Sie bitte die wichtigen Hinweise, sowie den Workshop VBA in Outlook® verwenden. Den Code bitte in das Modul DieseOutlookSitzung kopieren.

Ab Outlook® 2010

Damit der Code wirksam wird, muss anschließend Outlook® neu gestartet werden.

Option Explicit
 
'=========================================================================
' Verhindert die Warnmeldung bei leerem Betreff in Outlook® 2010
' (c) Peter Marchert - http://www.outlook-stuff.com
' 2010-07-15 Version 1.0.0
' 2010-07-19 Version 1.0.1
' 2010-08-01 Version 1.1.0
' 2010-08-31 Version 1.1.1
'=========================================================================
    
Private WithEvents colInspectors As Outlook.Inspectors
 
Private Sub Application_Startup()
 
    '---------------------------------------------------------------------
    ' Referenz auf alle Formulare setzen
    '---------------------------------------------------------------------
    Set colInspectors = Outlook.Inspectors
 
End Sub
 
Private Sub colInspectors_NewInspector(ByVal Inspector As Inspector)
 
    '---------------------------------------------------------------------
    ' Dieser Code wird ausgeführt, wenn ein Formular (z. B. eine E-Mail)
    ' geöffnet wird.
    '---------------------------------------------------------------------
    
    Dim objItem As Object
 
    '---------------------------------------------------------------------
    ' Um nicht alle Ausnahmefälle behandeln zu müssen, steigt der Code im
    ' Fehlerfall einfach aus.
    '---------------------------------------------------------------------
    On Error GoTo ExitProc
 
    '---------------------------------------------------------------------
    ' Referenz auf geöffnetes Element setzen
    '---------------------------------------------------------------------
    Set objItem = Inspector.CurrentItem
 
    '---------------------------------------------------------------------
    ' Termine nicht berücksichtigen, nur Besprechungsanfragen
    '---------------------------------------------------------------------
    If InStr(LCase(objItem.MessageClass), "ipm.appointment") > 0 Then
        If objItem.MeetingStatus = 0 Then GoTo ExitProc
    End If
 
    '---------------------------------------------------------------------
    ' Ein neues Element hat noch keine ID
    '---------------------------------------------------------------------
    If objItem.EntryID = "" Then
 
        '-----------------------------------------------------------------
        ' Den Betreff abfragen, falls ein Element aus einer Vorlage mit
        ' vorbelegtem Betreff erstellt wurde.
        '-----------------------------------------------------------------
        If objItem.Subject = "" Then objItem.Subject = " "
 
        '-----------------------------------------------------------------
        ' Bei Besprechungsanfragen wird auch der Ort geprüft
        '-----------------------------------------------------------------
        If objItem.Location = "" Then objItem.Location = " "
 
    End If
 
ExitProc:
 
    '---------------------------------------------------------------------
    ' Referenz auf Formular und Element löschen
    '---------------------------------------------------------------------
    Set objItem = Nothing
    Set Inspector = Nothing
 
End Sub
 
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
 
    On Error Resume Next
 
    '---------------------------------------------------------------------
    ' Ist ein Leerzeichen noch vorhanden, wird es jetzt beim Senden ent-
    ' fernt (das merkt Outlook nicht mehr)
    '---------------------------------------------------------------------
    Item.Subject = Trim(Item.Subject)
    Item.Location = Trim(Item.Location)
 
End Sub
 
Private Sub Application_Quit()
 
    '---------------------------------------------------------------------
    ' Referenz auf Formulare löschen
    '---------------------------------------------------------------------
    Set colInspectors = Nothing
 
End Sub