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 per Mail Versand mit individuellem Titel

Begonnen von Wookiio, Juni 19, 2023, 07:19:34

⏪ vorheriges - nächstes ⏩

Wookiio

Hallo zusammen

Ich würde gerne eine Bericht (Kostenvoranschlag) nicht mehr wie gewohnt als PDF speichern, dann umbenennen und anschließend per Mail versenden. Sondern den Direkt in das Outlook werfen mit dem Gewünschten Tittel, z.B Name der Firma, und unsere Kundennummer.

Ich habe den Mail Versand aktuell als Makro programmiert weil es einfach das einfachste war, jedoch habe ich eben das Problem dass bei Öffnen des Mails da nur der Berichtname steht.

Ich bin noch nicht so gut mit Access also bin auf eure Hilfe angewiesen.

Bei Fragen einfach raushauen, ich versuche alles zu Beantworten  ;D

Danke.

Gruss
Wookiio

Bernie110

Könnte man so machen :

leg dir einen Button in ein Formular und gib folgenden Code in das Click-Ereignis ein :
Musst den Code nur auf deine Namen anpassen.

Die ug. definierten Strings kannst du auch in dein Formular anlegen.

Hier mal so als Ideengeber.


        Dim StrMA As String
        Dim StrBetreff As String
        Dim StrText As String
        Dim StrCC As String
        Dim StrBC As String
        Dim StrReportname As String


StrMA = "Email@empfänger"
StrBetreff = "Dein Email Betreff Text"
StrText = "Dein Email Text"
StrCC = "Dein Email CC Email@empfänger"
StrBC = "Dein Email BC Email@empfänger"
StrReportname = "DEIN REPORT NAME"


DoCmd.OpenReport StrReportname, acViewPreview, , "Report_ID=" & me.Report_ID, acHidden

Reports!StrReportname.Caption = "So wie du den Report nennen möchtest"
       
DoCmd.SendObject acSendReport, StrReportname, "PDFFormat(*.pdf)", StrMA, StrCC, StrBC, StrBetreff, StrText, True


Lg Bernie

Wookiio

Hallo Bernie

Danke für die Hilfe, soweit habe ich das ganze nun auch gefunden dank Google, ein bisschen anders aber etwa gleich. Mein Problem ist ist, dass ich den Report z. B so nennen Muss.

Firma (soll aus der Datenbank gezogen werden) Auftragsnummer (ebenfalls aus der Datenbank)
Ich weis nicht wie ich mit der VBA auf die Datenbank zugreifen kann, also welche Befehl ich eingeben muss, ist das ein @ Befehl oder ein [] Befehle??

also eigentlich bei diesem hier
"Reports!StrReportname.Caption = "So wie du den Report nennen möchtest"" muss ich irgendwie etwas eingeben aber weis nicht was, will ja nicht das der Rapport immer gleich heißt.


Bernie110

Hi Wookiio,

dann musst du dir die Namen aus der Tabelle auslesen und so zusammensetzen, dass es deinen gewünschten Berichtsnamen ergibt.
Beispiel :


Dim StrReportname As String

StrReportname = "Bericht zu : " &  Dlookup("DeinFeldName","DeineTabelle", "ID =" & me.ID) & " vom " & Date

Letzter Teil bei "Dlookup mit "ID ...." wäre das Kriterium, welches den richtigen Wert aus deiner Tabelle ausliesst.
Diesen Code fügst du einfach dem ersten Code hinzu

Anstelle des ID Kriteriums, kannst aber auch eine Abfrage basteln, die bereits den gefilterten Zustand vorhält.
So mach ich das meistens.
Gerade wenn man mehrere Kriterien benötigt.
Dann sieht es als Beispiel so aus :

Dim StrReportname As String

StrReportname = "Bericht zu : " &  Dlookup("DeinFeldName","DeineAbfrage") & " vom " & Date

Hoffe das hilft
Lg Bernie


Wookiio

Hallo Bernie
Das hat irgendwie nicht funktioniert also habe ich einen anderen Code geschrieben.

Problem ist dass ich da einen Fehler drin habe beim Verweis, wie das Betreff und der PDF Bericht heißen soll.

Private Sub cmdSendEmail_Click()
    Dim objOutlook As Object
    Dim objMail As Object
    Dim strRecipient As String
    Dim strSubject As String
    Dim strReportName As String
    Dim strAttachmentPath As String
   
    ' Outlook-Instanz erstellen
    Set objOutlook = CreateObject("Outlook.Application")
   
    ' E-Mail-Objekt erstellen
    Set objMail = objOutlook.CreateItem(0)
   
    ' Empfänger festlegen
    strRecipient = "test@mail.com"
   
    ' Betreff und Berichtsnamen festlegen
 strSubject = "Bericht - " & Me!Service.Form!SerKoNrVA.Value ' Annahme: Das Steuerelement für die Seriennummer heißt "SerKoNrVa"
    strReportName = "BerRapport"
   
    ' Dateiname für das PDF generieren
    strAttachmentPath = "C:\Users\Documents\" & Me!Service.Form!SerKoNrVA.Value & ".pdf" '
   
    ' Bericht als PDF exportieren
    DoCmd.OutputTo acOutputReport, strReportName, acFormatPDF, strAttachmentPath
   
    ' E-Mail-Eigenschaften festlegen
    With objMail
        .To = strRecipient
        .Subject = strSubject
        .Body = "Dies ist der Bericht '" & strReportName & "' als PDF-Anhang."
        .Attachments.Add strAttachmentPath
       
        ' E-Mail senden
        .Send
    End With
   
    ' Objekte freigeben
    Set objMail = Nothing
    Set objOutlook = Nothing
   
    ' PDF-Anhang löschen
    Kill strAttachmentPath
   
    MsgBox "Die E-Mail wurde gesendet."

End Sub

Beim   "Betreff und Berichtsnamen festlegen" findet es den Namen nicht.

Als Erklärung.

Ich habe eine Formular, die daten Speichert es in einer Tabelle, In diesem Formular habe ich diese Rapport Nr. welche ich gerne als Name für das PDF verwenden will. Auf dem Bericht, welches ich als PDF haben möchte, ist die Rapport Nr. ebenfalls aufgelistet unter dem Steuerelement SerKoNrVA. Wie kann ich das ziehen? habe per Tabelle versucht und Per Formular sowie per Bericht. Gibt mir immer einen Fehler

Bernie110

Hi,

du meinst das hier ?
strSubject = "Bericht - " & Me!Service.Form!SerKoNrVA.Value ' Annahme: Das Steuerelement für die Seriennummer heißt "SerKoNrVa"
    strReportName = "BerRapport"


mach es doch dann irgendwie so :
strSubject= "Bericht - " & Forms!deinFormularName!DeinFeldName
und BerRapport ist hoffentlich der Name deines Berichts ?

Wookiio

Danke Bernie

Jetzt geht's du hast mir sehr geholfen !!  ;D  ;D  ;D  ;D