Hallo zusammen,
ich möchte aus einem Formular heraus Mails versenden. Auf dem betreffenden Rechner ist Office 2013 (64-Bit) installiert, nicht aber Access. Access steht nur als Runtime zur Verfügung. Das soll auch so sein.
Wenn ich die Mail nun absende, öffnet sich eine Outlook - Mail und alles ist super. Ich kann dann auf "Senden" klicken und die Mail geht raus.
Das funktioniert aber nur solange, wie Outlook auf dem betreffenden Rechner nicht gestartet ist. Wenn Outlook läuft gibt es die Fehlermeldung:
Auf die Datei C:\users\blablabla\username@domaene.ost kann nicht zugegriffen werden. Sie wird von einem anderen Prozess verwendet.
Ich kann die Office Version nicht ändern. Tipps diesbezüglich helfen mir also leider nicht.
Ich freue mich über Lösungsvorschläge und sage vielen Dank im voraus.
Also ich arbeite ganz toll mit dieser Funktion. Kopiere folgenden Code in ein neues Modul.
Public Function CreateEmailWithOutlook(strMessageTo As String, strSubject As String, strMessageBody As String)
' Define app variable and get Outlook using the "New" keyword
Dim olApp As New Outlook.Application
Dim olMail As Outlook.MailItem ' An Outlook Mail item
' Create a new email object
Set olMail = olApp.CreateItem(olMailItem)
' Add the To/Subject/Body to the message and display the message
With olMail
.To = strMessageTo
.Subject = strSubject
.HTMLBody = strMessageBody
.Display ' To show the email message to the user
End With
' Release all object variables
Set olMail = Nothing
Set olApp = Nothing
End Function
Also dann z.B. beim Klick - Ereignis einer Schaltfläche diesen Code nutzen:
CreateEmailWithOutlook "mail@mail.de", "Betreff", "Nachrichtentext"
Im VBA Editor Verweis auf die "Microsoft Outlook 1x Object Library" setzen.
Funktioniert bei mir super. Viel Erfolg.
Hi,
ich bin jetzt nicht so der VBA Profi und bekomme den Fehler:
Dim olApp As New Outlook.Application
Benutzerdefinierter Typ nicht definiert.
Hast Du den Verweis auf die Library gesetzt? Im VBA Editor oben im Menü auf Extras / Verweise.. Dort den genannten Verweis anklicken. Er müsste "Microsoft Outlook 15.0 Object Library" heißen.
Jap. Hab ich. Hilft aber nicht.
Moment. Hab ich doch nicht. Ich teste noch mal... Sorry.
Zitat von: datekk am September 23, 2016, 15:36:35
Hast Du den Verweis auf die Library gesetzt? Im VBA Editor oben im Menü auf Extras / Verweise.. Dort den genannten Verweis anklicken. Er müsste "Microsoft Outlook 15.0 Object Library" heißen.
Ok, das läuft hier. Ich kann es aber an den problematischen Rechner erst morgen testen. Vielen Dank erst einmal!
Geht damit auch CC und BCC?
Danke.
Hi. Also das geht natürlich auch an CC und BCC Empfänger. Dazu musst Du "nur" im With Block der Funktion die Positionen .BCC und .CC mit einer Variablen versehen.
With olMail
.To = strMessageTo
.CC = strMessageCC
.CC = strMessageBCC
.Subject = strSubject
.HTMLBody = strMessageBody
.Display ' To show the email message to the user
End With
Diese Variable musst Du dann im Funktionskopf festlegen und deklarieren.
Public Function CreateEmailWithOutlook(strMessageTo As String, strMessageCC as String, strMessageBCC as String, strSubject As String, strMessageBody As String)
Dann müssen natürlich beim Aufruf der Funktion auch die entsprechenden Parameter an die Funktion übermittelt werden...
CreateEmailWithOutlook "anmail@mail.de", "ccmail@mail.de", bccmail@mail.de", "Betreff", "Nachrichtentext"
Du hattest mich ja auch noch angefragt, ob man das tatsächliche senden der Mail im Access nachvollziehen kann. Das weiß ich leider nicht. Aber man könnte es so einrichten, dass die Mail gar nicht angezeigt wird sondern gleich gesendet...
Das ginge indem Du oben im Code das .Display durch .send tauschst.
Ist der Inhalt immer gleich? Ggf. kann man hier ja was automatisieren...
Zitat von: datekk am September 23, 2016, 18:07:46
Du hattest mich ja auch noch angefragt, ob man das tatsächliche senden der Mail im Access nachvollziehen kann. Das weiß ich leider nicht. Aber man könnte es so einrichten, dass die Mail gar nicht angezeigt wird sondern gleich gesendet...
Das ginge indem Du oben im Code das .Display durch .send tauschst.
Ist der Inhalt immer gleich? Ggf. kann man hier ja was automatisieren...
Hi danke nochmals. Das mit BCC und CC klappt auch super. Nein. Den Inhalt generiere ich. Das mit dem Send ist vielleicht eine gute Idee. Dann bastel ich mir mein eigenes Display und zeige es bevor gesendet werden kann. Im Grunde super.
Ich hoffe, dass diese Art und Weise des Mailversand auch das blöde .ost Problem löst. Das kann ich aber erst später prüfen.
Danke!
Genau... Bastel ein eigenes Formular welches ein großes Textfeld beinhaltet. Hier kann der Text eingegeben werden - und baue einen Senden Button. Das ist doch ne tolle Lösung. :)
Hmm. Nee. Wenn ich .send statt .display benutze meckert Outlook, dass die Anwendung heimlich Mail versenden will und der Benutzer muss jedesmal zustimmen (wenn er den Button im Hintergrund überhaupt sieht). Auch nicht das Wahre...