2012-12-07 4 views
4

이 개체 필요 오류가 발생했습니다. 아래 코드를 참조하십시오. 나는 왜 내가 그것을 얻고 있는지 이해하지 못한다. oitem 변수는 Object로 선언되며 이동하려고 시도하기 전에 "MailItem"유형에 대한 테스트를 수행합니다. 제발 조언.Outlook vba에서 개체 필요 오류

앨런

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 

답변

5

은 괄호를 제거

MoveToArchiveFolder tempMailItem 

는 기본적으로 괄호는 tempMailItem의 가치를 평가하는 말. MailItem의 기본 속성이 전자 메일의 제목이므로 tempMailItem의 코드가 MailItem 대신 함수에 전달됩니다.

왜 여기에 흥미로운 Daily Dose 게시물이 있습니다. Rick Rothstein 코멘트를 꼭 읽으십시오.

관련 문제