【发布时间】:2020-10-27 19:24:04
【问题描述】:
我在 Outlook 2016 Pro Plus 中有已运行多年的 VBA 代码。
突然之间,几乎每次我执行发送和接收时,Set myEmail = 都会出现错误。
Option Explicit
Option Base 1
Option Compare Text
Sub MyRules()
Set myNameSpace = GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
myEmails = myInbox.Items.Count
For myCount = myEmails To 1 Step -1
Set myEmail = myInbox.Items(myCount) '**<<< Error occurs on this line <<<**
Select Case myEmail.SenderEmailAddress
Case Is = "aaa@gmail.com", "bbb@btinternet.com", "ccc@gmail.com"
mySender = "Cxxxxx Dxxxxxx"
Case Else
mySender = myEmail.SenderEmailAddress
End Select
Select Case mySender
Case Is = ""
If myEmail.Subject = "" Then
myEmail.UnRead = False
myEmail.Delete
GoTo Next_EMail
End If
这应该是所有相关的 DIM 语句。
Public myNameSpace As NameSpace
Public myInbox As MAPIFolder
Public myDest As MAPIFolder
Public myEmail As MailItem
Public myEmails As Integer
Public myCount As Integer
Public myAtmt As Attachment
Public myAtmtNo As Integer
Public mySender As String
Public myRecip As Outlook.Recipient
Public mySubFolders As Outlook.Folders
Public mySubFolder As MAPIFolder
Public mySubFolder1 As MAPIFolder
Public mySubFolder2 As MAPIFolder
Public mySubFolder3 As MAPIFolder
Public myNS As NameSpace
Public myTestFolder As Outlook.Folder
Public myFoldersArray As Variant
Public myLoopIndex As Integer
Public myOlApp As Outlook.Application
Public myOlTsk As TaskItem
Public myNoOfEMails As Long
【问题讨论】:
-
您将
myEmail声明为什么?您很可能正在处理不是MailItem的项目...并非所有项目都是电子邮件,即参见this。 -
Dim语句在哪里?你有Option Explicit。请将这些语句添加到您问题中的代码中 -
感谢 BigBen,它设置为“Public myEmail As MailItem”,到目前为止,我注意到 NoReply@Tesco.com、hello@news.monese.com 和 reply@ 这样的事情正在发生e.seetickets.com,但所有这些都已经在我的收件箱中很久了,并且必须通过此代码数千次!如果我收到读取通知,它总是会崩溃,但只有那些,没有别的......