Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Outlook 2003 Makro für Betreff-Veränderung

Mitglied: TecAttack

TecAttack (Level 1) - Jetzt verbinden

08.03.2010, aktualisiert 12:51 Uhr, 9345 Aufrufe, 4 Kommentare

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!
01.
Public Sub InsertDate()
02.

03.
'=====================================================================
04.
' Fügt an den Anfang des Betreffs eines Elements das Datum ein.
05.
' (c) Peter Marchert - http://www.outlook-stuff.com
06.
' 2008-11-09 - Version 1.0.0
07.
' 2008-11-21 - Version 1.0.1
08.
'=====================================================================
09.

10.
Dim objItem As Object ' Aktuelles Element
11.

12.
'---------------------------------------------------------------------
13.
' Fehlerbehandlung wegen Set-Anweisungen ausschalten
14.
'---------------------------------------------------------------------
15.
On Error Resume Next
16.

17.
'---------------------------------------------------------------------
18.
' Aktuell geöffnetes Element refernzieren
19.
'---------------------------------------------------------------------
20.
Set objItem = Outlook.ActiveInspector.CurrentItem
21.

22.
'---------------------------------------------------------------------
23.
' Wenn kein Element geöffnet ist, dann markiertes verwenden
24.
'---------------------------------------------------------------------
25.
If objItem Is Nothing Then Set objItem = Outlook.ActiveExplorer.Selection(1)
26.

27.
'---------------------------------------------------------------------
28.
' Auch nichts markiert?
29.
'---------------------------------------------------------------------
30.
If objItem Is Nothing Then GoTo ExitProc
31.

32.
'---------------------------------------------------------------------
33.
' Mit dem Formatbefehl wird das Datum maschinell sortierbar
34.
'---------------------------------------------------------------------
35.
objItem.Subject = Format(Date, "yyyy-MM-dd") & " " & objItem.Subject
36.

37.
'---------------------------------------------------------------------
38.
' Änderung speichern
39.
'---------------------------------------------------------------------
40.
objItem.Save
41.

42.
ExitProc:
43.

44.
'---------------------------------------------------------------------
45.
' Referenz auf Element löschen
46.
'---------------------------------------------------------------------
47.
Set objItem = Nothing
48.

49.
End Sub
Mitglied: Biber
08.03.2010 um 13:16 Uhr
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.

...
'---------------------------------------------------------------------
' 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:

01.
...
02.
Dim strDispSender as String
03.
Dim i as Long
04.
...
05.
 ' wenn ein Komma im SENDERNAME enthalten ist..
06.
i = instr(1, objItem.Sendername, ",")
07.
If ( i > 0) Then
08.
  strDispSender = left( objItem.sendername, i-1)
09.
Else
10.
  strDispSender = objItem.sendername
11.
End if
12.
...
13.
'... und / oder eine ähnliche Mimik für kürzen vor erster "("
[alles vollkommen ungetestet]

Grüße
Biber
Bitte warten ..
Mitglied: TecAttack
09.03.2010 um 10:37 Uhr
Guten Morgen Biber,

Vorab vielen Dank für all die Tipps, Tricks und Vorschläge!!!!

ich hab mal deinen Codeschnipsel in Code-tags gesetzt, damit ich einzelne Zeilennummern ansprechen kann.

Danke auch hierfür!

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

Hab es fast genauso erweitert wie hier oben vorgeschlagen, d.h. hab nur "[" und "]" weggelassen. Danke für den Vorschlag! Ging auch!

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.

Hab die hier oben zusätzliche Prüfung hoffentlich richtig eingesetzt. Hab das Makro an einem Outlooktermin in meinem Posteingang ausprobiert und es tut sich nichts. Unten ist der überarbeitete Code zu sehen.

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 "("

Hab ich wie hier oben vorgeschlagen übernommen und auch ein wenig (für mich logische) abgeänderte Versionen ausprobiert. Aber irgendwie hab ich es nicht hinbekommen nur den Nachnamen darstellen zu lassen, es erscheint "Müller, Peter" im Betreff. Vielleicht kannst du mir da noch einen Tipp geben?

Bzgl. des Datums: Also im Code steht ja bloß "Date" und genaugenommen ist es offensichtlich das aktuelle Datum. Dieses Makro wird der Ablage für fast ausschließlich ältere emails dienen, d.h. irgendwan nach dem ich eine email erhalten habe werde ich individuell entscheiden ob ich eine email aus bestimmten Gründen ablegen muss. Weiterhin kann ich deshalb das Makro nicht über eine Regel in Outlook ausführen lassen, so dass z.B. emails bei Eingang automatisch verändert werden und somit auch das Eingangsdatum enthalten (wenn ich auf die email antworten würde müsste ich die Änderungen im Betreff rückgängig machen) (war bloß so ne Überlegung). Es wäre super wenn ich das Erhalten- bzw. Gesendet-Datum im Betreff hätte, statt dem aktuellem Datum. Ich hab auch schon rumprobiert und "Date" durch viele diverse Wortspiele wie "SendDate", "DateReceived", usw. ersetzt aber leider hat nichts davon funktioniert. Vielleicht kannst du mir auch hier einen ordentlichen Schubs Richtung Lösung geben?

Sehr wahrscheinlich hast du längst bemerkt, dass ich das Gegenteil eines VBA-Profis bin. Solange ich noch keine Zeit habe VBA intensiv zu lernen (enrsthaft, keine Ausrede) weiß ich jede Hilfe zu schätzen und hoffentlich lerne ich auf diese Weise so viel wie möglich.

Gruß
TecAttack

Hier der überarbeitete Code:
01.
Public Sub InsertDateAndSenderName()
02.

03.
'=====================================================================
04.
' Fügt an den Anfang des Betreffs eines Elements das Datum ein.
05.
' (c) Peter Marchert - http://www.outlook-stuff.com
06.
' 2008-11-09 - Version 1.0.0
07.
' 2008-11-21 - Version 1.0.1
08.
'=====================================================================
09.

10.
Dim objItem As Object ' Aktuelles Element
11.
Dim strDispSender As String
12.
Dim i As Long
13.

14.
'---------------------------------------------------------------------
15.
' Fehlerbehandlung wegen Set-Anweisungen ausschalten
16.
'---------------------------------------------------------------------
17.
On Error Resume Next
18.

19.
'---------------------------------------------------------------------
20.
' Aktuell geöffnetes Element refernzieren
21.
'---------------------------------------------------------------------
22.
Set objItem = Outlook.ActiveInspector.CurrentItem
23.

24.
'---------------------------------------------------------------------
25.
' Wenn kein Element geöffnet ist, dann markiertes verwenden
26.
'---------------------------------------------------------------------
27.
If objItem Is Nothing Then Set objItem = Outlook.ActiveExplorer.Selection(1)
28.

29.
'---------------------------------------------------------------------
30.
' Auch nichts markiert?
31.
'---------------------------------------------------------------------
32.
If objItem Is Nothing Then GoTo ExitProc
33.

34.
'---------------------------------------------------------------------
35.
' Aktuelles Datum [yyyy-mm-dd] und Absender hinzufügen
36.
'---------------------------------------------------------------------
37.

38.
' [alt] objItem.Subject = Format(Date, "yyyy-MM-dd") & "  " & objItem.Subject
39.
objItem.Subject = Format(Date, "yyyy-MM-dd") & "  " & objItem.SenderName & " " & objItem.Subject
40.

41.
'---------------------------------------------------------------------
42.
' Nur das was vor dem Komma (soweit vorhanden) im SENDERNAME
43.
' enthalten ist übernehmen
44.
'---------------------------------------------------------------------
45.

46.
i = InStr(1, objItem.SenderName, ",")
47.
If (i > 0) Then
48.
  strDispSender = Left(objItem.SenderName, i - 1)
49.
Else
50.
  strDispSender = objItem.SenderName
51.
End If
52.

53.
'---------------------------------------------------------------------
54.
' Prüfung ob es sich um eine Email handelt oder nicht
55.
'---------------------------------------------------------------------
56.

57.
If objItem.Class <> olMail Then GoTo ExitProc
58.

59.
'---------------------------------------------------------------------
60.
' Änderung speichern
61.
'---------------------------------------------------------------------
62.
objItem.Save
63.

64.
ExitProc:
65.

66.
'---------------------------------------------------------------------
67.
' Referenz auf Element löschen
68.
'---------------------------------------------------------------------
69.
Set objItem = Nothing
70.

71.
End Sub
Bitte warten ..
Mitglied: Biber
09.03.2010 um 11:20 Uhr
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:
  • 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.
Die jetzige Zeile 39 (ich hab nochmal Codetags nachgetragen *vorwurfsvoll gugg*), in der der neue Betreff zusammengeschrotet wird, muss NACH der "strDispSender"-Bastelei zu liegen kommen. Und dort muss statt "objItem.Sendername" nun die Variable "strDispSender" rein.

Grüße
Biber
Bitte warten ..
Mitglied: TecAttack
09.03.2010 um 17:04 Uhr
Hey Biber,

Habs mit deinen Schubsern geschafft, vielen Dank! Ich komme mir vor wie der König der Welt!
Nun hab ich schon die nächsten beiden Ideen, den Code zu erweitern und würde mich dann gegebenenfalls melden, falls ich der König es nicht selbst schaffe aber das wär ja wohl gelacht *lach lach* *lach lach*

Danke und Gruß
TecAttack

Hier der fertige und getestete Code:

01.
Public Sub InsertDate()
02.

03.
'=====================================================================
04.
' Fügt an den Anfang des Betreffs eines Elements das Datum und Nachnamen ein.
05.
' 2008-11-21 - Version 1.0.0
06.
'=====================================================================
07.

08.

09.
Dim objItem As Object ' Aktuelles Element
10.
Dim strDispSender As String
11.
Dim i As Long
12.

13.
'---------------------------------------------------------------------
14.
' Fehlerbehandlung wegen Set-Anweisungen ausschalten
15.
'---------------------------------------------------------------------
16.
On Error Resume Next
17.

18.
'---------------------------------------------------------------------
19.
' Aktuell geöffnetes Element refernzieren
20.
'---------------------------------------------------------------------
21.
Set objItem = Outlook.ActiveInspector.CurrentItem
22.

23.
'---------------------------------------------------------------------
24.
' Wenn kein Element geöffnet ist, dann markiertes verwenden
25.
'---------------------------------------------------------------------
26.
If objItem Is Nothing Then Set objItem = Outlook.ActiveExplorer.Selection(1)
27.

28.
'---------------------------------------------------------------------
29.
' Auch nichts markiert?
30.
'---------------------------------------------------------------------
31.
If objItem Is Nothing Then GoTo ExitProc
32.

33.
'---------------------------------------------------------------------
34.
' Nur das was vor dem Komma (soweit vorhanden) im SenderName
35.
' enthalten ist übernehmen
36.
'---------------------------------------------------------------------
37.

38.
i = InStr(1, objItem.SenderName, ",")
39.
If (i > 0) Then
40.
  strDispSender = Left(objItem.SenderName, i - 1)
41.
Else
42.
  strDispSender = objItem.SenderName
43.
End If
44.

45.
'---------------------------------------------------------------------
46.
' Aktuelles Datum [yyyy-mm-dd] und Absender hinzufügen
47.
'---------------------------------------------------------------------
48.

49.
' [alt] objItem.Subject = Format(Date, "yyyy-MM-dd") & "  " & objItem.Subject
50.
objItem.Subject = Format(objItem.ReceivedTime, "yyyy-MM-dd") & "  " & strDispSender & " " & objItem.Subject
51.

52.
'---------------------------------------------------------------------
53.
' Prüfung ob es sich um eine Email handelt oder nicht
54.
'---------------------------------------------------------------------
55.

56.
If objItem.Class <> olMail Then GoTo ExitProc
57.

58.
'---------------------------------------------------------------------
59.
' Änderung speichern
60.
'---------------------------------------------------------------------
61.
objItem.Save
62.

63.
ExitProc:
64.

65.
'---------------------------------------------------------------------
66.
' Referenz auf Element löschen
67.
'---------------------------------------------------------------------
68.
Set objItem = Nothing
69.

70.
End Sub
Bitte warten ..
Ähnliche Inhalte
Outlook & Mail
Outlook 2016 - Makro
gelöst Frage von apex.predator24Outlook & Mail7 Kommentare

Hallo Zusammen Da es im Outlook keine Funktion oder Möglichkeit existiert, die An- und Rückfahrt von einem Termin separat ...

Outlook & Mail

Outlook 2003 - E-Mailansicht zwei Zeilen - Betreff und Absender vertauscht

gelöst Frage von ExcaliburxOutlook & Mail1 Kommentar

Hallo Zusammen, Outlook 2003 ist im Einsatz mit Exchange. Bei einem Client werden die E-Mails im Ordner Posteingang und ...

Microsoft Office

Outlook 2010 Betreff ändern bzw. einkürzen

gelöst Frage von Denyo25Microsoft Office9 Kommentare

Hallo, ich suche eine Lösung für folgendes. Exchange 2010 Outlook 2010 In ein bestimmtes Postfach kommen Mails mit einem ...

VB for Applications

Vba Outlook Betreff Datum - Absender - Empfänger

Frage von Romy0907VB for Applications7 Kommentare

Hallo liebe Community, ich bin noch sehr neu im Gebiet vba und benötige daher eure Hilfe - es ist ...

Neue Wissensbeiträge
Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 22 StundenWindows 7

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 3 TagenInternet1 Kommentar

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 4 TagenMicrosoft Office7 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Sicherheit
Schwachstellen in VPN Clients
Tipp von transocean vor 6 TagenSicherheit2 Kommentare

Moin, es gibt Sicherheitslücken bei VPN Clients namhafter Hersteller, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
Virtualisierung
Unix System virtualisieren
Frage von BananenmeisterVirtualisierung10 Kommentare

Hallo Zusammen, Ich möchte gerne eine Virtualisierungs-Software auf meinem kleinen ML Server installieren um einige Unix Systeme zu virtualisieren. ...

Hyper-V
Chaosbeseitigung in Domainlandschaft
Frage von Rolf935Hyper-V10 Kommentare

Hallo zusammen, ich hätte gerne mal ein paar praktische Tipps oder Hinweise. Derzeit haben wir einen NAS als Fileserver ...

LAN, WAN, Wireless
Lancom und VLANs
Frage von TimmheLAN, WAN, Wireless10 Kommentare

Hallo an alle ich habe momentan ein sehr merkwürdiges problem bei dem ich nicht mehr weiter komme und hoffe ...

Notebook & Zubehör
Hardware defekt ?
Frage von mausemuckelNotebook & Zubehör9 Kommentare

Hallo und ein schönes Osterfest an alle. Ich benötige mal euer Schwarm wissen. Ich habe hier ein Notebook Lenovo ...