Berenloper
Nieuwe gebruiker
- Lid geworden
- 8 apr 2019
- Berichten
- 2
Hallo allemaal,
Ik wil graag de velden 'Van' ('From') en Datum ('Date') uit een e-mailheader halen en in het klembord samenvoegen als 'Van[komma][spatie]Datum'.
Dan kan ik deze tekst vervolgens overal in plakken. Een voorbeeld: "John Doe <j.doe@xxxx.com>, Mon, 8 Apr 2019 17:43:43 +0200" (zonder de ")
Dat de datum nogal uitgebreid is, is geen probleem, maar de tijdszone aanduiding zou eventueel weggelaten kunnen worden.
Ik weet een weinig van VBA en vond de volgende code. (hiermee komt het Van-veld in een nieuw e-mailbericht te staan, maar dat wil ik dus allemaal niet)
In deze code zal iets moeten van:
Ik ben een tijdje aan het puzelen geweest, maar mijn kennis houdt inmiddels zo'n beetje op
Weet iemand van jullie hoe dit te maken?
NB. de verwijzing naar MS VBScript Regular Expressions 5.5 heb ik actief.
Alvast dank voor je poging!
Groet,
Berenloper
Ik wil graag de velden 'Van' ('From') en Datum ('Date') uit een e-mailheader halen en in het klembord samenvoegen als 'Van[komma][spatie]Datum'.
Dan kan ik deze tekst vervolgens overal in plakken. Een voorbeeld: "John Doe <j.doe@xxxx.com>, Mon, 8 Apr 2019 17:43:43 +0200" (zonder de ")
Dat de datum nogal uitgebreid is, is geen probleem, maar de tijdszone aanduiding zou eventueel weggelaten kunnen worden.
Ik weet een weinig van VBA en vond de volgende code. (hiermee komt het Van-veld in een nieuw e-mailbericht te staan, maar dat wil ik dus allemaal niet)
Code:
Sub GetValuesFromInternetHeader()
Dim olItem As Outlook.MailItem, olMsg As Outlook.MailItem
Dim strHeader As String
Dim strResult As String
Dim strResults As String
Dim Reg1 As Object
Dim M1 As Object
Dim M As Object
For Each olItem In Application.ActiveExplorer.Selection
strHeader = GetInetHeaders(olItem)
Set Reg1 = CreateObject("VBScript.RegExp")
With Reg1
.Pattern = "(From:\s(.*))"
.Global = True
End With
If Reg1.test(strHeader) Then
Set M1 = Reg1.Execute(strHeader)
For Each M In M1
' 0 = everything in the first set of ()
' 1 = everything in the second set of ()
Debug.Print M.SubMatches(0)
strResult = M.SubMatches(1)
' do something with the result
strResults = strResult & vbCrLf & vbCrLf & strResults
Next
End If
Next
Set olMsg = Application.CreateItem(olMailItem)
With olMsg
.BodyFormat = olFormatPlain
.Body = strResults
.Display
End With
Set olMsg = Nothing
End Sub
Function GetInetHeaders(olkMsg As Outlook.MailItem) As String
' Purpose: Returns the internet headers of a message.'
' Written: 4/28/2009'
' Author: BlueDevilFan'
' //techniclee.wordpress.com/
' Outlook: 2007'
Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"
Dim olkPA As Outlook.PropertyAccessor
Set olkPA = olkMsg.PropertyAccessor
GetInetHeaders = olkPA.GetProperty(PR_TRANSPORT_MESSAGE_HEADERS)
Set olkPA = Nothing
End Function
In deze code zal iets moeten van:
Code:
For i = 1 To 2
With Reg1
Select Case i
Case 1
.Pattern = "(From:\s(.*))"
.Global = True
Case 2
.Pattern = "(Date:\s(.*))"
.Global = True
End Select
End With
Ik ben een tijdje aan het puzelen geweest, maar mijn kennis houdt inmiddels zo'n beetje op
Weet iemand van jullie hoe dit te maken?
NB. de verwijzing naar MS VBScript Regular Expressions 5.5 heb ik actief.
Alvast dank voor je poging!
Groet,
Berenloper