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
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)
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.
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.
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. :-[
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).
Ich sage schon mal Danke, und werde mein Glück versuchen.
Wenn ich nicht weiter kommen sollte würde ich mich wieder melden