Regel in Outlook: Im Betreff Satzzeichen löschen

Bild

Betrifft: Regel in Outlook: Im Betreff Satzzeichen löschen
von: Matthias
Geschrieben am: 19.08.2015 09:41:59

Hallo zusammen
Ich würde gerne eine Regel in mein Outlook 2010 erstellen, die beim Eingang einer Email alle "." und "'" im Betreff löscht.
IST: Hans Meier, Police 32.2221.224'2
SOLL: Hans Meier, Police 3222212242
Wäre super, wenn da Jemand einen Tipp hätte :)
Schönen Tag wünsch ich euch
Matthias

Bild

Betrifft: Im Betreff Satzzeichen löschen
von: mumpel
Geschrieben am: 19.08.2015 10:57:26
Hallo!
Hier mal ein Beispiel welches alle Sonderzeichen der gewählten Email durch einen Unterstrich ersetzt.

Sub ObjSavAs()

Dim olMailItem       As Outlook.MailItem
Dim lngVarSZ         As Long
Dim strTxtSZ         As String

Const strReplaceSZ   As String = "_.;:_#äüö+?)=%$&(/\"
 
 
 Select Case True
  Case TypeOf Application.ActiveWindow Is Outlook.Inspector
    Set olMailItem = Application.ActiveInspector.CurrentItem
  Case Else
    With Application.ActiveExplorer.Selection
      If .Count Then
        Set olMailItem = .Item(1)
      End If
    End With
    If olMailItem Is Nothing Then
      Exit Sub
    End If
  End Select
  
 With olMailItem
      strTxtSZ = .Subject
         For lngVarSZ = 1 To Len(strReplaceSZ)
             strTxtSZ = Replace(strTxtSZ, Mid(strReplaceSZ, lngVarSZ, 1), "_")
         Next lngVarSZ
      .Subject = strTxtSZ
      .Save
End With

VBA/HTML - CodeConverter für Office-Foren, AddIn für Office 2002-2013 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:mumpel

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

Gruß, René

Bild

Betrifft: AW: Im Betreff Satzzeichen löschen
von: Matthias
Geschrieben am: 19.08.2015 13:05:53
Hi René
Vielen Dank für deinen Input. Ich kriege es leider trotzdem nicht hin :(

Sub Anlage(oMail As MailItem)
'Muss so sein weil das Makro sonst nicht bei den Regeln als Skript aufgeführt wird
Dim olMailItem       As Outlook.MailItem
Dim lngVarSZ         As Long
Dim strTxtSZ         As String
Const strReplaceSZ   As String = ".'"
 
 
 Select Case True
  Case TypeOf Application.ActiveWindow Is Outlook.Inspector
    Set olMailItem = Application.ActiveInspector.CurrentItem
  Case Else
    With Application.ActiveExplorer.Selection
      If .Count Then
        Set olMailItem = .Item(1)
      End If
    End With
    If olMailItem Is Nothing Then
      Exit Sub
    End If
  End Select
  
 With olMailItem
      strTxtSZ = .Subject
         For lngVarSZ = 1 To Len(strReplaceSZ)
         
         'hier eingeben durch was ersetzen
             strTxtSZ = Replace(strTxtSZ, Mid(strReplaceSZ, lngVarSZ, 1), "")
         Next lngVarSZ
      .Subject = strTxtSZ
      .Save
End With
End Sub


Bild

Betrifft: geht doch?
von: Michael
Geschrieben am: 19.08.2015 15:53:26
Hi Matthias,
da (" 'hier eingeben durch was ersetzen") muß nichts rein, denn Deine Zeichen stehen oben bereits in der Konstante.
Ohne das Outlook-Drumrum (habe keine OL) sieht die Logik so aus ...

Sub StringSäubern()
Dim lngVarSZ         As Long
Dim strTxtSZ         As String
Dim strAusgabe       As String
Const strReplaceSZ   As String = ".'"
 
strTxtSZ = "Hans Meier, Police 32.2221.224'2"
Debug.Print strTxtSZ
         For lngVarSZ = 1 To Len(strReplaceSZ)
             strTxtSZ = Replace(strTxtSZ, Mid(strReplaceSZ, lngVarSZ, 1), "")
         Next lngVarSZ
Debug.Print strTxtSZ
' *ODER* so:
strTxtSZ = "Hans Meier, Police 32.2221.224'2"
Debug.Print strTxtSZ
strTxtSZ = Replace(Replace(strTxtSZ, ".", ""), "'", "")
Debug.Print strTxtSZ
End Sub

... und wenn Du die debug.print - Ausgabe im Direktfenster (VB-Editor: Strg+G oder unter Ansicht) ansiehst,
Hans Meier, Police 32.2221.224'2
Hans Meier, Police 3222212242
Hans Meier, Police 32.2221.224'2
Hans Meier, Police 3222212242

paßt doch alles.
In der For-Schleife wird der Reihe nach ein Replace-Befehl ausgeführt, und zwar mit dem Zeichen, das jeweils an der lngVarSZ-ten Position im strReplaceSZ steht, also für lngVarSZ-ten=1 mit dem ".", für =2 mit dem "'".
Diese Lösung ist sehr allgemein gehalten und funzt immer!
In der unteren Formulierung (nach dem Oder) mußt Du nur strTxtSZ durch .Subject ersetzen...
.Subject = Replace(Replace(.Subject, ".", ""), "'", "")
... falls Dir diese Variante einleuchtender ist.
Gruß,
Michael

Bild

Betrifft: AW: geht doch?
von: Matthias
Geschrieben am: 19.08.2015 16:47:12
Herzlichen Dank Michael für die tollen Erklärungen. Ich habe es jetzt super verstanden. Und es lag am Outlook-Zeugs drumum ... :)

Bild

Betrifft: gerne, vielen Dank für die Rückmeldung owT
von: Michael
Geschrieben am: 19.08.2015 20:06:16


Bild

Betrifft: AW: Regel in Outlook: Im Betreff Satzzeichen löschen
von: Matthias
Geschrieben am: 20.08.2015 10:53:47
Endgültiger Code:

Sub Anlage(MyMail As MailItem)
Dim strID As String
Dim olNS As Outlook.NameSpace
Dim olMail As Outlook.MailItem
Dim lngVarSZ         As Long
Dim strTxtSZ         As String
strID = MyMail.EntryID
Set olNS = Application.GetNamespace("MAPI")
Set olMail = olNS.GetItemFromID(strID)
'die zu ersetzenden Zeichen zwischen "" eingeben
Const strReplaceSZ   As String = ".'"
With olMail
     strTxtSZ = .Subject
        For lngVarSZ = 1 To Len(strReplaceSZ)
        
            'zwischen "" eingeben, durch was die Zeichen ersetzt werden sollen
            strTxtSZ = Replace(strTxtSZ, Mid(strReplaceSZ, lngVarSZ, 1), "")
        Next lngVarSZ
     .Subject = strTxtSZ
     .Save
End With
Set olMail = Nothing
Set olNS = Nothing
End Sub

Suchbegriffe:
Eingehende Email Neue Email Outlook Betreff ändern Titel ändern Skript Regel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Regel in Outlook: Im Betreff Satzzeichen löschen"