3

この Object Required エラーが発生しています。以下のコードを参照してください。なんで受かったのか理解不能。oitem 変数はオブジェクトとして宣言されており、移動を試みる前に「MailItem」型のテストを行います。お知らせ下さい。

アラン

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
4

1 に答える 1

5

かっこを削除します。

MoveToArchiveFolder tempMailItem

基本的に、括弧は の値を評価することを示していますtempMailItem。a のデフォルト プロパティはMailItem電子メールの件名であるため、コードはそれ自体tempMailItemではなく、 の件名を関数に渡しますMailItem

その理由については、Daily Doseの興味深い記事をご覧ください。Rick Rothstein のコメントを必ずお読みください。

于 2012-12-07T14:39:35.757 に答える