Excel VBA ответить на тот же разговор в электронной почте Outlook - PullRequest
0 голосов
/ 04 сентября 2018

* Редактировать 2 Я нашел, почему он не отправляет автоматически, я должен был использовать .send вместо .display. Но я все еще не вижу сообщение родителей в новом сообщении, например вложенное представление сообщения outlook.

* Редактировать Поскольку у меня сотни пользователей, мне нужно автоматически отправлять им электронные письма, используя кнопку с Excel VBA. и каждое электронное напоминание должно быть в той же ветке, что и первое электронное письмо. Таким образом, пользователь может видеть содержимое и детали первого письма. Мне нужно, чтобы он отправлялся автоматически, а не открывал новое окно перспективы.

У меня есть программа, которая отправит электронное письмо пользователю через Excel VBA с помощью Outlook. Вместо того, чтобы создавать электронную почту как новую электронную почту, я хочу отправить электронную почту в той же теме, что и предыдущая электронная почта. Итак, я следовал этому коду здесь Отправка электронной почты с помощью VBA в том же разговоре Outlook .

'send reminder

'create session
Dim OutApp As Object
Dim newMail As Object
Dim i, accountSession As Long

'create reply
Dim convo As Conversation
Dim convoItem
Dim entry As String
Dim strgbody, Emailto, ccto, sendfrom As String

Set OutApp = CreateObject("Outlook.Application")
SetEmail = "xyz@outlook.com"

For i = 1 To OutApp.Session.Accounts.Count
        If OutApp.Session.Accounts.Item(i) = SetEmail Then
            accountSession = i
        End If
    Next

For J = ws.Cells(5, "C").Value To ws.Cells(6, "C").Value

    Set OutApp = CreateObject("Outlook.Application")
    Set OutNS = OutApp.GetNamespace("MAPI")
    entry = ws.Cells(J, "D").Value
    Set mail = OutNS.GetItemFromID(entry) 'get handle on mail item
    Set convo = mail.GetConversation 'get handle on existing conversation
    Set convoItem = convo.GetRootItems(1) 'get convo root item
    Set newMail = convoItem.Reply 'new email as reply to convo

    Emailto = ws.Cells(J, "C").Value
    'ccto = ws.Cells().Value

    On Error Resume Next
    With newMail
        .SendUsingAccount = OutApp.Session.Accounts.Item(accountSession)
        .To = Emailto
        '.CC = ccto
        .BCC = ""
        .Subject = "Subject"
        .BodyFormat = olFormatHTML
        .HTMLBody = "<HTML><BODY>insert body here</BODY></HTML>"
        .Display 'or use .Send
    End With
    On Error GoTo 0
    Set OutApp = Nothing
    Set newMail = Nothing
Next J

Но вместо того, чтобы отправлять их в одной и той же ветке, код откроет новое окно Outlook для просмотра электронной почты. Он не был отправлен автоматически.

Я хочу, чтобы пользователь мог видеть первое письмо вместе с новым письмом. Как я могу этого добиться. Спасибо

...