[Outlook / VBA] Tijd en/of datum in onderwerp ontvangen mail

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Cheesy
  • Registratie: Mei 2006
  • Niet online
Mijn vraag
Bij inkomende mail wil ik de tijd en/of datum invoegen achter het onderwerp.

Relevante software en hardware die ik gebruik
Outlook 2013

Wat ik al gevonden of geprobeerd heb
De volgende code heb ik gevonden en werkend, alleen deze moet handmatig uitgevoerd worden.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub AddDatetoSubject()
Dim myolApp As Outlook.Application
Dim aItem As MailItem ' Object

Set myolApp = CreateObject("Outlook.Application")
Set mail = myolApp.ActiveExplorer.CurrentFolder

Dim iItemsUpdated As Integer
Dim strTemp As String
Dim strDate As String

iItemsUpdated = 0
For Each aItem In mail.Items
Debug.Print aItem.ConversationTopic
strDate = Format(aItem.ReceivedTime, "mm-dd-yyyy")
    strTemp = aItem.Subject & " " & strDate
      aItem.Subject = strTemp
      iItemsUpdated = iItemsUpdated + 1
    aItem.Save
Next aItem

MsgBox iItemsUpdated & " of " & mail.Items.Count & " Messages Updated"
Set myolApp = Nothing
End Sub

bron = https://www.slipstick.com...subject-line-of-messages/

Ik wil echter het script verwerken in een regel voor inkomende mail.

Ik heb een (andere) code gevonden die automatisch toepasbaar is als regel
Deze print echter geen datum, maar een opeenvolgend nummer.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub SubjectNumbering(Item As Outlook.MailItem)
 Dim sAppName As String
 Dim sSection As String
 Dim sKey As String
 Dim lRegValue As Long
 Dim lFormValue As Long
 Dim iDefault As Integer
 sAppName = "Outlook"
 sSection = "Messages"
 sKey = "Current Number"

' The default starting number.
     iDefault = 101 ' adjust as needed
 
 ' Get stored registry value, if any.
     lRegValue = GetSetting(sAppName, sSection, sKey, iDefault)
 
 ' If the result is 0, set to default value.
     If lRegValue = 0 Then lRegValue = iDefault
 
 ' Increment and update invoice number.
     SaveSetting sAppName, sSection, sKey, lRegValue + 1
 
 Item.Subject = Item.Subject & " [" & CStr(lRegValue) & "]"
 Item.Save
  
End Sub

bron = https://www.slipstick.com...subject-line-of-messages/

Mijn kennis van programmeren is helaas zo goed als 0 (ben geen echte Tweaker :$ )
Ik wil dus een combinatie maken van deze 2. Iemand een zetje?

Beste antwoord (via Cheesy op 12-05-2020 10:35)


  • Belindo
  • Registratie: December 2012
  • Laatst online: 20:13

Belindo

▶ ─🔘─────── 15:02

akimosan schreef op maandag 11 mei 2020 @ 17:32:
Hmm, de acties om scripts te draaien of een applicatie te starten zijn verwijderd in nieuwere versie van Outlook. Welke versie van Outlook gebruik je? (Ah, Outlook 2013, daar had ik even overheen gelezen)

Dus zelfs al krijg je bruikbare code dan is nog de vraag hoe lang dit uitvoerbaar is. Dat is niet meer het geval als je Outlook bijwerkt naar nieuwere versies.
Heb je hier een bron voor? Ik gebruik om mijn werk aardig wat VBA in Outlook wat getriggerd wordt door mailrules (attachment opslaan, taak starten om attachment op te schonen en te importeren in een database). Aangezien hier aardig wat automatisering aanhangt (wat ik dus niet meer handmatig hoef te doen, elke dag), wil ik dit graag zo houden en zal ik moeten zorgen dat IT geen Office updates meer pusht naar mijn server.

@Cheesy, je bent er met deze code al bijna. De eerste code voegt een timestamp toe aan het subject, maar werkt niet via een rule, en de tweede code werkt via een rule maar voegt een nummer toe aan het subject.

Je moet dus de 2e code aanpassen met stukjes uit de eerste code, gelukkig VBA niet heel lastig te lezen. Let wel dat de eerste code 'aItem' gebruikt voor een 'MailItem', en de tweede code gebruikt 'Item'. Relevante stukjes uit de eerste code zijn
code:
1
strDate = Format(aItem.ReceivedTime, "mm-dd-yyyy")
om de datum uit het item te krijgen, en
code:
1
2
strTemp = aItem.Subject & " " & strDate
      aItem.Subject = strTemp
om een tijdelijke subject te generere (huidig subject plus datum) en daarna de subject aan te passen naar die tijdelijke.

Coding in the cold; <brrrrr />

Alle reacties


Acties:
  • 0 Henk 'm!

  • akimosan
  • Registratie: Augustus 2003
  • Niet online
Hmm, de acties om scripts te draaien of een applicatie te starten zijn verwijderd in nieuwere versie van Outlook. Welke versie van Outlook gebruik je? (Ah, Outlook 2013, daar had ik even overheen gelezen)

Dus zelfs al krijg je bruikbare code dan is nog de vraag hoe lang dit uitvoerbaar is. Dat is niet meer het geval als je Outlook bijwerkt naar nieuwere versies.
Eveneens werken dit soort regels ook niet "server" side, dus de regel werkt bijvoorbeeld alleen wanneer je Outlook geopend zou hebben terwijl berichten binnenkomen. Misschien als je gebruikmaakt van POP3 email zou dat kunnen werken. Maar in geval van Exchange Server worden berichten al bezorgd in de mailbox en "raadpleegt" Outlook slechts de mailbox en werken dit soort regels niet consistent.

Daarbij, wat levert het op? Timestamps worden al toegevoegd aan berichten, dit in een weergave zetten in Outlook is vrij eenvoudig. Ik probeer er dus even achter te komen met welk doel je dit voor elkaar wilt krijgen, wellicht zijn er handiger manieren om email te beheren.

Acties:
  • 0 Henk 'm!

  • Cheesy
  • Registratie: Mei 2006
  • Niet online
Om met het doel te beginnen, ik krijg soms een hoop emails binnen met hetzelfde onderwerp. Deze worden in werkmappen opgeslagen middels drag en drop. Zolang dit in één actie gebeurt hernummert Windows/Outlook zelf de bestandsnaam naar "Re: Onderwerp(1)", "Re: Onderwerp (2)", etc. Maar als dit niet in een actie gedaan wordt (bijvoorbeeld omdat ik een dag later weer email krijg) dan moet je zelf eerst handmatig bestandsnamen aanpassen.

De eerste code die ik post is dus al een oplossing voor mij, echter vind ik een nummer niet mooi staan, ook bij beantwoorden van een mail. Een datum en/of tijdstempel zou mooier staan.

Verder heb je een punt, dit gebeurt niet server side, maar dat is voor mij geen probleem.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Belindo
  • Registratie: December 2012
  • Laatst online: 20:13

Belindo

▶ ─🔘─────── 15:02

akimosan schreef op maandag 11 mei 2020 @ 17:32:
Hmm, de acties om scripts te draaien of een applicatie te starten zijn verwijderd in nieuwere versie van Outlook. Welke versie van Outlook gebruik je? (Ah, Outlook 2013, daar had ik even overheen gelezen)

Dus zelfs al krijg je bruikbare code dan is nog de vraag hoe lang dit uitvoerbaar is. Dat is niet meer het geval als je Outlook bijwerkt naar nieuwere versies.
Heb je hier een bron voor? Ik gebruik om mijn werk aardig wat VBA in Outlook wat getriggerd wordt door mailrules (attachment opslaan, taak starten om attachment op te schonen en te importeren in een database). Aangezien hier aardig wat automatisering aanhangt (wat ik dus niet meer handmatig hoef te doen, elke dag), wil ik dit graag zo houden en zal ik moeten zorgen dat IT geen Office updates meer pusht naar mijn server.

@Cheesy, je bent er met deze code al bijna. De eerste code voegt een timestamp toe aan het subject, maar werkt niet via een rule, en de tweede code werkt via een rule maar voegt een nummer toe aan het subject.

Je moet dus de 2e code aanpassen met stukjes uit de eerste code, gelukkig VBA niet heel lastig te lezen. Let wel dat de eerste code 'aItem' gebruikt voor een 'MailItem', en de tweede code gebruikt 'Item'. Relevante stukjes uit de eerste code zijn
code:
1
strDate = Format(aItem.ReceivedTime, "mm-dd-yyyy")
om de datum uit het item te krijgen, en
code:
1
2
strTemp = aItem.Subject & " " & strDate
      aItem.Subject = strTemp
om een tijdelijke subject te generere (huidig subject plus datum) en daarna de subject aan te passen naar die tijdelijke.

Coding in the cold; <brrrrr />


Acties:
  • +1 Henk 'm!

  • Cheesy
  • Registratie: Mei 2006
  • Niet online
Dankje, dat was precies wat nodig was! :D
Het werkt hier, heb de tijd zelfs ook achter gezet (mm-dd-yyyy hh:mm)

Acties:
  • 0 Henk 'm!

  • Belindo
  • Registratie: December 2012
  • Laatst online: 20:13

Belindo

▶ ─🔘─────── 15:02

Ah, stom, nu ik je bronnen zo lees schiet me te binnen dat ik inderdaad al eens een fix in Regedit heb toegepast:
code:
1
2
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security]
"EnableUnsafeClientMailRules"=dword:00000001

Ik heb een .bat file voor deze, en nog wat andere workarounds voor Access, die bij elke reboot uitgevoerd wordt.

Desondanks bedankt voor het opzoeken van de bronnen (y)

Coding in the cold; <brrrrr />

Pagina: 1