Outlook 2003 Makro für Betreff-Veränderung
Hallo Zusammen,
Ich bin auf der Suche nach einem Makro der das Erhalten-Datum und den Namen (am besten nur den Nachnamen) des Absenders (also Von) in den Betreff vor dem eigentlichen Betreff-Thema kopiert.
Bsp. im Falle einer geöffneten email vor der Makro-Anwendung:
Von: Müller, Peter Gesendet: Fr 19.02.2010 15:21
Betreff: Week of 15 March townmeetings
nach der Makro-Anwendung:
Von: Müller, Peter Gesendet: Fr 19.02.2010 15:21
Betreff: 2010-02-19 Müller Week of 15 March townmeetings
Wie man am Bsp. sieht soll die Uhrzeit nicht kopiert werden, das Datum ein bestimmtes Format bekommen und jeweils Leerzeichen zwischen Datum Nachname und Betreffeintrag.
Im Internet konnte ich bisher niemanden finden der genau das gleiche Problem hatte. Was ich fand und meinem Problem etwas näher kommt seht ihr hier unten. Vielen Dank schon mal für eure Hilfe! Ich würd mich über wertvolle Tips oder gar eine Lösung sehr freuen!
Ich bin auf der Suche nach einem Makro der das Erhalten-Datum und den Namen (am besten nur den Nachnamen) des Absenders (also Von) in den Betreff vor dem eigentlichen Betreff-Thema kopiert.
Bsp. im Falle einer geöffneten email vor der Makro-Anwendung:
Von: Müller, Peter Gesendet: Fr 19.02.2010 15:21
Betreff: Week of 15 March townmeetings
nach der Makro-Anwendung:
Von: Müller, Peter Gesendet: Fr 19.02.2010 15:21
Betreff: 2010-02-19 Müller Week of 15 March townmeetings
Wie man am Bsp. sieht soll die Uhrzeit nicht kopiert werden, das Datum ein bestimmtes Format bekommen und jeweils Leerzeichen zwischen Datum Nachname und Betreffeintrag.
Im Internet konnte ich bisher niemanden finden der genau das gleiche Problem hatte. Was ich fand und meinem Problem etwas näher kommt seht ihr hier unten. Vielen Dank schon mal für eure Hilfe! Ich würd mich über wertvolle Tips oder gar eine Lösung sehr freuen!
Public Sub InsertDate()
'=====================================================================
' Fügt an den Anfang des Betreffs eines Elements das Datum ein.
' (c) Peter Marchert - http://www.outlook-stuff.com
' 2008-11-09 - Version 1.0.0
' 2008-11-21 - Version 1.0.1
'=====================================================================
Dim objItem As Object ' Aktuelles Element
'---------------------------------------------------------------------
' Fehlerbehandlung wegen Set-Anweisungen ausschalten
'---------------------------------------------------------------------
On Error Resume Next
'---------------------------------------------------------------------
' Aktuell geöffnetes Element refernzieren
'---------------------------------------------------------------------
Set objItem = Outlook.ActiveInspector.CurrentItem
'---------------------------------------------------------------------
' Wenn kein Element geöffnet ist, dann markiertes verwenden
'---------------------------------------------------------------------
If objItem Is Nothing Then Set objItem = Outlook.ActiveExplorer.Selection(1)
'---------------------------------------------------------------------
' Auch nichts markiert?
'---------------------------------------------------------------------
If objItem Is Nothing Then GoTo ExitProc
'---------------------------------------------------------------------
' Mit dem Formatbefehl wird das Datum maschinell sortierbar
'---------------------------------------------------------------------
objItem.Subject = Format(Date, "yyyy-MM-dd") & " " & objItem.Subject
'---------------------------------------------------------------------
' Änderung speichern
'---------------------------------------------------------------------
objItem.Save
ExitProc:
'---------------------------------------------------------------------
' Referenz auf Element löschen
'---------------------------------------------------------------------
Set objItem = Nothing
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 137647
Url: https://administrator.de/contentid/137647
Ausgedruckt am: 23.11.2024 um 12:11 Uhr
4 Kommentare
Neuester Kommentar
Moin TecAttack,
ich hab mal deinen Codeschnipsel in Code-tags gesetzt, damit ich einzelne Zeilennummern ansprechen kann.
Du kannst einfach den fast schon fertigen neuen Betreff-String in Zeile 35 um den Absendernamen erweitern.
Anmerkungen:
Dringendst würde ich empfehlen, noch mindestens eine Prüfung mehr auf das "markierte Objekt" zu machen, nämlich ob es sich bei diesem Schlingel denn um eine Mail handelt (und nicht eine Notiz, eine Erinnerung oder einen kontakt in einem öffentlichen Ordner).
Dazu die Prüfung " If objItem.Class <> olMail Then GoTo ExitProc" bzw. "If objItem.Class <> 43 Then GoTo ExitProc" nach der heutigen Zeile 30 einbauen.
Zweite Anmerkung: ich baue den kompletten Absendernamen in den Betreff ein. Also den "Müller, Peter (Hugos Frittenbude)" oder wie immer der volltsändige angezeigte Name lauten mag.
Wenn du den Namen z.B. nur bis zum ersten auftretenden Komma anzeigen willst (e.g. "Müller" oder bis zur ersten Klammer-Auf ("Müller, Peter"), dann musst du selbst ein wenig feintunen.
Denn sowohl Komma als auch "(" = Klammer-Auf können, aber müssen nicht im String enthalten sein.
Ein Rausfieseln der (möglicherweise) Nachnamens als "das, was vor dem ersten Komma steht", könnte so oder ähnlich aussehen:
[alles vollkommen ungetestet]
Grüße
Biber
ich hab mal deinen Codeschnipsel in Code-tags gesetzt, damit ich einzelne Zeilennummern ansprechen kann.
Du kannst einfach den fast schon fertigen neuen Betreff-String in Zeile 35 um den Absendernamen erweitern.
...
'---------------------------------------------------------------------
' Mit dem Formatbefehl wird das Datum maschinell sortierbar
'---------------------------------------------------------------------
' [alt] objItem.Subject = Format(Date, "yyyy-MM-dd") & " " & objItem.Subject
objItem.Subject = Format(Date, "yyyy-MM-dd") & " [" & objItem.SenderName & "] " & objItem.Subject
....
Anmerkungen:
Dringendst würde ich empfehlen, noch mindestens eine Prüfung mehr auf das "markierte Objekt" zu machen, nämlich ob es sich bei diesem Schlingel denn um eine Mail handelt (und nicht eine Notiz, eine Erinnerung oder einen kontakt in einem öffentlichen Ordner).
Dazu die Prüfung " If objItem.Class <> olMail Then GoTo ExitProc" bzw. "If objItem.Class <> 43 Then GoTo ExitProc" nach der heutigen Zeile 30 einbauen.
Zweite Anmerkung: ich baue den kompletten Absendernamen in den Betreff ein. Also den "Müller, Peter (Hugos Frittenbude)" oder wie immer der volltsändige angezeigte Name lauten mag.
Wenn du den Namen z.B. nur bis zum ersten auftretenden Komma anzeigen willst (e.g. "Müller" oder bis zur ersten Klammer-Auf ("Müller, Peter"), dann musst du selbst ein wenig feintunen.
Denn sowohl Komma als auch "(" = Klammer-Auf können, aber müssen nicht im String enthalten sein.
Ein Rausfieseln der (möglicherweise) Nachnamens als "das, was vor dem ersten Komma steht", könnte so oder ähnlich aussehen:
...
Dim strDispSender as String
Dim i as Long
...
' wenn ein Komma im SENDERNAME enthalten ist..
i = instr(1, objItem.Sendername, ",")
If ( i > 0) Then
strDispSender = left( objItem.sendername, i-1)
Else
strDispSender = objItem.sendername
End if
...
'... und / oder eine ähnliche Mimik für kürzen vor erster "("
Grüße
Biber
Moin TecAttack,
danke für die ausführliche Antwort.
Deine Erwartungshaltung mit dem "Anschubsen in Richtung Lösung" finde ich gut.
Aus meiner Sicht würde es auch nichts bringen, dir einen fertigen Code vor die Füße zu werfen, den du später auch bei kleinen Anpassungen nicht warten kannst - du solltest es auch verstehen.
Und vor allen selbst den Mut/die Neugier zum Experimentieren behalten.
Also, kleine Schubser:
Grüße
Biber
danke für die ausführliche Antwort.
Deine Erwartungshaltung mit dem "Anschubsen in Richtung Lösung" finde ich gut.
Aus meiner Sicht würde es auch nichts bringen, dir einen fertigen Code vor die Füße zu werfen, den du später auch bei kleinen Anpassungen nicht warten kannst - du solltest es auch verstehen.
Und vor allen selbst den Mut/die Neugier zum Experimentieren behalten.
Also, kleine Schubser:
- das Datum, das du brauchst... am geeignetesten wäre das Datumsfeld "ReceivedTime" (Ja, es heißt "xxxTime"; ja, es ist ein Datumsfeld ->siehe unter "Redmond" oder "Praktikantenjobs").
- Alternativdatum wäre das Datumsfeld "SentOn"... aber mit der Absendezeit tun sich neue Tücken auf. Mache es wie meine Praktikantinnen: achte nur auf die Zeit der Empfängnis, also "ReceivedTime".
- das zweite Problem - du extrahierst zwar einen Teilstring des Absendernamens in die Variable "strDispSender", aber diese "strDispSender" wird nie in den neuen Betreff eingebaut.
Grüße
Biber