VBA ist sehr nutzvoll um tägliche, wiederkehrende Aufgaben zu automatisieren. Wenn man VBA im Rahmen von Microsoft Outlook einsetzt um die tägliche Arbeit mit den E-Mails zu vereinfachen oder um Formulardaten aus E-Mails mit einem Klick in eine Excel-Tabelle zu übertragen, dann kann es vorkommen, dass man auch mal das Datum und/oder die Zeit auslesen muss, wann man die E-Mail empfangen hat.
VBA-Code
Das ist sogar relativ einfach und mit wenigen Zeilen getan, wenn man erstmal das Mail-Objekt im VBA-Code zu Verfügung hat. Der zugehörige Visual Basic Code sieht wie folgt aus:
Sub TimeOfEMail()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem
Dim objSelection As Outlook.Selection
Dim receivedDateTime As Date
' Outlook Application Objekt
Set objOL = CreateObject("Outlook.Application")
' Collection der ausgewählten Objekte (E-Mails) ermitteln
Set objSelection = objOL.ActiveExplorer.Selection
'Erste ausgewählte E-Mail benutzen
Set objMsg = objSelection.Item(1)
receivedDateTime = objMsg.ReceivedTime
'to something with DateTime Value
Debug.Print receivedDateTime
End Sub
Im ersten Part geht es nur darum das richtige VBA-Objekt zu ermitteln, welches die E-Mail repräsentiert (objMsg). Wenn man das hat, ist es ganz einfach. Denn das MailItem-Objekt hat eine Eigenschaft namens “ReceivedTime“, welche das Datum und die Uhrzeit enthält. Über Debug.Print, wird es in diesem Fall im Konsolenfenster bzw. Direktfenster ausgegeben.
Wem die Standardausgabe nicht genügt, der kann das Empfangsdatum und die Empfangszeit noch formatieren mit der Format-Funktion. Das könnte dann wie folgt aussehen:
MyDate = Format(receivedDateTime, "dddd, mmm d yyyy")
' ergibt "Montag, Feb 27 2023"
Debug.Print MyDate
Weitere und genauere Informationen der verschiedenen Möglichkeiten Datum und Zeit formatiert auszugeben findet man in der Microsoft Dokumentation zur Format-Funktion.