VBA для пересылки электронных писем в Outlook

Вопрос или проблема

Я пытаюсь создать VBA, который может пересылать полученные мною электронные письма. Единственная проблема заключается в том, что письма, которые я хотел бы переслать, имеют разные темы. Только начало одинаковое. Вот докуда я дошел (это следует вставить в ThisOutlookSession). Кто-нибудь может мне помочь, пожалуйста?

Public WithEvents objInbox As Outlook.Folder
Public WithEvents objInboxItems As Outlook.Items
Private Sub Application_Startup()
    Set objInbox = Outlook.Application.Session.GetDefaultFolder(olFolderInbox)
    Set objInboxItems = objInbox.Items
End Sub

Private Sub objInboxItems_ItemAdd(ByVal item As Object)
    Dim objMail As Outlook.MailItem
    Dim objForward As Outlook.MailItem

    If TypeOf item Is MailItem Then
       Set objMail = item

       'Если это конкретное новое письмо'
       If (objMail.Subject = "Offer Response Received") Then



           Set objForward = objMail.Forward
           'Настроить тему, тело и получателей пересылки'
           With objForward
                .Subject = "Offer accepted"
                .HTMLBody = "<HTML><BODY>Please proceed. </BODY></HTML>" & objForward.HTMLBody
                .Recipients.Add ("")
                .Recipients.Add ("")
                .Recipients.ResolveAll
                .Importance = olImportanceHigh
                .Send
           End With
       End If
    End If
End Sub

Вы можете проверить тему на наличие общего текста в соответствующем письме.

Private Sub objInboxItems_ItemAdd(ByVal item As Object)

    Dim objMail As MailItem
    Dim objForward As MailItem

    Dim beginStr As String
    Dim lenBegin As Long

    beginStr = "общий текст в начале соответствующего письма"
    lenBegin = Len(beginStr)

    If TypeOf item Is MailItem Then

        Set objMail = item

        'Новое письмо, где "начало одинаковое"
        If Left(objMail.Subject, lenBegin) = beginStr Then

            Set objForward = objMail.Forward

            'Настроить тему, тело и получателей пересылки'
            With objForward
                .Subject = "Offer accepted"
                .HTMLBody = "<HTML><BODY>Please proceed. </BODY></HTML>" & objForward.HTMLBody
                '.recipients.Add ("")
                '.recipients.Add ("")
                .recipients.ResolveAll
                .Importance = olImportanceHigh
                .Display    '.Send
            End With

        End If
    End If

End Sub

Ответ или решение

Конечно, давайте рассмотрим, как можно автоматизировать пересылку писем в Outlook, используя VBA. Ваша задача заключается в пересылке электронных писем с похожими, но не идентичными темами. Важным моментом, который вы уже отметили, является то, что начало темы у всех писем одинаково.

Изучение VBA для автоматизации пересылки писем в Outlook

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

Шаг 1: Настройка объекта и событий

Прежде всего, вам нужно определить папку Inbox и её элементы в Outlook, чтобы отслеживать поступающие письма:

Public WithEvents objInbox As Outlook.Folder
Public WithEvents objInboxItems As Outlook.Items

Private Sub Application_Startup()
    Set objInbox = Outlook.Application.Session.GetDefaultFolder(olFolderInbox)
    Set objInboxItems = objInbox.Items
End Sub

Шаг 2: Обработка новых писем через событие ItemAdd

Следующий шаг — это создание процедуры для обработки каждого нового поступающего письма и определения, следует ли его переслать:

Private Sub objInboxItems_ItemAdd(ByVal item As Object)

    Dim objMail As MailItem
    Dim objForward As MailItem

    Dim beginStr As String
    Dim lenBegin As Long

    ' Определяем текст, повторяющийся в начале темы письма
    beginStr = "начало темы для пересылки"
    lenBegin = Len(beginStr)

    If TypeOf item Is MailItem Then
        Set objMail = item

        ' Проверка тематического текста письма
        If Left(objMail.Subject, lenBegin) = beginStr Then
            Set objForward = objMail.Forward

            ' Настройка деталей пересылаемого письма
            With objForward
                .Subject = "Обратите внимание: Сделка принята"
                .HTMLBody = "<HTML><BODY>Пожалуйста, продолжайте процесс. </BODY></HTML>" & objForward.HTMLBody
                .Recipients.Add("<введите_имя_получателя@домен.com>")
                .Recipients.ResolveAll
                .Importance = olImportanceHigh
                .Send
            End With
        End If
    End If

End Sub

Резюме

Данный скрипт автоматически пересылает письма, у которых тема начинается с определенного текста, на указанный адрес. Важно убедиться, что название папки и строка начала темы точно совпадают с вашими требованиями для правильного выполнения задачи. Также замените "<введите_имя_получателя@домен.com>" на фактический адрес электронной почты получателя.

Эти пошаговые инструкции и код помогут вам максимально автоматизировать рабочий процесс в Outlook с использованием VBA. Убедитесь, что после внесения изменений вы сохраняете скрипт и перезагружаете Outlook, чтобы он начал работать.

Оцените материал
Добавить комментарий

Капча загружается...