我收到此“需要对象”错误。请参阅下面的代码。我不明白为什么我会得到它。 oitem 变量被声明为对象,并且在尝试移动它之前我对类型“MailItem”进行了测试。请指教。
Alan
Public StatsArchiveFolder As Outlook.Folder
'StatsArchiveFolder is set to equal an Outlook.Folder elsewhere
_____________________________________
Sub MoveHarpStatMail()
Dim olapp As Outlook.Application
Dim olappns As Outlook.NameSpace
Dim oitem As Object
Dim ItemsToProcess As Outlook.Items
Dim myFolder As MAPIFolder
Dim sFilter As String
Dim tempMailItem As Outlook.MailItem
On Error GoTo LocalErr
'set outlook objects
Set olapp = New Outlook.Application
Set olappns = olapp.GetNamespace("MAPI")
Set myFolder = olappns.GetDefaultFolder(olFolderInbox)
'Filter or only MailItems received today
sFilter = "[ReceivedTime] >= " & AddQuotes(Format(Date, "ddddd"))
Set ItemsToProcess = Session.GetDefaultFolder(olFolderInbox).Items.Restrict(sFilter)
For Each oitem In ItemsToProcess
If TypeName(oitem) = "MailItem" Then
Set tempMailItem = oitem
If CheckSubject(tempMailItem.Subject) Then
MoveToArchiveFolder (tempMailItem) '<<<Error 424 Object Required ???
End If
End If
Next oitem
ExitProc:
Set olapp = Nothing
Set olappns = Nothing
Set myFolder = Nothing
Set ItemsToProcess = Nothing
...
End Sub
_________________________________
Function CheckSubject(Subject As String) As Boolean
If (LCase(Trim(Subject)) = LCase(SubjectTitle)) Then
CheckSubject = True
Else
CheckSubject = False
End If
End Function
______________________________
Sub MoveToArchiveFolder(Item As Outlook.MailItem)
If (ArchiveFolder = Nothing) Then
MsgBox ("The ArchiveFolder object is not set.")
End If
Item.Move (StatsArchiveFolder)
End Sub
去掉括号:
MoveToArchiveFolder tempMailItem
基本上括号里说的是评估tempMailItem
。 a 的默认属性MailItem
是电子邮件的主题,因此您的代码通过了tempMailItem
取决于你的功能,而不是MailItem
itself.
这里有一个有趣的每日剂量 http://www.dailydoseofexcel.com/archives/2012/05/01/quick-vba-tip-parentheses/发帖说明原因。请务必阅读 Rick Rothstein 的评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)