【发布时间】:2017-01-06 17:19:38
【问题描述】:
我正在编写一个应该删除附件的宏。从我的调试会话来看,它似乎应该可以工作。断点被命中,它识别出消息对象:
我知道这听起来有点傻,但奇怪的是,如果我设置断点并打开表达式/监视,它似乎可以工作,但否则就不行。
我已经为此苦苦挣扎了一段时间;如有任何指导,我将不胜感激。
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim header As String
Dim objNewMail As Outlook.MailItem
Dim Item As Object
Dim count As Integer
Dim objInbox As Outlook.Folder
Set objInbox = Outlook.Session.GetDefaultFolder(olFolderInbox)
Dim entryIDs
entryIDs = Split(EntryIDCollection, ",")
Dim i As Integer
For i = 0 To UBound(entryIDs)
Set objNewMail = Application.Session.GetItemFromID(entryIDs(i))
If objNewMail.Attachments.count > 0 Then
header = GetHeader(objNewMail)
If DoesIPMatch(header) <> True Then
DeleteMessage (objNewMail)
ElseIf IsAttachmentPDF(objNewMail) <> True Then
For count = 1 To objNewMail.Attachments.count
objNewMail.Attachments.Remove (count)
Next
End If
End If
Next
End Sub
【问题讨论】:
-
可能不是问题,但
(count)周围的括号是多余的。objNewMail.Attachments.Remove count应该足够了。count不需要按值进行评估和传递(这就是额外的括号所做的)......它已经是一个值。 -
谢谢!我不是 VBA 人(更像是 C# gal),所以我非常感谢您的观察。