Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: MiCoMaSe am Mai 16, 2019, 12:48:53

Titel: Tabelle in HTML Mail einfügen.
Beitrag von: MiCoMaSe am Mai 16, 2019, 12:48:53
Hallo zusammen,
ich bin ganz neu und habe schon gesucht und leider nichts passendes gefunden.
Darum wende ich mich nun persönlich an euch.

Mit der Funktion befülle ich eine Tabelle [temp_Offene_Bewertungen_7_AT] und werte diese auch aus.
Public Function CreateHTMLTable() As String
On Error GoTo ErrHandler
Dim i As Long
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim strTable As Variant
'-------------------- Abfrage für +7AT Ausführen --------------------------
    DoCmd.SetWarnings False
   
        DoCmd.OpenQuery "QRY_DEL_temp_Offene_Bewertungen_7_AT"
        DoCmd.OpenQuery "QRY_ADD_Offene_Bewertungen_7_AT"
        'DoCmd.OpenQuery "QRY_UPD_temp_Offene_Bewertungen_7_AT"
       
    DoCmd.SetWarnings True
'------------------------------------------------------------------------
Set Db = CurrentDb()
Set Rs = Db.OpenRecordset("temp_Offene_Bewertungen_7_AT", dbOpenSnapshot)

strTable = "<table border padding: 5px> " < tr > ""
Do Until Rs.EOF
    For i = 0 To Rs.Fields.Count - 1
        strTable = strTable & "<td> " & Rs.Fields(i) & " </td>"
    Next
        strTable = strTable & " </tr><br>"
        Rs.MoveNext
Loop
        Rs.Close
        CreateHTMLTable = strTable & "</table>"
       
ExitErrHandler:
    Set Rs = Nothing
    Set Db = Nothing
Exit Function
ErrHandler:
    MsgBox Err.Description
    Resume ExitErrHandler
   
End Function


Über den entsprechende SUB lasse ich mir eine Email generieren und ausgeben, was soweit funktioniert

Private Sub Befehl0_Click()
    Dim objOutlook As Outlook.Application
    Dim objMailItem As Outlook.MailItem
    Set objOutlook = New Outlook.Application
    Set objMailItem = objOutlook.CreateItem(olMailItem)
    'With objMailItem

    With objMailItem
        ' Den Empfänger der Mail festlegen
        .To = "test@test.de"
       
        ' Einen CC-Empfänger hinzufügen
        .CC = ""
       
        ' Den Betreff der Mail festlegen
        .Subject = "Offene Leistungsbewertung +7 AT nach Maßnahme ende."
       
        ' Text in die Mail einfügen
         .HTMLBody = "Hallo Kolleginnen und Kollegen,<br><br>" & _
                     "anbei POS#, für die noch keine Leistungsbewertungen abgegeben wurde.<br>" & _
                     "Diese Maßnahmen liegen bereits +7AT zurück.<br><br>" & _
                      CreateHTMLTable & "<br><br>" & _
                     "Ich bitte diese so Zeitnah wie möglich noch zu melden."
         .Display
         End With
         objOutlook.ActiveWindow
End_Fehler:
     Exit Sub
fehler:
     MsgBox " Ein unerwarteter Fehler ist aufgetreten, Fehler: " _
            & Err.Number & vbNewLine & Err.Description, vbCritical _
            , "Entschuldigung!"
Resume End_Fehler
'End With

End Sub


Das Problem was ich habe ist das ich alles noch von Hand Formatieren muss.
Siehe den Anhang nicht_tabelle.jpg
Wünschenswert wäre wie in dem Anhang mitt_tabelle.jpg
Titel: Re: Tabelle in HTML Mail einfügen.
Beitrag von: ebs17 am Mai 16, 2019, 13:31:01
Hier wäre eine Lösung zur HTML-Tabellenerstellung. Daran könntest Du Dich in Gesamtheit, aber auch am offenen Quellcode bedienen: TabToWeb (https://www.ardiman.de/datenbanken/tabtoweb.html)
Titel: Re: Tabelle in HTML Mail einfügen.
Beitrag von: MiCoMaSe am Mai 16, 2019, 16:44:09
Hallo ebs17,
das ist ein nettes kleine Tool.
Problem ist jedoch das ich nicht alleine die Datenbank benutze.
Die Tabelle habe ich bereits schon mal in HTML inkl. Style erstellt gehabt.
HTML ist mir nicht so ganz fremd im Vergleich zu VB.
Die DB die ich gebaut habe, habe ich mir beigebracht mit vielen Foren Artikel durch lesen und hier und da VB Skripte auseinander nehmen und versuchen meine Bedürfnisse anzupassen.

Ich möchte dieses soweit sauber Formatiert haben, das ich den Report Automatisiert verschicken kann wenn Daten in der Tabelle vorliegen, bzw. zum Feierabend wenn die DB beendet wird. Das muss ich mir noch überlegen.
Titel: Re: Tabelle in HTML Mail einfügen.
Beitrag von: ebs17 am Mai 16, 2019, 17:03:36
Wie gesagt, der Quellcode ist da offen. Also könntest Du ihn entsprechend Deinen Bedürfnissen angepasst übernehmen.

Eine Alternative wäre, die Tabelle/Abfrage als HTML zu exportieren (OutputTo) und das entstandene Konstrukt angepasst in den HTMLBody zu übernehmen, wenn das erzeugte Design Dir zusagt.
Titel: Re: Tabelle in HTML Mail einfügen.
Beitrag von: MiCoMaSe am Mai 16, 2019, 17:25:47
Wie gesagt, jetzt überschreite ich meine Grenzen im Thema VB (bin hier der Dau). :o
Die Daten als HTML zu exportieren wäre Optimal, da kriege ich die Formatierung so wie ich es gerne möchte.
Nur wie kriege ich die Daten nach HTML und dann als HTML zurück in die Mail. :-[
Titel: Re: Tabelle in HTML Mail einfügen.
Beitrag von: ebs17 am Mai 16, 2019, 17:50:14
ZitatNur wie kriege ich die Daten nach HTML
Wie bereits beschrieben mit DoCmd.OutputTo und den dazu gehörigen Argumenten, siehe VBA-Hilfe.

HTML ist ja auch nur Text. Also kann man den Inhalt der HTML-Datei in eine Stringvariable einlesen (Beliebige Datei einlesen (http://vb-tec.de/readfile.htm)).
Dann sollte man daraus die Tabelle "ausschneiden" und in den HTMLBody einbauen. Die HTML-Datei kann dann gelöscht werden (Kill).
Titel: Re: Tabelle in HTML Mail einfügen.
Beitrag von: MiCoMaSe am Mai 16, 2019, 17:53:47
Ich sage schon mal Danke, und werde mein Glück versuchen.
Wenn ich nicht weiter kommen sollte würde ich mich wieder melden