Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: sashstyle am Februar 09, 2015, 18:57:00

Titel: email senden per vba aus access 2010 geht nicht mehr
Beitrag von: sashstyle am Februar 09, 2015, 18:57:00
Hi Leute,

ich hab eine in Access 2003 erstellte Datenbank und dort funktioniert dieser Code:

Private Sub GEBbuttonSENDEN_Click()
    Dim Applikation As New Outlook.Application
    Dim mail As Outlook.MailItem
    Set mail = Applikation.CreateItem(olMailItem)
    If Weekday(GEBdatVERSAND) = 1 Then
    mail.To = Me![GEBemail]
    mail.Subject = Me![TEXTbetreff]
    mail.Attachments.Add "Z:\3 Verwaltung\Weiterempfehlung.jpg", jpg, 1, "Pfullingen"
    mail.HTMLBody = "<span style=""font-size:10pt; font-family:'Verdana'"">" & Me![TEXTtext]
    mail.DeferredDeliveryTime = Me![GEBdatVERSAND]
    mail.SentOnBehalfOfName = "pfullingen1@tui-reisecenter.de"
    mail.Display
    End If
    If Weekday(GEBdatVERSAND) > 1 Then
    mail.To = Me![GEBemail]
    mail.Subject = Me![TEXTbetreff]
    mail.Attachments.Add "Z:\3 Verwaltung\Weiterempfehlung.jpg", jpg, 1, "Pfullingen"
    mail.HTMLBody = "<span style=""font-size:10pt; font-family:'Verdana'"">" & Me![TEXTtext]
    mail.DeferredDeliveryTime = Me![GEBdatVERSAND]
    mail.SentOnBehalfOfName = "pfullingen1@tui-reisecenter.de"
    mail.Display
    Set mail = Nothing
    End If
    Me![GEBdatVERSANDletzter] = Date
End Sub


doch bei einer neuen Datenbank die soeben in Access 2010 erstellt wird kommt die Fehlermeldung:

Fehler beim Kompilieren.
Benutzerdefinierter Typ nicht definiert.


Leider kann ich damit garnix anfangen - hab mir den Code so zusammen geschustert bzw. schustern lassen (vor Jahren) ...

Angeblich könnte es daran liegen, dass die bisherige Datenbank in Access 2003 programmiert wurde auf einem 32bit System - nun arbeiten wir seit Jahren mit neuen 64bit Rechnern und es klappt auch ... doch da ich die Datenbank NEU PROGRAMMIERE (keine Änderungen an der alten sondern wirklich komplett neu) und das in Access 2010 vermute ich dass es an der 32bit/64bit Sache liegen könnte

Kann mir jemand helfen?

Lieben Dank.
Sascha
Titel: Re: email senden per vba aus access 2010 geht nicht mehr
Beitrag von: database am Februar 09, 2015, 20:33:58
Hallo,

hast du einen Verweis auf die MS Outlook 14 Object Library gesetzt?
Titel: Re: email senden per vba aus access 2010 geht nicht mehr
Beitrag von: thorpax am Februar 11, 2015, 14:37:16
So mache ich das ....

natürlich mit Verweis auf  'MS Outlook 14 Object Library' :)



Public Sub Sende()
Dim An As String, Body As String
Dim Subject As String, Attachment As String
An = "muster@mustermann.de"
Body = ".....was auch immer"
Subject = text
Attachment = ".....eine datei......" 'dateianhang
Call SendMailOutlook(An, Body, Subject, Attachment)
End Sub


Public Sub SendMailOutlook(mailTo As String, Subject As String, Body As String, mailAttach As String)
    Dim objOutlook As New Outlook.Application
    Dim objOutlookMsg As Object
   
   
    Dim objOutlookAttach As Object

    'Set objOutlook = CreateObject("Outlook.Application")
    Set objOutlookMsg = objOutlook.CreateItem(0)
    With objOutlookMsg
        .To = mailTo
        .Subject = Subject
        .Body = Body
    End With
    Set objOutlookAttach = objOutlookMsg.Attachments.Add(mailAttach)
           
    objOutlookMsg.Send

    Set objOutlook = Nothing
    Set objOutlookMsg = Nothing
End Sub



Vielleicht kannst du es so verwenden....
Titel: Re: email senden per vba aus access 2010 geht nicht mehr
Beitrag von: markusxy am März 03, 2015, 09:54:32
Also der Code funktioniert grundsätzlich.
Nur was habt ihr bei der Beilage gemacht. Die Schnittstelle schaut so aus:
Attachments.Add(Source, OlAttachmentType, Position, DisplayName)
Also jpg ist keine Bezeichnung für den Typ. Das wird vom Compiler als nicht vorhandene Variable interpretiert. Also korrekten Typ (z.B. olByValue oder die Zahl 1)  verwenden - F1 kann helfen.
Titel: Re: email senden per vba aus access 2010 geht nicht mehr
Beitrag von: thorpax am März 10, 2015, 09:44:41
Hallo Markus.

Ich übergebe das Atachement als String mit dem Pfad zur Datei.

Set objOutlookAttach = objOutlookMsg.Attachments.Add(mailAttach)
Set objOutlookAttach = bjOutlookMsg.Attachments.Add("z:\test.ini")

usw.

Du kannst also den Dateipfad auch direkt angeben. Willst Du mehrere Dateien versenden, schreibe einfach mehrere Zeilen mit set ....

Das obige Beispiel wird so von mir genutzt. Im Formular lade ich eine Liste mit den zu versendenen Dateien und lasse in einer Schleife die

Set objOutlookAttach = objOutlookMsg.Attachments.Add(mailAttach) durchlaufen.....

Titel: Re: email senden per vba aus access 2010 geht nicht mehr
Beitrag von: markusxy am April 07, 2015, 22:28:45
sorry mein Kommentar war eigentlich zu dem Post von sashstyle.