HTML Outlook Tabelle
#11
(17.01.2019, 12:19)Leonhard schrieb: Problem dabei ist auch das ich eben keine feste Range in der Mail will sondern eben nur die einer Zeile zugehörigen Informationen wenn die Datumsbedingung erfüllt ist.

Hallo Leonhard, :19:

deshalb schrieb ich auch, dass es einfacher ist, wenn du die Daten der Zellen die zutreffen erst mal "sammelst" und dann an die Funktion übergibst.
Da ich jetzt auf Achse bin, kann ich dir erst Morgen Vormittag ein Beispiel posten. :21:
Top
#12
Hallo Leo,

also, der Code funktioniert erst mal. Zum Daten sammeln sag ich nichts, nur zu der html-Geschichte.
Kennst Du die HTML-Tags für eine Tabelle (z.B. table, tr und th)?

Die einfachste Variante um überhaupt erst mal eine Tabelle zu bekommen, wäre am Anfang vom htmlbody damit zu beginnen
PHP-Code:
.htmlbody "<table><tr><th>Guten Tag,<br><br>" 


und am Ende vom htmlbody damit aufzuhören

PHP-Code:
                "<b><br>m?-Preis:</b> " Tabelle1.Cells(rngCell.Row6).Value strOldBody "</th></tr></table>" 

Da ist dann erst mal der gesamte Text in einer "Zelle".
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Leonhard
Top
#13
Hallo Leonhard, :19:

nachfolgend mal das Beispiel mit "Daten sammeln": :21:
[attachment=21939]

Oder du greifst - wie ich in #5 schon schrieb - auf HTML zurück (und baust das mit den entsprechenden Befehlen im ".htmlbody =" auf - je nachdem, was dir mehr liegt. :21:

Wenn der Bereich "Q1:T4" bei dir schon belegt ist, dann nimm einfach einen anderen. Oder ein anderes Tabellenblatt (welches du auch temporär per VBA erzeugen und am Schluss wieder löschen kannst). :21:

Ich denke mit dem Beispiel von mir sollte das lösbar sein. Dodgy
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • Leonhard
Top
#14
Hallo zusammen,

ich bin leider immer noch nicht dazu gekommen mir das anzuschauen.
Aber schon vorab vielen lieben Dank für eure Hilfe!!

Beste Grüße
Leo
Top
#15
Hi case,

funktioniert einwandfrei. Vielen lieben Dank.
Nur für die Optik: Kann man die Tabelle auch linksbündig und mit Rahmen formatieren?

Beste Grüße
Leo
Top
#16
Hallo,

ohne das jetzt gesehen zu haben, ja.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#17
Hallo zusammen,

ich dachte ich bin ein Fuchs und formatiere einfach den Bereich der zum "sammeln" festgelegt worden ist :05:
Klappt allerdings nur bedingt gut Dodgy :20:


   

Was mache ich da falsch?
Top
#18
(25.01.2019, 15:14)Leonhard schrieb: Was mache ich da falsch?

Hallo Leonhard, :19:

nun - wahrscheinlich formatierst du die falschen Zellen? :21:
Ich würde das auch nicht vorher machen, sondern direkt im Code. Brauchst du da ein Beispiel? Probiere mal etwas mit dem Makrorekorder, da siehst du schon wie die Befehle heißen, um z. B. Rahmen zu setzen, bzw. zu entfernen.
Top
#19
Code:
Private Sub Workbook_Open()
   Dim strOldBody As String
   Dim objOutApp As Object
   Dim rngBereich As Range
   Dim lngRow As Integer
   Dim rngDatum As Range
   Dim rngCell As Range
   On Error GoTo Fin
   With Tabelle1
       lngRow = .Cells(.Rows.Count, 1).End(xlUp).Row
       Set rngDatum = .Range("A2:A" & lngRow)
       For Each rngCell In rngDatum
           If IsDate(rngCell) Then
If rngCell.Value <= DateAdd("m", 24, Date) And rngCell.Offset(0, 8).Value >= 2000 And rngCell.Offset(0, 3).Value = "" Then
                   .Range("Q1").Value = "Anschrift:"
                   .Range("R1").Value = .Cells(rngCell.Row, 7).Text & " ;" & .Cells(rngCell.Row, 6).Text & " ;" & .Cells(rngCell.Row, 8).Text
                   .Range("Q2").Value = "NF 2:"
                   .Range("R2").Value = .Cells(rngCell.Row, 9).Text
                   .Range("Q3").Value = "Miete (Netto):"
                   .Range("R3").Value = .Cells(rngCell.Row, 10).Text
                   .Range("Q4").Value = "qm-Preis:"
                   .Range("R4").Value = .Cells(rngCell.Row, 5).Text
                   Set rngBereich = Range("Q1:R4")
  Range("Q1:R4").Select
   With Selection.Borders(xlEdgeLeft)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
   With Selection.Borders(xlEdgeTop)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
   With Selection.Borders(xlEdgeBottom)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
   With Selection.Borders(xlEdgeRight)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
   With Selection.Borders(xlInsideVertical)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
   With Selection.Borders(xlInsideHorizontal)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
                   .Columns("Q:R").AutoFit
                   Set objOutApp = CreateObject("Outlook.Application").CreateItem(0)
                   With objOutApp
                       .GetInspector.Display
                       strOldBody = .HtmlBody
                       .To = Tabelle1.Cells(rngCell.Row, 2).Value
                       .Subject = "Kundenakquise - " & Tabelle1.Cells(rngCell.Row, 3).Value
                       .HtmlBody = "Guten Tag,<br><br>" & _
                          "dies ist eine automatische Erinnerung " & _
                          "sich bei dem Kunden<b> " & Tabelle1.Cells(rngCell.Row, 3).Value & _
                          " </b>zu melden, da dessen Mietvertrag in weniger als 24 Monaten" & " <b>(" & "" & Tabelle1.Cells(rngCell.Row, 1).Value & ")</b>" & " ausläuft.<br>" & _
                          "Sollte der Mieter sein Optionsrecht wahrnehmen, ändern Sie das Fälligkeitsdatum bitte auf das durch die Optionsziehung angepasste Datum." & _
                          " Nachfolgend alle Mietdetails:<br><br>" & RangetoHTML(rngBereich) & "<br><br>" & strOldBody
                       .Display
                       '.Send ' Sofort senden
                   End With
                   .Cells(rngCell.Row, 4).Value = Now
                   rngBereich.ClearContents
               End If
                                       
             End If
           
           Next rngCell
           
   End With
Fin:
   Set rngBereich = Nothing
   Set objOutApp = Nothing
   If Err.Number <> 0 Then MsgBox "Fehler: " & _
       Err.Number & " " & Err.Description

Range("P8").Select
    Selection.Copy
    Range("Q1:R4").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End Sub
Hallo Case, 

ich habe das jetzt über den Makro Recorder probiert Sleepy
habe die Range auch auf Q1:R4 gesetzt aber die Rahmen werden mir (in der Mail) für 4 Spalten und 2 Zeilen gesetzt.. Waarum :22:
Zum Ende hin entferne ich dann wieder die Rahmenlinien, was bestimmt auch eleganter geht Blush


Beste Grüße und kurz davor es einfach ohne Rahmen zu formatieren,
Leo
Top
#20
Hallo Leonhard, :19:

Elegant? Das muss nur laufen - der Rest ist Nebensache. :21:
[attachment=22232]
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • Leonhard
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste