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
Hallo,
hast du einen Verweis auf die MS Outlook 14 Object Library gesetzt?
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....
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.
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.....
sorry mein Kommentar war eigentlich zu dem Post von sashstyle.