denyo25
Goto Top

Outlook 2010 Betreff ändern bzw. einkürzen

Hallo,

ich suche eine Lösung für folgendes.
Exchange 2010
Outlook 2010

In ein bestimmtes Postfach kommen Mails mit einem solchen Betreff an.
"GLB W_FI_000215994/148751"

Aktuell ändern wir den Betreff immer manuell, dass die letzten Nummer (nach dem /) bleiben.
Der Rest wird gelöscht.
Also Ergebnis wäre dann "148751" als Betreff.

Wie kann man dies automatisch durchführen?
Egal ob per Exchange Regel oder VBA.

Habe auch schon viel im Netz gesucht, aber finde meist nur wie man den ganzen Betreff ersetzen kann und nicht einen Teil erhält.

Content-Key: 334023

Url: https://administrator.de/contentid/334023

Printed on: April 20, 2024 at 06:04 o'clock

Member: colinardo
colinardo Apr 04, 2017 updated at 09:42:10 (UTC)
Goto Top
Servus,
(In Outlook ALT-F11 drücken und den Code in den Abschnitt "ThisOutlookSession" einfügen), Makros natürlich vorher im Sicherheitscenter aktivieren!
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Dim varEntryIDs, objItem as Object, i As Integer
    varEntryIDs = Split(EntryIDCollection, ",")  
    For i = 0 To UBound(varEntryIDs)
        Set objItem = Application.Session.GetItemFromID(varEntryIDs(i))
        If objItem.Class = olMail Then
            With objItem
                If Instr(1,.Subject,"/",1) > 0 Then   
                    .Subject = Split(.Subject,"/",2,1)(1)  
                    .Save
                End if
            End With
        End If
    Next
End Sub
Effektiver wäre ein Custom Transport Agent für den EX, aber nur für die eine Sache wohl Overkill.
Hier ein ähnliches Beispiel für einen Transport Agent
Anzeigename autom. um Suffix ergänzen

Grüße Uwe
Member: Denyo25
Denyo25 Apr 04, 2017 at 10:37:34 (UTC)
Goto Top
Servus Uwe,
ich habe den Code wie beschrieben eingefügt, aber muss ich diesen noch als Projekt speichern um es aus zu führen?
Wenn ich mit F5 starten möchte, will er einen Makro Namen haben und öffnet ein neues Projekt.

Sorry für die doofe Frage, aber habe schon lange nichts mehr in VBA gemacht. face-smile
Member: colinardo
colinardo Apr 04, 2017 updated at 10:50:36 (UTC)
Goto Top
Zitat von @Denyo25:

Servus Uwe,
ich habe den Code wie beschrieben eingefügt, aber muss ich diesen noch als Projekt speichern um es aus zu führen?
Speichern klicken, und nicht vergessen Makros im Sicherheitscenter zu aktivieren und Outlook neu zu starten.
Bitte den Code nicht in ein Modul kopieren sondern wie oben beschrieben in ThisOutlookSession/DieseOutlookSitzung, da es sich um ein Outlook eigene Eventhandler-Routine handelt!
Wenn ich mit F5 starten möchte, will er einen Makro Namen haben und öffnet ein neues Projekt.
Das Makro wird automatisch bei neuen eintreffenden Mails aktiv du kannst es in dieser Variante nicht mit F5 starten, wäre ja auch Quatsch wenn man das müsste face-wink!
Member: Denyo25
Denyo25 Apr 04, 2017 at 10:58:32 (UTC)
Goto Top
Danke! Habe gerade auch bemerkt, dass dies direkt bei eintreffenden Mails ausgeführt wird und es funktioniert!!!!

Ein kleines Problem habe ich aber noch.
Die Mails kommen nicht in diesem Postfach, sondern in einem Sammelpostfach an.
Es meldet sich i.d.R. niemand mit diesem Konto an.

Kann man diese Aktion auf bestimmte Mails anwenden?
Ggf. vorher markieren oder ähnliches?
Member: colinardo
colinardo Apr 04, 2017 updated at 11:06:02 (UTC)
Goto Top
Zitat von @Denyo25:
Kann man diese Aktion auf bestimmte Mails anwenden?
Ggf. vorher markieren oder ähnliches?
Du kannst an allen Merkmalen einer Mail eine Unterscheidung machen, musst nur sagen woran man sie bei dir erkennt. Man kann auch die Accounts unterscheiden über die sie reingekommen sind, hier ist dann wichtig wie der Account eingebunden wurde (extra Store oder Automapping). Nur eingebunden sein muss das Postfach zumindest auf einem Client wo das Makro läuft sonst werden die Mails ja nicht überwacht. Ist das gefordert das kein Outlook läuft, s. Transport Agent oben.
Member: Denyo25
Denyo25 Apr 04, 2017 at 11:14:18 (UTC)
Goto Top
Die Mitarbeiter melden sich mit dem Postfach "Name@...de" an.
Das Postfach und Mailadresse des Sammelpostfaches lautet "Sammel@...de".
Schicke ich nun die Mail an beide Adressen, wird der Betreff nur im Hauptpostfach geändert.
Im Sammelpostfach bleibt der vollständige Name bestehen.

Am besten wäre es, wenn sich dieses Makro nur auf das Sammelpostfach anwenden würde.
Member: colinardo
Solution colinardo Apr 04, 2017 updated at 11:44:05 (UTC)
Goto Top
In dem Fall wenn es als "extra" Postfach eingebunden ist (kein Automapping):
(Achtung die Deklaration der WithEvents Variable muss zwingend am Anfang des Codefensters stehen)
Name des Stores anpassen.
Damit werden dann alle Mails die in diesen Posteingang eingehen verarbeitet welche zumindest einen Slash(/) im Subject beinhalten.
Dim WithEvents itms As items

Private Sub Application_Startup()
    Set itms = Session.Stores.Item("sammel@domain.de").GetDefaultFolder(olFolderInbox).Items  
End Sub

Private Sub itms_ItemAdd(ByVal Item As Object)
    If Item.Class = olMail Then
        With item
            If Instr(1,.Subject,"/",1) > 0 Then   
                .Subject = Split(.Subject,"/",2,1)(1)  
                .Save
            End if
        End With
    End If
End Sub
Handelt es sich hingegen um ein Postfach das per Automapping eingebunden ist, oder über zusätzliche Postfächer öffnen eingebunden wurde (kein extra Account über die Einstellungen eingebunden), nehme man dies:
Dim WithEvents itms As items

Private Sub Application_Startup()
    With Application.GetNamespace("MAPI")  
        dim rec as Recipient
        Set rec = .CreateRecipient("sammel@domain.de")  
        rec.Resolve
        If rec.Resolved Then
            Set itms = .GetSharedDefaultFolder(rec, olFolderInbox).Items
        Else
            MsgBox "Das angegebene Postfach wurde im Verzeichnis nicht gefunden!", vbExclamation  
        End If
    End With
End Sub

Private Sub itms_ItemAdd(ByVal Item As Object)
    If Item.Class = olMail Then
        With item
            If Instr(1,.Subject,"/",1) > 0 Then   
                .Subject = Split(.Subject,"/",2,1)(1)  
                .Save
            End if
        End With
    End If
End Sub

Bei allen Varianten ist ein Neustart von Outlook Pflicht!!

Für noch mehr Support kannst du dich gerne via PM an mich wenden (kostenpflichtig).

Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Member: Denyo25
Denyo25 Apr 04, 2017 at 12:52:33 (UTC)
Goto Top
Super schnelle Lösungshilfe mit perfektem Ergebnis!
Ich bin echt begeistert.
Sollten wir hier mal ein Projekt in dem Bereich haben, werde ich dich auf jeden Fall als Externen vorschlagen!
Member: colinardo
colinardo Apr 04, 2017 at 15:39:40 (UTC)
Goto Top
Immer gerne face-wink