outlook vba 数组中每个邮件项目的正则表达式
outlook vba regex on each mail item in array
我正在使用下面的代码创建输出,显示每天定义的文件夹中有多少封电子邮件。这一切都很好......我的问题是在 XXXXX 部分,我如何引用每个邮件项目以便我可以为单词模式做一个正则表达式?最终目标是找出在给定日期有多少电子邮件包含关键字。所需的输出是这样的:
,
2015-01-01,15,2,5
2015-01-01,23,22,0
...
...
我可以找出根据关键字确定电子邮件数量的代码,只是不确定如何像今天这样根据代码引用电子邮件...
感谢您的建议。
子 HowManyEmails()
Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder
Dim EmailCount As Integer
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
On Error Resume Next
Set objFolder = objnSpace.Folders("Personal Folders").Folders("Inbox").Folders("jobs.keep")
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
EmailCount = objFolder.Items.Count
MsgBox "Number of emails in the folder: " & EmailCount, , "email count"
Dim dateStr As String
Dim myItems As Outlook.Items
Dim dict As Object
Dim msg As String
Set dict = CreateObject("Scripting.Dictionary")
Set myItems = objFolder.Items
myItems.SetColumns ("SentOn")
' Determine date of each message:
For Each myItem In myItems
xxxxxxx
xxxxxxx
xxxxxxx
dateStr = GetDate(myItem.SentOn)
If Not dict.Exists(dateStr) Then
dict(dateStr) = 0
End If
dict(dateStr) = CLng(dict(dateStr)) + 1
Next myItem
'将输出写入文件
昏暗的环境作为字符串
enviro = CStr(环境("USERPROFILE"))
文件路径 = enviro & "\Desktop\emails.csv"
打开 FILEPATH 输出为 1
消息=“”
对于 dict.Keys 中的每个 o
msg = msg & o & "," & dict(o) & vbCrLf
'消息框消息
下一个
打印#1,消息
关闭 #1
'将输出写入文件
Set objFolder = Nothing
Set objnSpace = Nothing
Set objOutlook = Nothing
结束子
函数 GetDate(dt As Date) As String
GetDate = 年(dt) & "-" & 月(dt) & "-" & 日(dt)
结束函数
您需要检查代码中的项目类型:
Dim myMailItem As Outlook.mailItem
....
For each myItem in myItems
If TypeOf myItem Is MailItem Then
Set myMailItem = myItem
XXXXXXXXXXX and rest of code here use myMailItem instead of myItem to get info
End If
Next myItem
首先,我建议使用项目 class 的 Find/FindNext or Restrict 方法来查找与指定条件匹配的项目子集。遍历文件夹中的所有项目可能会花费很多时间。
objnSpace.Folders("Personal Folders").Folders("Inbox")
使用命名空间 class 的 GetDefaultFolder 方法获取代表当前配置文件所请求类型的默认文件夹的文件夹。
Outlook 使用 EntryID values for identifying Outlook items uniquely. See Working with EntryIDs and StoreIDs for more information. If you know the IDs of an item and the folder it's stored in, you can directly reference the item using the NameSpace.GetItemFromID 方法。
我正在使用下面的代码创建输出,显示每天定义的文件夹中有多少封电子邮件。这一切都很好......我的问题是在 XXXXX 部分,我如何引用每个邮件项目以便我可以为单词模式做一个正则表达式?最终目标是找出在给定日期有多少电子邮件包含关键字。所需的输出是这样的:
, 2015-01-01,15,2,5 2015-01-01,23,22,0 ... ...
我可以找出根据关键字确定电子邮件数量的代码,只是不确定如何像今天这样根据代码引用电子邮件...
感谢您的建议。
子 HowManyEmails()
Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder
Dim EmailCount As Integer
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
On Error Resume Next
Set objFolder = objnSpace.Folders("Personal Folders").Folders("Inbox").Folders("jobs.keep")
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
EmailCount = objFolder.Items.Count
MsgBox "Number of emails in the folder: " & EmailCount, , "email count"
Dim dateStr As String
Dim myItems As Outlook.Items
Dim dict As Object
Dim msg As String
Set dict = CreateObject("Scripting.Dictionary")
Set myItems = objFolder.Items
myItems.SetColumns ("SentOn")
' Determine date of each message:
For Each myItem In myItems
xxxxxxx
xxxxxxx
xxxxxxx
dateStr = GetDate(myItem.SentOn)
If Not dict.Exists(dateStr) Then
dict(dateStr) = 0
End If
dict(dateStr) = CLng(dict(dateStr)) + 1
Next myItem
'将输出写入文件 昏暗的环境作为字符串 enviro = CStr(环境("USERPROFILE")) 文件路径 = enviro & "\Desktop\emails.csv" 打开 FILEPATH 输出为 1 消息=“” 对于 dict.Keys 中的每个 o msg = msg & o & "," & dict(o) & vbCrLf '消息框消息 下一个 打印#1,消息 关闭 #1 '将输出写入文件
Set objFolder = Nothing
Set objnSpace = Nothing
Set objOutlook = Nothing
结束子
函数 GetDate(dt As Date) As String GetDate = 年(dt) & "-" & 月(dt) & "-" & 日(dt) 结束函数
您需要检查代码中的项目类型:
Dim myMailItem As Outlook.mailItem
....
For each myItem in myItems
If TypeOf myItem Is MailItem Then
Set myMailItem = myItem
XXXXXXXXXXX and rest of code here use myMailItem instead of myItem to get info
End If
Next myItem
首先,我建议使用项目 class 的 Find/FindNext or Restrict 方法来查找与指定条件匹配的项目子集。遍历文件夹中的所有项目可能会花费很多时间。
objnSpace.Folders("Personal Folders").Folders("Inbox")
使用命名空间 class 的 GetDefaultFolder 方法获取代表当前配置文件所请求类型的默认文件夹的文件夹。
Outlook 使用 EntryID values for identifying Outlook items uniquely. See Working with EntryIDs and StoreIDs for more information. If you know the IDs of an item and the folder it's stored in, you can directly reference the item using the NameSpace.GetItemFromID 方法。