Hallo zusammen,
ich verwende Access 2016 und Thunderbird. Meine Rechnungsdatenbank erstellt auf Knopfdruck einen Bericht aus einem Rechnungsformular. Im Bericht wiederum kann man die Rechnung per Schaltfläche drucken oder als PDF in einen bestimmten Ordner exportieren. Nun möchte ich den Bericht per neuem Knopf ebenfalls als PDF an die Kunden-Emailadresse verschicken.
Bisher habe ich keinen passenden Code gefunden. Ich möchte also keinen Anhang einhängen. Ähnlich also, wenn ich ein Objekt im Explorer mit der rechten Maustaste mit Senden an auswähle. Nur muss ich ja dann die Mailadresse separat einfügen.
Mailadresse, Betreff und Freitext mit Grußformel sollten schon eingefügt sein, senden, fertig...
Vereinfacht, fand ich das hier.
Sub SendEmailWithAttachments()
Dim objEmail As Object
Set objEmail = CreateObject("Thunderbird.Application")
With objEmail
.To = "recipient@example.com" 'Hier würde ich das Feld mit txtMailadresse des Kunden angeben
.Subject = "Subject Here"
.Body = "Email body text here."
.Attachments.Add "C:\path\to\your\file1.pdf" 'Kann hier der Name des Berichts hin?
'.Attachments.Add "C:\path\to\your\file2.docx"
.Send
End With
Set objEmail = Nothing
End Sub
Wobei ich auch prüfen möchte, ob es eine Email-Adresse gibt.
Wer kann helfen?
Viele Grüße aus der Algarve
Hallo,
wo kann man denn so einen Blödsinn finden?
Dafür kannst du DoCmd.SendObject verwenden und übergibst die passenden Parameter, z.B. zum Versenden eines Reports im PDF Format.
Vielen Dank für die Antwort, aber könntest du noch etwas konkreter werden? vielleicht mit einem Beispiel oder ein wenig Code? Du bist Meister, ich bin seit über 10 Jahren raus aus der Programmierung ...
Hallo,
ein Blick auf die Hilfeseite zeigt Dir einen Beispielcode und ebenso eine Variante für Outlook-Automation:
https://learn.microsoft.com/de-de/office/vba/api/access.docmd.sendobject
Gruß
Christian
Zitat von: Bitsqueezer am Mai 19, 2026, 08:50:46https://learn.microsoft.com/de-de/office/vba/api/access.docmd.sendobject
Hatte ich gefundenn, war mir aber sehr unsicher, weil ja Outlook als Mailprogramm angesprochen wird, ich benutze (siehe erster Post) Thunderbird.
' Define app variable and get Outlook using the "New" keyword
Dim olApp As New Outlook.Application
Dim olEmail As Outlook.MailItem ' An Outlook Mail item
Hallo,
kannst Du ja auch per Thunderbird-Automation machen, falls der Code von Dir funktioniert (ich habe kein Thunderbird).
Aber wenn Du genau auf die Seite schaust, steht da als erstes Codebeispiel eine DoCmd.SendObject-Variante, außerdem sind alle Parameter darüber genau erläutert.
Gruß
Christian
Hallo,
Thunderbird unterstützt keine COM Schnittstelle, kann also so auch nicht automatisiert werden. Am einfachsten dürfte das mit dem DoCmd-Object gehen:
docmd.sendobject acSendReport, "ReportName", acFormatPDF, "email@domain.de",,,"Betreff","Mailtext",True
Schau dir nochmal die Parameter und die Bedeutung an, da muss nichts weiter programmiert werden. Entweder du rufst diese Zeile per VBA auf, oder erstellst mit dem Assistenten für Befehlsschaltflächen im Formular eine "embedded" Makroaktion, welche die gleiche Aufgabe ausführt.
Knobbi38
Knobbi38