Hallo zusammen,
folgender Code zum Versenden einer Mail aus einer MS Access Anwendung hat bis Windows7/Office 2007(mit Access-Runtime) problemlos funktioniert.
Public Function mailen()
Dim bodystring As String
Dim strPathName As String
Dim objMailItem As Outlook.MailItem
Dim objMailOLApp As Outlook.Application
Set objMailOLApp = New Outlook.Application
Set objMailItem = objMailOLApp.CreateItem(olMailItem)
objMailItem.Display
'signatur holen
bodystring = objMailItem.Body
'signatur anhängen
bodystring = "Mailtext" & vbCrLf & vbCrLf & bodystring
With objMailItem
.To = get_emilto
.Subject = "mein Betreff"
.Body = bodystring
.Attachments.Add "Anhang1"
.Attachments.Add "Anhang2"
.Send
End With
End Function
Nach der Umstellung des User-PCs auf Windows7/Office 2013 funktioniert zwar die Access Anwendung, jedoch der Mail-Versand nicht mehr.
Sowohl Office 2007 als auch Office 2013 waren/sind nur mit der Access-Runtime ausgestattet.
Leider habe ich selbst nicht die Möglichkeit mit Access 2013 zu programmieren.
Liegt das Problem am Code oder an den Verweisen ?
Für Eure Antworten vorab Vielen Dank.
Hallo,
es wäre hilfreich, wenn du auch die Fehlermeldung(en) erwähnt hättest.
Ein Problem mit den Verweisen scheint zunächst einmal naheliegend. Um das zu vermeiden kannst du den Code auf Late Binding umstellen, d.h. die Objekte werden nicht explizit als Outlook-Objekte deklariert, sondern lediglich "As Object". Den Verweis auf die Outlook-Bibliothek brauchst du dann nicht mehr, allerdings musst du evtl. verwendete Outlook-Konstanten selbst deklarieren.
Hallo zusammen,
erst mal vielen Dank für die Antwort.
Die einzige Fehlermeldung die erscheint lautet "Microsoft Access funktioniert nicht mehr. Das Programm wird beendet."
Ist m.E. soweit auch logisch als dass ja kein Access auf dem User-PC installiert ist.
Der Vorschlag mit Late Binding klingt gut. So wie ich das verstehe muss ich mir ein Object mit den Eigenschaften "Empfänger, Betreff, Mailtext" basteln. Beim Ersatz für ".Attachments.Add" sowie für das Ereignis ".Send" werde ich so meine Probleme bekommen. Heißt für mich Learning by doing. Oder gibt es hier evtl. hierfür eine Starthilfe?
Alternativ habe ich einen Kollegen ausfindig gemacht, der die Konstellation Windows7/Office2013 inkl. Access hat.
Der wird mir mal die Verweise ggf. anpassen. Ob dies den Fehler beheben wird werde ich hier vermelden.
Schon mal Besten Dank für die Starthilfe. ;)
Hallo,
Zitat von: Gaensi am November 14, 2014, 20:49:07Ist m.E. soweit auch logisch als dass ja kein Access auf dem User-PC installiert ist.
du meinst Outlook, oder?
Aber wie willst du ohne Outlook eine Mail verschicken?
ZitatSo wie ich das verstehe muss ich mir ein Object mit den Eigenschaften "Empfänger, Betreff, Mailtext" basteln.
Nein, da musst du nichts basteln, einfach Dim objMailOLApp As Object (etc.) schreiben, der Rest bleibt wie gehabt. Ohne OutLook geht das natürlich nicht, wie stellst du dir das vor?
ZitatDer wird mir mal die Verweise ggf. anpassen.
Late Binding ist definitiv die bessere Lösung, oder willst du ständig verschiedene Versionen pflegen?
Hallo zusammen,
habe die Lösung für mein Problem gefunden.
Die Datenbank wurde unter Access 2007 erstellt. Der User-PC auf dem das Programm laufen sollte hatte Office 2013 ohne Access(ich meine Access) ;).
Dadurch wurden die Verweise beim Öffnen nicht aktualisiert.
Habe die Datenbank auf einem PC der Office 2013 mit Access (ich meine Access) ;) hat, einmal geöffnet und wieder geschlossen und danach auf den User-PC übertragen.
Jetzt läuft die Sache wieder. :)
@MaggieMay Trotzdem vielen Dank.
Die Late Binding Geschichte werde ich mir demnächst autodidaktisch vornehmen. ;)