outlook vba - переместить электронную почту в папку, требуется объект


2

Я пытаюсь написать некоторую vba, которая будет перемещать электронные письма по мере их поступления в определенную папку.

код, до сих пор является:

Private WithEvents myItems as Outlook.Items 
Public Sub Application_Startup() 
    Dim myApp as Outlook.Application 
    Dim myNameSpace as Outlook.NameSpace 
    Dim myInbox as Outlook.Folder 

    Set myApp = Outlook.Application 
    Set myNameSpace = myApp.GetNamespace("MAPI") 
    Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox) 
    Set myItems = myInbox.Items 
End Sub 

Private Sub myItems_ItemAdd(ByVal item as Object) 
    Dim msg as Outlook.MailItem 
    Dim recips as String 
    Dim destFolder as Outlook.Folder 

    Set destFolder = myInbox.Folders("Test") 
    Set msg = item 
    recips = msg.To 
    If InStr(recips, "m0atz") Then 
      msg.Move destFolder 
    End If 

    Set msg = nothing 
    Set destFolder = nothing 
End Sub 

Проблема у меня ошибка, когда электронная почта получена от этой линии:

Set destFolder = myInbox.Folders("Test") 

говоря «ошибки времени выполнения 424 - Требуемый объект "

Любые идеи очень ценятся.

1

myInbox - локальная переменная Application_Startup. Таким образом, он доступен только в Application_Startup.

I решительно рекомендуется добавить Option Explicit On в начало вашего модуля. Это предупредит вас об ошибках (и других).

Чтобы решить проблему, либо

  • обнаружить myInbox снова в методе myItems_ItemAdd (вы можете извлечь код Application_Startup в метод для этого) или

  • объявить myInbox вне вашего метода (точно так же, как myItems), чтобы сделать его доступным по всему миру. Обратите внимание, что такие «глобальные переменные» следует использовать экономно и только в случае необходимости.

  0

работает очарование! спасибо Heinzi, отметил о том, что опция явно, большое спасибо. 16 сен. 152015-09-16 12:45:30