Neuigkeiten:

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

Mobiles Hauptmenü

Bericht als Email versenden

Begonnen von OrionVII, Mai 18, 2026, 15:41:51

⏪ vorheriges - nächstes ⏩

OrionVII

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

Knobbi38

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


OrionVII

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

Bitsqueezer

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

OrionVII

Zitat von: Bitsqueezer am Heute um 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


Bitsqueezer

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

Knobbi38

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