Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

email senden per vba aus access 2010 geht nicht mehr

Begonnen von sashstyle, Februar 09, 2015, 18:57:00

⏪ vorheriges - nächstes ⏩

sashstyle

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

database

Hallo,

hast du einen Verweis auf die MS Outlook 14 Object Library gesetzt?

thorpax

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....

markusxy

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.

thorpax

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.....


markusxy

sorry mein Kommentar war eigentlich zu dem Post von sashstyle.