Пользовательский сценарий VBA Outlook 2010 для перемещения входящего почтового сообщения в определенную папку - PullRequest
6 голосов
/ 08 апреля 2011

Я пытаюсь создать настраиваемое правило для Outlook 2010, которое проверяет тему электронного письма, и если оно создает регулярное выражение, оно перемещается в определенную папку.

Однако, когда я запускаю скрипт, я получаю следующую ошибку при попытке получить объект Outlook.Folder для папки, в которую я хочу переместить сообщение:

Во время выполненияошибка '91':
переменная объекта или переменная блока не установлена ​​

Ниже приведен сценарий VBA, который я использую для проверки темы электронной почты и перемещения сообщения в указанную папку, если оно соответствует.

Sub MoveToETS(Item As Outlook.MailItem)
    Dim Subject As String
    Subject = Item.Subject

    Dim FolderToMoveTo As Outlook.Folder
    Set FolderToMoveTo = GetFolder("ETS")

    If (CheckSubject(Subject, "^[Project|Bug] (\d+?) - \[[UPDATE|NEW|RESOLVED]\]")) Then
        Item.Move (FolderToMoveTo)
    End If
End Sub

Function CheckSubject(Subject As String, PatternToCheck As String)
    Dim ObjRegExp As RegExp
    Dim ObjMatch As Match

    Set ObjRegExp = New RegExp
    ObjRegExp.Pattern = PatternToCheck

    If (ObjRegExp.Text(Subject) = True) Then
        CheckSubject = True
    End If

End Function

Function GetFolder(ByVal FolderName As String) As Outlook.Folder

    Dim ObjFolder As Outlook.Folder

    Set ObjFolder = Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Folders("ETS")

    GetFolder = ObjFolder

End Function

Ответы [ 2 ]

4 голосов
/ 08 апреля 2011

Ваша последняя, ​​но одна строка должна быть

Set GetFolder = ObjFolder
1 голос
/ 21 января 2019

В функции GetFolder вы также жестко закодировали имя папки.

Строка гласит:

Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Folders("ETS")

Следует читать:

Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Folders(FolderName)
...