2017-07-22 2 views
0

Ich habe einige VBA-Code in Excel erstellt und sendet eine automatische E-Mail über Outlook. Die eigentliche Nachricht wird jedoch erst gesendet, wenn ich Outlook manuell öffne, um das Senden/Empfangen auszulösen. Unten ist der Code, den ich verwende, um die E-Mail zu erstellen. Ich würde denken, dass alles, was ich brauche, eine Codezeile ist, um den Sende-/Empfangscode auszulösen. Ich möchte jedoch darauf hinweisen, dass sich der Ausblick während dieses Kodex nicht öffnet. Eine Möglichkeit, das Problem zu lösen, besteht darin, Outlook vor diesem Code zu öffnen und nach dem Code zu schließen.E-Mail erstellt mit VBA in Excel nicht senden

+0

Wenn Sie Ihre Funktion aufrufen, stellen Sie sicher, dass Ihr Send-Argument auf True festgelegt ist. – Domenic

+0

Es ist auf True festgelegt. Vielleicht muss ich einige Einstellungen oder Optionen in Outlook überprüfen? – Jcarl

+0

Außerdem habe ich die sendreceiveall = true Codezeile hinzugefügt. Es hat den gleichen Weg gemacht, bevor ich diese Zeile hinzugefügt habe. – Jcarl

Antwort

0

Dies ist zu erwarten-Nachricht Einreichung ist ein asynchroner Prozess, und Outlook schließt, bevor es eine Chance hat, die Nachricht zu senden.

Machen Sie die globale OutApp-Variable so, dass sie nicht freigegeben wird, wenn Ihr Subcomputer fertig ist, und rufen Sie OutApp.Session.SendAndReceive an.

+0

Danke Dmitry. Ich habe ein paar Dinge ausprobiert, die sich auf das beziehen, was Sie vorgeschlagen haben, aber es schien nicht zu funktionieren. Ich muss verwirrt sein, wo ich den Code hinzufügen soll, den Sie über OutApp.Session.Send und Receive gesagt haben. Wo sollte dieser Code liegen? Und wo ist der beste Ort, um OutApp zu einer globalen Variable zu machen? Am Anfang meines Codes oder am Anfang der Funktion? Und um zu bestätigen, sollte ich es global machen, indem ich "public" statt "Dim" richtig schreibe? Danke im Voraus!!!!! – Jcarl

+0

OutApp außerhalb Ihrer Funktion auf globaler Ebene deklarieren. Rufen Sie SendAndReceive auf, nachdem Sie Send aufgerufen haben. –