Laufzeitfehler 287. Senden von E-Mails über Outlook mit VBA in Access.

Ich habe einen Fall, in dem ein Benutzer Benachrichtigungen erhalten möchte, wenn Lieferungen zu einer Access-Datenbank hinzugefügt werden. Die einfachste Methode, die ich mir vorstellen konnte, war das Einrichten einer automatisierten E-Mail über Outlook 2010. Der folgende Code ist vorhanden:

Dim oApp As Outlook.Application
Dim oMail As MailItem
Dim varDnoteRef2 As String
Dim varuser As String
varuser = DLookup("[Employee_Name]", "employees", "[Employee_ID]=" & TempVars!gloggedin)
varDnoteRef2 = DLast("Supplier_Dnote_Ref", "Supplier_Dnotes")

Set oApp = CreateObject("Outlook.application")
Set oMail = oApp.CreateItem(olMailItem)
oMail.Body = "A Delivery Note has been added to the Database by " & varuser & " on " & Now() & "." & _
             vbNewLine & "Delivery Note: " & varDnoteRef2
oMail.Subject = "Automatic Notification: Delivery Note"
oMail.To = "[email protected]"
oMail.Send
Set oMail = Nothing
Set oApp = Nothing

Dieser Code funktioniert einwandfrei, wenn die Person, die den Code aktiviert, Outlook geöffnet hat. Wenn der Benutzer Outlook jedoch nicht gestartet hat, wird am @ ein Fehler angezeigoMail.send Linie

error # 287 Fehlerzeile 0 anwendungsdefinierter oder objektdefinierter Fehler.

Was sie erhalten, ist ein kleines Symbol auf dem Desktop, das das Outlook-Symbol mit einem Zahnrad / Zahnrad und der Meldung "@" isanother program or application is using outlook. Welches ist, was ich erwarte. Aber warum schlägt es beim Senden fehl?

Wie kann ich diesen Fehler umgehen / gibt es eine Lösung?

Edit (Update)

Was seltsamer ist, dass ich mit F8 durch meinen Code gehe. ES KLAPPT!! Aber immer noch nicht, wenn ich den Code von einer Formularaktion aus aufrufe, z.button_on_click

Antworten auf die Frage(2)

Ihre Antwort auf die Frage