Anzeige
Archiv - Navigation
1900to1904
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-generierte Mail hängt im Postausgang

VBA-generierte Mail hängt im Postausgang
11.10.2022 18:44:01
Martin
Ich verwende diesen Code auf einem unter Win 10 laufenden Notebook zum Erzeugen einer neuen Mail:

Sub EMailVersendenOutlook()
Dim obNachricht As Object
Dim obMail As Object
Set obMail = CreateObject("Outlook.Application")
Set obNachricht = obMail.CreateItem(0)
With obNachricht
.To = "empfaenger@domain.com"
.Subject = "Test"
.Body = "Test"
.Display
End With
Set obNachricht = Nothing
Set obMail = Nothing
End Sub
Wenn ich diesen Code ausführe, öffnet sich -unabhängig davon, ob Outlook schon geöffnet ist- sofort eine neue Outlook-Nachricht. Nach dem Klick auf Senden schließt sich das Fenster wieder.
Wenn Outlook bereits geöffnet war, wird die Mail auch tatsächlich sofort versandt.
War Outlook hingegen noch nicht geöffnet, geht die Mail nicht raus, sondern bleibt im Postausgang liegen. Erst wenn ich Outlook tatsächlich öffne, erfolgt der Versand.
Exakt den gleichen Code verwende ich auch innerhalb einer Citrix-Umgebung, wo die gleichen Versionen von Excel und Outlook laufen. Hier bewirkt das Ausführen des Codes bei geschlossenem Outlook zunächst, dass Outlook startet, ehe das Fenster mit der neu generierten Outlook-Nachricht erscheint.
Ich verstehe dieses unterschiedliche Verhalten nicht. Ich verstehe auch gar nicht, wie das Notebook die Outlook-Nachricht darstellen kann, solange Outlook noch gar nicht geöffnet ist.
Lässt sich der VBA-Code irgendwie dahingehend ändern, dass zuerst geprüft wird, ob Outlook schon geöffnet ist, und falls nicht, es zunächst öffnet?
Ich suche mir hier schon seit Wochen einen Wolf und bin für alle Tipps dankbar.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-generierte Mail hängt im Postausgang
11.10.2022 22:07:16
Oberschlumpf
du suchst seit Wochen? echt? glaub ich nich!
hab diesen Suchtext in google eingegeben:
vba outlook öffnen (Ungefähr 12.100.000 Ergebnisse (0,54 Sekunden))
Und gleich beim 1. Treffer kommt das, was du brauchst....seit Wochen gesucht...uihuihuih...gib nicht "Marmelade" als Suchtext ein, wenn du nach "KFZ-Ersatzteil" suchst...
hilfts?
AW: VBA-generierte Mail hängt im Postausgang
12.10.2022 11:43:01
Martin
@Oberschlumpf: Ich verwende meinen Code seit Jahren, und immer wurde bei geschlossenem Outlook dieses durch CreateObject("Outlook.Application") automatisch geöffnet. Nur auf den neuen Notebooks funktioniert das jetzt nicht. Ich habe immer "CreateObject("Outlook.Application") " als Suchbegriff verwandt und bin so nie auf die Idee gekommen, dass ein Shellbefehl notwendig sein könnte.
@onur: Mit .Send statt .Display erfolgt tatsächlich auch bei geschlossenem Outlook ein sofortiger Versand. Das hilft mir aber leider nicht, weil die Mail vor dem Absenden noch individuell ergänzt werden muss.
@volti: Dein Code macht im Prinzip nichts anderes als mein Code. Es wird erkannt, dass Outlook noch nicht geöffnet ist und CreateObject("Outlook.Application") wird ausgeführt. Das bewirkt aber auf dem Notebook nicht etwa, dass Outlook startet. Es kommt nur das Outlook-Nachrichtenfenster, und wenn man das sendet, landet die Mail im Postausgang und bleibt dort liegen, bis Outlook tatsächlich geöffnet wird.
Diese Variante scheint aber zu funktionieren:

Sub EMailVersendenOutlook2()
Dim obNachricht As Object
Dim obMail As Object
On Error Resume Next
Set obMail = GetObject(, "Outlook.Application")
If obMail Is Nothing Then
MsgBox "Outlook ist noch nicht geöffnet - wird jetzt geöffnet"
Shell "Outlook.exe", 1
End If
On Error GoTo 0
Set obMail = CreateObject("Outlook.Application")
Set obNachricht = obMail.CreateItem(0)
With obNachricht
.To = "empfaenger@domain.com"
.Subject = "Test"
.Body = "Test"
.Display
End With
Set obNachricht = Nothing
Set obMail = Nothing
End Sub
In der Citrix-Umgebung, wo bereits GetObject(, "Outlook.Application") zum Öffnen von Outlook ausreicht, wird dann zum Glück keine zweite Instanz gestartet.
Ich danke für alle Beiträge!
Anzeige
AW: VBA-generierte Mail hängt im Postausgang
11.10.2022 22:56:26
onur
Wenn du willst, dass die Mail sofort versendet wird, egal ob Outlook läuft oder nicht, nimm

.Send
statt

.Display

AW: VBA-generierte Mail hängt im Postausgang
12.10.2022 09:13:44
volti
Hallo Martin,
so kannst Du testen, ob Outlook schon geöffnet ist.....
Code:


Sub EMailVersendenOutlook() Dim obNachricht As Object Dim obMail As Object On Error Resume Next Set obMail = GetObject(, "Outlook.Application") If obMail Is Nothing Then Set obMail = CreateObject("Outlook.Application") End If On Error GoTo 0 Set obNachricht = obMail.CreateItem(0) With obNachricht .To = "empfaenger@domain.com" .Subject = "Test" .Body = "Test" .Display End With Set obNachricht = Nothing Set obMail = Nothing End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige