Information an Mitgleider per eMail versenden wenn Änderung vorhanden
#1
Hallo,

ich möchte meine Excel Tabelle für unsere Mittagsbetreuung noch weiter verbessern. Sie Sepa Vorabinformationen für die Essensliste funktioniert (es muss nur noch die Sicherheitsabfrage Outlook geklärt werden)
Nun möchte ich dies auch für die neuen Mitglieder und bei Änderungen ebenfalls durch Excel realisieren.

Dafür habe ich eine Spalte hinzugefügt in welcher bei neuen Mitgliedern ein "Neu" steht oder "Änderung"

Der code soll jeweils diese Zeile prüfen und nur bei denen wo neu oder Änderung steht einen Text aus spalten der jeweiligen Zeile zusammensetzen der dann versendet wird..

Wie kann ich den bestehenden Code zu umstellen das Spalte 58 einmal nach "Neu" oder "Änderung" geprüft wird?

Code:
Sub eMailEltern()
Dim olApp As Object
Dim z As Long
Dim Empfänger As String
Dim Mandatsnummer As String
Dim Beitrag As String
Dim Monat As String
Dim Datum As String
Dim Kind As String
Dim lngLetzteZelle As Long

Set olApp = CreateObject("Outlook.Application")

With ActiveSheet

For z = 5 To .Cells(.Rows.Count, 41).End(xlUp).Row ' normal bis 70 Schleifendurchlauf = 66 x

   If .Cells(z, 41) = Empty Then Exit For


     'Empfänger festelegen
     Empfänger = ActiveSheet.Cells(z, 41)
             
     'Mandatsnummer erstellen
     Mandatsnummer = ActiveSheet.Cells(z, 42)
     
     'Beitrag
     Beitrag = ActiveSheet.Cells(z, 43)
     
     'Kind
     Kind = ActiveSheet.Cells(z, 44)
   
     'Monat
     Datum = ActiveSheet.Cells(1, 4)
     Monat = Format(Datum, "mmmm yyyy")

With olApp.createitem(0)
Rem Empfänger
         .to = Empfänger
         
Rem Betreff
         .Subject = "Ankündigung Abbuchung Differenzbuchung - Mittagsessen für " & Monat & " in Höhe von " & Beitrag & " € - Kind " & Kind

Rem Textkörper (Body) im HTML-Format. (1 = Nur-Text, 2 = HTML, 3 = Rich-Text)
         .BodyFormat = 2
Rem "<br>" = Zeilenumbruch-Anweisung (nur bei HTML)
         .HTMLBody = "Sehr geehrte Eltern,<br><br> " & _
                         "wir werden von Ihrem Konto den Differenzbeitrag für das Mittagessen von " & Kind & " für den Monat <b>" & Monat & "</b> in Höhe von <b>" & Beitrag & " Euro</b> abbuchen.<br><br>" & _
                         "Die Abbuchung findet in den kommenden 5 Tagen über die Mandatsreferenznummer<b> " & Mandatsnummer & "</b> statt.<br><br>" & _
                         "Mit freundlichen Grüßen<br><br>" & _
                         "Mittagsbetreuung Penzing - Kassierer - " & .HTMLBody
         
Rem Name des Sendekontos in Anführungszeichen
     Set .SendUsingAccount = .Session.Accounts.Item("Mittagsbetreuung-Penzing@online.de")
     
Rem  Mail sofort senden
'          .Send
.Display

End With

   Next z

End With

End Sub
Gruß Daniel Albert

Finanzberater für Baufinanzierungen
Top
#2
Hallo Daniel,

erst mal nur schnell ein codeschnipsel.

Code:
If .Cells(xxx, 58) = "neu" or .Cells(xxx, 58) = "Änderung" Then ...
   NeuerText = .Cells(irgendwo,irgendwo) & .Cells(nochirgendwo,nochirgendwo)
End IF

Der Code müsste dann irgendwo in die For-Schleife und NeuerText dann bestimmt beim Body dazu?
.      \\\|///      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:
  • Daniel Albert
Top
#3
Ok, ich habe noch nie mit mehreren Schleifen in einem Makro gearbeitet und bekomme jetzt folgende Fehlermeldung:

Next ohne For

Code:
Sub Neukunden_Änderung()
Dim olApp As Object
Dim z As Long
Dim Empfänger As String
Dim Mandatsnummer As String
Dim Beitrag As String
Dim Datum As String
Dim Kind As String
Dim lngLetzteZelle As Long

Set olApp = CreateObject("Outlook.Application")

With Tabelle1

For z = 5 To 70 ' normal bis 70 Schleifendurchlauf = 66 x

   If .Cells(z, 58) = "Neu" Then


     'Empfänger festelegen
     Empfänger = Tabelle1.Cells(z, 43)
             
     'Mandatsnummer erstellen
     Mandatsnummer = Tabelle1.Cells(z, 57)
     
     'Beitrag
     Beitrag = Tabelle1.Cells(z, 5)
     
     'Kind
     Kind = Tabelle1.Cells(z, 3)
   
     'Datum
     Datum = Tabelle1.Cells(1, 4)

With olApp.createitem(0)
Rem Empfänger
         .To = Empfänger
         
Rem Betreff
         .Subject = "Ankündigung Abbuchung Differenzbuchung - Mittagsessen für " & Monat & " in Höhe von " & Beitrag & " € - Kind " & Kind

Rem Textkörper (Body) im HTML-Format. (1 = Nur-Text, 2 = HTML, 3 = Rich-Text)
         .BodyFormat = 2
Rem "<br>" = Zeilenumbruch-Anweisung (nur bei HTML)
         .HTMLBody = "Sehr geehrte Eltern,<br><br> " & _
                         "wir werden von Ihrem Konto den Differenzbeitrag für das Mittagessen von " & Kind & " für den Monat <b>" & Monat & "</b> in Höhe von <b>" & Beitrag & " Euro</b> abbuchen.<br><br>" & _
                         "Die Abbuchung findet in den kommenden 5 Tagen über die Mandatsreferenznummer<b> " & Mandatsnummer & "</b> statt.<br><br>" & _
                         "Mit freundlichen Grüßen<br><br>" & _
                         "Mittagsbetreuung Penzing - Kassierer - " & .HTMLBody
         
Rem Name des Sendekontos in Anführungszeichen
     Set .SendUsingAccount = .Session.Accounts.Item("Mittagsbetreuung-Penzing@online.de")
     
Rem  Mail sofort senden
'          .Send
.Display

End With

   Next z

End If

End Sub
Gruß Daniel Albert

Finanzberater für Baufinanzierungen
Top
#4
Hallo Daniel,

ohne Prüfung auf eventuelle andere Fehler,

das End If muss vor der Zeile Next z stehen.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Daniel Albert
Top
#5
und ein End With musste ich integrieren
Gruß Daniel Albert

Finanzberater für Baufinanzierungen
Top


Gehe zu:


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