Office: (Office 365) Email mit Anhang aus Access senden

Helfe beim Thema Email mit Anhang aus Access senden in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, Vielleicht kann mir jemand weiterhelfen! Ich habe in Access ein Formular erstellt um direkt aus dem Formular Emails mit Anhang (Fotos)... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Balu3200, 6. August 2023.

  1. Email mit Anhang aus Access senden


    Hallo zusammen,
    Vielleicht kann mir jemand weiterhelfen!
    Ich habe in Access ein Formular erstellt um direkt aus dem Formular Emails mit Anhang (Fotos) zu versenden.

    Nun habe ich folgenden VBA Code erstellt:
    --------------------------------------------------------------------------
    Private Sub btnSend_Click()
    fx_Email_Senden
    End Sub

    Private Sub fx_Email_Senden()
    '-------------< fx_Email_Senden() >-------------

    Dim sEmail_Adress As String
    sEmail_Adress = ctlEmail_Address.Value

    Dim sTitle As String
    sTitle = ctlTitle.Value

    Dim sText As String
    sText = ctlText.Value


    '----< USE OUTLOOK APP >----
    Dim app_Outlook As Outlook.Application
    Set app_Outlook = New Outlook.Application
    Dim att As Outlook.Attachment

    '--< Email einstellen >--
    Dim objEmail As Outlook.MailItem
    Set objEmail = app_Outlook.CreateItem(olMailItem)
    objEmail.To = sEmail_Adress
    objEmail.Subject = sTitle
    objEmail.HTMLBody = sText
    objEmail.Display False

    objEmail.Send
    '--< Email einstellen >--

    '< Abschluss >
    Set objEmail = Nothing
    Set app_Outlook = Nothing
    '</ Abschluss >

    '----</ USE OUTLOOK APP >----
    '-------------</ fx_Email_Senden() >-------------
    End Sub

    Nun ist das Problem das er mir das Mail sendet aber ohne Anhang! Kann mir bitte jemand markieren wo ich den fehler geschrieben habe!
    Danke euch für die Hilfe
     
    Balu3200, 6. August 2023
    #1
  2. andyfau
    andyfau Erfahrener User
    Es fehlt:

    objEmail.attachments.Add DeinAnhang
     
    andyfau, 6. August 2023
    #2
  3. Hallo andyfau danke das du mit eine Lösung gesendet hast!

    Könntest mit bitte aber noch sagen, wo ich
    objEmail.attachments.Add DeinAnhang
    Einfügen muß beim Code!

    '--< Email einstellen >--
    Dim objEmail As Outlook.MailItem
    Set objEmail = app_Outlook.CreateItem(olMailItem)
    objEmail.To = sEmail_Adress
    objEmail.Subject = sTitle
    objEmail.HTMLBody = sText

    objEmail.attachments.Add DeinAnhang
    objEmail.Display False
     
    Balu3200, 6. August 2023
    #3
  4. Email mit Anhang aus Access senden

    Habe dies nun versucht jedoch kommt mir immer noch der gleiche Fehler (siehe Foto)
    muss vieleicht dazu sagen das ich im Formular ein Anlage Feld erstellt habe, da es jedesmal bei versenden des Mails ein anderes Foto sein wird! kann es sein das ich daher einen anderen Code nehmen muss?
    DANKE dir nochmals für die Hilfe
     
    Balu3200, 6. August 2023
    #4
  5. andyfau
    andyfau Erfahrener User
    Hier als allgemeine Funktion, die in ein Modul (nicht im Formularmodul) eingefügt wird und dann von überall her aufgerufen werden kann:
    Mailversand "die@emailadresse", "MeinBetreff", "meinText", "C:\Users\an\Documents\Bild.jpg"

    Code:
    Public Sub Mailversand(adresse As String, betreff As String, mailtext As String, Anhang As String) 'Anhang als vollständiger Pfad der Anhangdatei
    Dim Nachricht As Object, OutlookApplication As Object
    Set OutlookApplication = CreateObject("Outlook.Application")
    Set Nachricht = OutlookApplication.CreateItem(0)
    With Nachricht
     .To = adresse
     .Subject = betreff
     .attachments.Add Anhang
     .Body = mailtext & vbCrLf & vbCrLf
         '.Display 'zeigt outlook
          'SendKeys "%S"
     .Send 'sendet direkt
    End With
    
    Set OutlookApplication = Nothing
    Set Nachricht = Nothing
    End Sub
     
    andyfau, 6. August 2023
    #5
  6. Dann wird dies nicht gehen was ich wollte mit immer verschiedenen Fotos!
    auch mit diesem Code erhalte ich eine fehlermeldung, das ja normal ist wenn ich kein genauen Pfad an geben!
    Dachte weil ich eine Anlage bei Access eingebaut habe, durch Doppelklick auf das Feld macht sich dann die Maske auf Anlage Hinzufügen und danch kann man ja auf OK tippen und die Anlage wird dann im Feld angezeigt.

    so wollte ich das Formular senden!
     
    Balu3200, 6. August 2023
    #6
  7. andyfau
    andyfau Erfahrener User
    Vergiss die Anlagefelder in den Formularen. Nutze den Dateiauswahldialog (Funktion Filedialog aus der Office Object Library, siehe auch Verweise) Damit kannst Du den Anwender die Fotodatei auswählen lassen und den Pfad dann in deiner Tabelle speichern um ihn für die Mail zu übergeben.
    Eigentlich kein Hexenwerk.
    In einem Bild-Steuerelement im Formular kannst Du das Bild dann auch anzeigen lassen (me.Meinbild.picture = Pfad)
    (In den Eigenschaften auf verknüpfen einstellen, nicht auf eingebettet! Sonst blähst Du die DB unnötig auf.)
    Die Eigenschaft Picture gibt auch immer den Pfad wieder, sodass man sie z.B über das Ereignis Doppelklick wieder auslesen kann um sie dann z.B. als Anhang der Funktion Mailversand übergeben kann.
    Die einzige Einschränkung beim Emailversand ist, dass man immer nur einen Anhang mit senden kann.
     
    andyfau, 6. August 2023
    #7
  8. Doming
    Doming Erfahrener User

    Email mit Anhang aus Access senden

    Guten Morgen,
    das ist so nicht ganz richtig.
    Ich habe eine Datenbank mit Berichten, die an verschiedene Leute in verschiedenen Abteilungen versendet werden. Bei einigen Abteilungen bekommen die Empfänger den Bericht als PDF mit angehängten Bildern, die anderen werden nur über einen neuen Bericht informiert, weil sie selbst Zugang zur Datenbank haben.
    Bei der Neuanlage des Berichtes wird ein Verzeichnis erstellt, in das evtl. vorhandene Fotos abgelegt werden.
    Diese Fotos werden in einer Funktion in eine globale Array-Variable (bAnhang, Typ String) eingelesen .
    Code:
    Function DateienAuslesen(ByVal strOrdner As String)
    On Error GoTo Fehler
     Dim fso As Object
     Dim objFld As Object
     Dim objFiles As Object
     Dim fld As Variant, File As Variant
     Dim Endung As String * 3
     Dim ID As Long
     Dim a As Long, n As Long
        strOrdner = strOrdner & "\"
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set objFld = fso.GetFolder(strOrdner)
        ReDim bAnhang(1)
        nAnhang = 0: nbAnhang = 0
        Set objFiles = objFld.Files
            For Each File In objFiles
            If Right(File.Name, 3) = "jpg" Or Right(File.Name, 3) = "pdf" Then   'Nur Anhänge mit .pdf oder .jpg
                nAnhang = nAnhang + 1
                If Right(File.Name, 3) = "jpg" Then nbAnhang = nbAnhang + 1
                ReDim Preserve bAnhang(nAnhang)
                bAnhang(nAnhang - 1) = PbPfad & "\" & File.Name
                Debug.Print "Anhang " & nAnhang, bAnhang(nAnhang)
            End If
        Next File
    Exit_Auslesen:
        Set fso = Nothing
        Set objFld = Nothing
        Set objFiles = Nothing
        Exit Function
    Fehler:
        Fehlerprot "MailModul", "DateiAuslesen", Err.Number, Err.Description
        Resume Exit_Auslesen
    End Function
    (Fehlerprot ist eine globale Funktion, die mir ein Protokolltabelle füllt)

    Die Prozedur, mit der ich den Mailempfänger eintrage, schicke ich nur bei Bedarf, denn darin wird nur nachgesehen, in welcher Abteilung der Empfänger ist. Je nach Ergebnis ändert sich Betreff und Text. Gesendet wird dann in einer Schleife folgende Funktion und ihr übergebe ich
    Empfaenger,
    Betreff,
    Inhalt (also den Mailtext),
    Edit (bei der Auswahl der Empfänger kann ich ein Flag setzen, wenn ich den Serientext nochmal ändern oder kontrollieren möchte, ansonsten geht die Mail so weg),
    Mitbild (für die Empfänger ohne Zugriff auf die Datenbank),
    Prio (um die Mail als wichtig zu senden)
    Code:
    Public Function EmailSenden(Empfaenger As String, Betreff As String, Inhalt As String, Edit As Byte, Mitbild As Boolean, Prio As Byte)
    On Error GoTo SendenFehler
     Dim olApp As Outlook.Application
     Dim olNamespace As NameSpace
     Dim objMailItem As MailItem
     Dim objFolder As mapiFolder
     Dim objBild As String
     Dim Edit2 As Boolean
     Dim a As Long
    
        Set olApp = CreateObject("Outlook.Application")
        Set olNamespace = olApp.GetNamespace("MAPI")
        Set objFolder = olNamespace.GetDefaultFolder(olFolderInbox)
        Set objMailItem = objFolder.Items.Add(olMailItem)
     
        With objMailItem
            Debug.Print "Mail an " & Empfaenger
            .To = Empfaenger
            .Subject = Betreff
            .Body = Inhalt
            If Prio Then .Importance = olImportanceHigh Else .Importance = olImportanceNormal
            If nAnhang > 0 And Mitbild Then
                For a = LBound(bAnhang) To UBound(bAnhang) - 1
                   .Attachments.Add bAnhang(a)
                   Debug.Print "MailAnhang(" & a & "): " & bAnhang(a)
                Next a
            End If
            .Display
        End With
        olApp.ActiveWindow
        If Not Edit Then SendKeys "%s"
    Exit_Senden:
        Set olApp = Nothing
        Set olNamespace = Nothing
        Set objFolder = Nothing
        Set objMailItem = Nothing
        Exit Function
    SendenFehler:
        Fehlerprot "MailModul", "EMailSenden", Err.Number, Err.Description
        Resume Exit_Senden
    End Function 
    Gruß
    Doming
     
    Doming, 7. August 2023
    #8
  9. Doming
    Doming Erfahrener User
    Hm, ok, vielleicht habe ich da mit Kanonen auf Spatzen geschossen... Email mit Anhang aus Access senden *;)*
    Mit etwas Feingefühl kann man herauslesen, dass man objMailItem.Attachments.Add mehrmals aufrufen kann
    *räusper*

    [Edit] ich sehe gerade, dass die Ursprungsfrage bereits hier beantwortet wurde, schönen Dank
     
    Zuletzt bearbeitet: 7. August 2023
    Doming, 7. August 2023
    #9
    1 Person gefällt das.

  10. Danke für deine Hilfe!
    das hat jetzt wirklich super geklappt wie du gesagt hast keine Hexerei!
    Leider ist das alles etwas neu für mich früher habe ich viel mit Excel gemacht, aber ich musst feststellen das Access viel besser ist.

    jetzt muss ich nur noch den Dateiauswahldialog in den VBA Code rein Schreiben aber das wird mir wieder etwas Lustig, weil ich nicht genau weiss wo ich diesen einfügen muss :-( wird dieser hier (rot Markiert) eingefügt?
    DANKE dir nocheinmals für deine HILFE


    Private Sub btnSend_Click()
    fx_Email_Senden
    End Sub
    Private Sub fx_Email_Senden()

    '-------------< fx_Email_Senden() >-------------
    Dim sEmail_Adress As String
    sEmail_Adress = ctlEmail_Address.Value

    Dim sTitle As String
    sTitle = ctlTitle.Value

    Dim sText As String
    sText = ctlText.Value

    '----< USE OUTLOOK APP >----
    Dim app_Outlook As Outlook.Application
    Set app_Outlook = New Outlook.Application

    '--< Email einstellen >--
    Dim objEmail As Outlook.MailItem
    Set objEmail = app_Outlook.CreateItem(olMailItem)
    objEmail.To = sEmail_Adress
    objEmail.Subject = sTitle
    objMailItem.Attachments.Add
    objEmail.HTMLBody = sText
    objEmail.Display False

    objEmail.Send
    '--< Email einstellen >--

    '< Abschluss >
    Set objEmail = Nothing
    Set app_Outlook = Nothing
    '</ Abschluss >

    '----</ USE OUTLOOK APP >----
    '-------------</ fx_Email_Senden() >-------------
    End Sub
     
    Balu3200, 7. August 2023
    #10
  11. andyfau
    andyfau Erfahrener User
    Attachments.Add ist die Methode mit der du den Pfad des Anhangs an Outlook übergibst.
    Schau Dir dazu bitte die Codes von mir und Doming nochmal an um sie zu verstehen.

    Die folgende Funktion öffnet den Dateidialog von Windows, aus der dann der Anwender die Bilddatei wählen kann und der Pfad in eine Variable übergeben wird. Diese kannst Du dann wiederum für die o.g. Methode verwenden.

    Code:
    objMailItem.Attachments.Add = Dateiwahl
    Code:
    Public Function Dateiwahl()
     'Bilddatei auswählen
     ' Requires reference to Microsoft Office 16.0 Object Library. 'Verweis beachten
       Dim fDialog As Office.FileDialog
       Dim varFile As Variant
     
       ChDir ("C:\Users\MeinBildverzeichnis\") 'Startverzeichnis für den Auswahldialog
    
       ' Set up the File Dialog.
       Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
       With fDialog
          ' Allow user to make multiple selections in dialog box
          .AllowMultiSelect = False
          ' Set the title of the dialog box.
          .Title = "Bitte Datei auswählen"
          ' Clear out the current filters, and add our own.
          .Filters.Clear
          '.Filters.Add "Textdateien", "*.CSV"
          '.Filters.Add "Textdateien", "*.txt"
          '.Filters.Add "Access Projects", "*.ADP"
          .Filters.Add "All Files", "*.*"
          ' Show the dialog box. If the .Show method returns True, the
          ' user picked at least one file. If the .Show method returns
          ' False, the user clicked Cancel.
          If .Show = True Then
             'Loop through each file selected and add it to our list box.
             For Each varFile In .SelectedItems
                Dateiwahl = varFile
             Next
          Else
             MsgBox "Abbruch gedrückt"
          End If
       End With
    End Function
     
    andyfau, 7. August 2023
    #11
  12. andyfau
    andyfau Erfahrener User
    Noch ein kleiner Hinweis:
    Wenn Du hier Code darstellen möchtest, nutze bitte hier die Funktion "Einfügen Code". Das macht es einfacher deine Codezeilen zu prüfen.

    Ich habe auch gerade gesehen, dass Du einen Button zu Dateiauswahl nutzt.
    Dann muss die Funktion me.Pfad = Dateiwahl natürlich im onClick-Ereignis des Buttons aufgerufen werden. Das dann an die Methode .attachmentadd = me.Pfad.
     
    Zuletzt bearbeitet: 7. August 2023
    andyfau, 7. August 2023
    #12
  13. Email mit Anhang aus Access senden

    Danke für den Tipp!

    Am liebsten würde ich dir die ganze VBA Datei per Mail senden um Sie von einem Profi zu überprüfen! habe im Moment einen Totalen Filmriss und komme nicht mehr weiter mit den Codes :-( :-(

    aber ich versuche es weiter, irgendwann wird es wohl gehen.

    DANKE EUCH beiden für die Hilfe
     
    Balu3200, 7. August 2023
    #13
  14. andyfau
    andyfau Erfahrener User
    Lade doch einfach mal eine abgespeckte Version der DB, ohne vertrauliche Daten, hier hoch. Dann schau ich mal unverbindlich drüber.
    Nur, Access ist nicht Excel. Es bedarf schon einiges an Wissen über Datenbankdesign und Programmierlogik um eine stabile Anwendung zu entwickeln. Dies gilt natürlich besonders dann, wenn man andere Anwender mit der DB "beglücken" will und es nicht nur für einen selbst macht.

    Leicht und schnell lernt man viel unter
    Access-Tutorial: Lernen Sie Microsoft Access Datenbanken zu erstellen!
     
    andyfau, 7. August 2023
    #14

  15. Danke dir vielmals für deine Hilfe
    Hoffe es ist nur etwas kleines wo ich einen Fehler gemacht habe!
     
    Balu3200, 7. August 2023
    #15
Thema:

Email mit Anhang aus Access senden

Die Seite wird geladen...
  1. Email mit Anhang aus Access senden - Similar Threads - Email Anhang Access

  2. VBA Email mit Anhang auf Netzlaufwerk

    in Microsoft Excel Hilfe
    VBA Email mit Anhang auf Netzlaufwerk: Hallo Freunde, ich habe mir 2 Makros geschrieben. 1. Makro: PDF erstellen und diese in ein Verzeichnis (Netzlaufwerk HiDrive, Laufwerkbuchstabe H) speichern. Das klappt einwandfrei, die PDF ist...
  3. VBA Makro Outlook zum drucken von Anhängen neuer emails

    in Microsoft Outlook Hilfe
    VBA Makro Outlook zum drucken von Anhängen neuer emails: Moin, ich brauche ein Makro, das von einer neuen Mail eines bestimmten Absenders automatisch den Anhang (nur .pdf) ausdruckt, sobald sie im Postfach eingeht. Bisher funktioniert schon manches...
  4. Serien-Emails mit Anhängen (MS 365)

    in Microsoft Outlook Hilfe
    Serien-Emails mit Anhängen (MS 365): Guten Tag, seit ein paar Tagen versuche ich schon über Recherchen im Internet, eine Möglichkeit zu finden, wie man mit MS 365 einen Serienbrief schreiben kann, an den man auch ein PDF-Dokument...
  5. Anhang, der in Access gespeichert ist, soll an eine eMail gehängt werden

    in Microsoft Access Hilfe
    Anhang, der in Access gespeichert ist, soll an eine eMail gehängt werden: Hallo Community das aktuelle Access-Projekt behandelt das Thema Erfassung und Bearbeitung von Fehlermeldungen von Kunden. Ausgangslage Der Erfasser legt für jede Meldung via einem Formular einen...
  6. Access Tabelle in email body kopieren (nicht anhängen)

    in Microsoft Access Hilfe
    Access Tabelle in email body kopieren (nicht anhängen): Hallo zusammen, ich habe nach langem Suchen diese Funktion gefunden, die mir eine Outlook message erzeugt und die Tabelle in den Body kopiert. Code: Public Function HTMLMail(SendTo As String,...
  7. Email mit verschiedenem Anhang aus Access

    in Microsoft Access Hilfe
    Email mit verschiedenem Anhang aus Access: Hallo! Ich habe folgendes Problem und bräuchte einen Rat, wie ich da am besten rangeh: Wir haben einen Wachdienst und versenden am nächsten Tag immer Protokolle an unsere Kunden, was die letzte...
  8. [Access 2003] - Access + Email-Versand mit Anhang

    in Microsoft Access Hilfe
    [Access 2003] - Access + Email-Versand mit Anhang: Hallo zusammen, ich habe eine kleine Auftragsdatenbank erstellt, in der ich hinterlege, welcher Dienstleister beauftragt wird. Jeder Auftrag hat eine eindeutige ID. Nun möchte ich den...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden