我必须做一个宏,以计数电子邮件发件人。
这是我的密码
Dim objDictionary As Object
Dim objInbox As Outlook.Folder
Dim i As Long
Dim objMail As Outlook.MailItem
Dim strSender As String
Dim objExcelApp As Excel.Application
Dim objExcelWorkbook As Excel.Workbook
Dim objExcelWorksheet As Excel.Worksheet
Dim varSenders As Variant
Dim varItemCounts As Variant
Dim nLastRow As Integer
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objInbox = Outlook.Application.Session.GetDefaultFolder(olFolderInbox)
For i = objInbox.Items.Count To 1 Step -1
If objInbox.Items(i).Class = olMail Then
Set objMail = objInbox.Items(i)
strSender = objMail.SenderEmailAddress
If objDictionary.Exists(strSender) Then
objDictionary.Item(strSender) = objDictionary.Item(strSender) + 1
Else
objDictionary.Add strSender, 1
End If
End If
Next
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = True
Set objExcelWorkbook = objExcelApp.Workbooks.Add
Set objExcelWorksheet = objExcelWorkbook.Sheets(1)
With objExcelWorksheet
.Cells(1, 1) = "Sender"
.Cells(1, 2) = "Count"
End With
varSenders = objDictionary.Keys
varItemCounts = objDictionary.Items
For i = LBound(varSenders) To UBound(varSenders)
nLastRow = objExcelWorksheet.Range("A" & objExcelWorksheet.Rows.Count).End(xlUp).Row + 1
With objExcelWorksheet
.Cells(nLastRow, 1) = varSenders(i)
.Cells(nLastRow, 2) = varItemCounts(i)
End With
Next
objExcelWorksheet.Columns("A:B").AutoFit
End Sub
问题是,当我执行代码时,我遇到了这个问题,在这里输入图像描述
错误说明:底层安全系统找不到您的数字ID。
你能帮我一下吗?
发布于 2022-08-29 21:18:55
首先,不需要迭代文件夹中的所有项:
For i = objInbox.Items.Count To 1 Step -1
If objInbox.Items(i).Class = olMail Then
相反,您需要使用Find
/FindNext
或Items
类的Restrict
方法来只获取与您的条件相对应的项。在我所写的文章中,了解更多关于这些方法的内容:
例如,可以使用以下搜索条件从特定发件人的电子邮件地址获取项目:
criteria = "@SQL=" & Chr(34) _
& "urn:schemas:httpmail:senderemail" & Chr(34) _
& " = 'some@email.com'"
或者更好的是:
Filter = "@SQL=" & " urn:schemas:httpmail:senderemail Like '%some@email.com%'"
有关详细信息,请参阅使用字符串比较筛选项。
在将筛选器应用于集合之后,您可以签出Items
类的Items
属性,该属性可以给出来自特定发件人的项数。
如果您需要从文件夹中接收到的最新项目,则需要执行以下操作:
Items
项。一种可能的选择是使用Find
/FindNext
或Items
类的Restrict
方法获取特定日期的项。
https://stackoverflow.com/questions/73529129
复制相似问题