So werden Outlook-Ereignisse aus einer Excel-Anwendung abgefangen

Ich habe eine Arbeitsmappe, die von mindestens 15 Personen verwendet und regelmäßig aktualisiert wird und Clientinformationen mit E-Mails in Spalte H3: H1500 enthält. Mit dem Ereignis Worksheet_FollowHyperlink können wir E-Mails über unsere Outlook-Konten senden, die vorab geschrieben sind und davon abhängen, an welchem Wochentag eine Bestellung angefordert wird (M-F, Samstag und Sonntag). Der Code funktioniert einwandfrei, um Nachrichten zu generieren.Mein Hauptproblem ist das Verfolgen von Antworten an Kunden. Ich habe versucht, ein Sub mit Aufnahmedatum (JETZT) und Umgebung ("Benutzername") zu haben, wenn der Hyperlink in Spalte H ausgewählt wurde, aber da ich das E-Mail-Sub auf ".Display" eingestellt habe (damit die Leute jede letzte Minute machen können) Anpassungen, falls erforderlich) werden nur aufgezeichnet, wer den Hyperlink ausgewählt hat (was anscheinend häufig durch einen Unfall passiert, wenn die Nachricht niemals tatsächlich gesendet wird). Ich hatte in diesem und anderen Foren mehrere Threads gefunden, die auf das Erstellen eines Klassenmoduls verweisen, und habe einen implementiert, der verwendet wurde, um zu überprüfen, ob er in meinem Code funktionieren würde. Durch Hinzufügen wurde jedoch das gesamte E-Mail-Subsystem unbrauchbar gemacht, sodass ich zurückkehrte die alte Form. Da ich in VBA nicht besonders erfahren bin (ich bin durch Hilfe und Versuch und Irrtum so weit gekommen), stelle ich fest, dass einige meiner Codeauswahlen albern erscheinen können, und wenn es bessere Möglichkeiten gibt, dies zu tun, bin ich offen dafür es - ich weiß nur, dass dieses Blatt funktioniertmeisten für den Moment und ich hoffe, es kann, wenn möglich, verbessert werden.

Meine aktuelle E-Mail-Adresse lautet:

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

[Der obige Code befindet sich in der Excel-VBE, der folgende Code befindet sich in der Outlook-VBE. Ich hätte ihn vor dem Start einfügen sollen. Er funktioniert für mich im Moment einwandfrei, daher bin ich mir nicht sicher, warum er nicht kompiliert wird. ]

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

Jede Hilfe wird gebeten!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage