Как перехватить события Outlook из приложения Excel

У меня есть рабочая книга, которую по крайней мере 15 человек используют и периодически обновляют, в которой содержится информация о клиенте с электронными письмами в столбце H3: H1500. Используя событие Worksheet_FollowHyperlink, мы можем отправлять электронные письма через наши учетные записи Outlook, которые предварительно написаны и зависят от того, в какой день недели запрашивается заказ (M-F, суббота и воскресенье), и код прекрасно работает для генерации сообщений.Моя основная проблема заключается в отслеживании ответов клиентов. Я пытался использовать сабвуфер с записанной датой (функция NOW) и Environ («имя пользователя») всякий раз, когда была выбрана гиперссылка в столбце H, но поскольку у меня суб-адрес электронной почты установлен на .Display (чтобы люди могли вносить любые изменения в последнюю минуту (при необходимости) он только записывает, кто выбрал гиперссылку (что, по-видимому, часто случается случайно, когда сообщение никогда не отправляется). Я нашел несколько тем по всему этому форуму и другие, которые ссылаются на создание модуля Class, и я реализовал один, который использовался, чтобы увидеть, будет ли он работать в моем коде, но добавив его, вся подпрограмма электронной почты стала бесполезной, поэтому я вернулся к старая форма. Поскольку я не очень опытен в VBA (я получил это далеко из-за помощи, проб и ошибок), я понимаю, что некоторые из моих вариантов выбора кода могут показаться глупыми, и если есть лучшие способы сделать это, я открыт для это - я просто знаю, что этот лист работаетв основном на данный момент, и я надеюсь, что это может быть улучшено, если это возможно.

Моя текущая электронная почта:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim Body1, Body2, Body3 As String
Dim olApp As Outlook.Application
Dim OlMail As Outlook.MailItem

On Error Resume Next
Application.EnableEvents = False

Set olApp = GetObject(,"Outlook.Application")

Do While olApp.Inspectors.Count = 0
DoEvents

Loop

Set olMail = olApp.Inspectors.Item(1).CurrentItem

With olMail

Body1 = "This is my weekday text"
Body2 = "This is my Saturday text"
Body3 = "This is my Sunday text"

.Subject = "Subject"
.Attachemnts.Add "C:\Path"
.CC = Target.Range.Offset(0,4).Text
.BCC = ""

If Target.Range.Offset(0,5).Text = "No" Then
.Body1
If Target.Range.Offset(0,5).Text = "Yes" Then
.Body2
If Target.Range.Offset(0,5).Text = "Sunday" Then
.Body3

.Display
End With

forward:
Application.EnableEvents = True
Exit Sub
halt:
MsgBox Err.Description
Resume forward
End Sub

[Приведенный выше код находится в Excel VBE, следующий код находится в Outlook VBE, я должен был включить его перед запуском - он работает нормально для меня прямо сейчас, поэтому я не уверен, почему он не компилируется ...]

Function GetCurrentItem() As Object
Dim objApp As Application

Set objApp = CreateObject("Outlook.Application")
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
Case "Explorer"
Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
Case "Inspector"
Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
End Select
Set objApp = Nothing
End Function

Любая помощь приветствуется!

Ответы на вопрос(1)

Ваш ответ на вопрос