• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Verjaardagen in Excel >> Mailen

Status
Niet open voor verdere reacties.
Ik ben op zoek naar een Excel sheet waar mederkers met verjaardagen in staan.
Dat kan ik me voorstellen, in jouw voorbeeld zit maar één persoon. Ik weet niet of je veel hebt aan de verjaardaggegevens van het bedrijf waar ik werk, maar als ik je daar een plezier mee doe?
(Gebbetje, dat snap je denk ik wel ;))

Wél handig als je meerdere records had bedacht, want dat test toch wat handiger. En de vraag is: hoe wil je dat gaan aansturen? Want een automatische mail is an sich goed te doen, maar de vraag is natuurlijk ook met welk pakket je dat dan zou willen doen. Er zijn nogal wat mogelijkheden. Dus graag wat meer uitleg, en liefst ook wat meer voorbeelden in je bestand.
 
Moet de mail naar jou of naar de getoonde adressen in het werkblad?
De inhoud van de mail kan je uiteraard zelf bepalen.
Kijk eens naar dit:
 

Bijlagen

Laatst bewerkt:
Voor de gein ook eens gevraagd aan ChatGPT. Die komt met onderstaande. Wat vinden de specialisten ervan?
Code:
Sub StuurVerjaardagsEmail()
    Dim Rng As Range
    Dim Cel As Range
    Dim VerjaardagsDatum As Date
    Dim Vandaag As Date
    Dim EmailBody As String
    Dim OutlookApp As Object
    Dim EmailItem As Object
    Dim EmailAdres As String
   
    ' De datum van vandaag
    Vandaag = Date
   
    ' Bereik van verjaardagen in kolom M2:M100 op het blad "Test"
    Set Rng = ThisWorkbook.Sheets("Test").Range("M2:M100")
   
    ' Outlook applicatie starten
    On Error Resume Next
    Set OutlookApp = GetObject(class:="Outlook.Application")
    If OutlookApp Is Nothing Then
        Set OutlookApp = CreateObject(class:="Outlook.Application")
    End If
    On Error GoTo 0
   
    ' Loop door elke cel in het bereik
    For Each Cel In Rng
        ' Controleren of de cel een datum bevat en niet leeg is
        If Not IsEmpty(Cel.Value) And IsDate(Cel.Value) Then
            VerjaardagsDatum = Cel.Value
            ' Vergelijken van maand en dag van de verjaardag met de huidige datum
            If Month(VerjaardagsDatum) = Month(Vandaag) And Day(VerjaardagsDatum) = Day(Vandaag) Then
                ' Haal het e-mailadres op uit kolom J van dezelfde rij
                EmailAdres = Cel.Offset(0, -3).Value ' Offset(0, -3) verwijst naar kolom J
               
                ' Controleren of het e-mailadres niet leeg is
                If Not IsEmpty(EmailAdres) Then
                    ' E-mail opstellen
                    Set EmailItem = OutlookApp.CreateItem(0) ' 0 is olMailItem
                    With EmailItem
                        .To = EmailAdres
                        .Subject = "Verjaardagswensen!"
                        EmailBody = "Gefeliciteerd met je verjaardag!" & vbCrLf & "We wensen je een fantastische dag!"
                        .Body = EmailBody
                        .Send ' Verzend de e-mail
                    End With
                End If
            End If
        End If
    Next Cel
   
    ' Outlook objecten opruimen
    Set EmailItem = Nothing
    Set OutlookApp = Nothing
End Sub
 
Niet getest, alleen even snel door gelezen.
Op zich niks mis mee :)
Als je niet echt thuis bent in Excel VBA is dat zelfs een prima antwoord van ChatGPT.
 
Laatst bewerkt:
Zelf wel even getest nu, werkt prima!

Dacht even van niet totdat ik allemaal verzonden emails zag in mijn verzonden items...
 
Voor een test is het handiger om .Send te wijzigen in .Display of .Save
 
Heb je toch weer iemand blij gemaakt ;)
 
Het lijkt erop dat chatty niet bekend is met:
- sorteren in Excel
- filteren in Excel
- de methode With ... End With
- het gebruik van arrays
 
Jawel hoor, je moet er alleen om vragen
 
Zie hier als je wat doorvraagt naar efficiëntere methodes. De door Alex geplaatste code als basis genomen

Code:
Sub StuurVerjaardagsEmail()
    Dim Verjaardagen As Variant, EmailAdressen As Variant
    Dim i As Long
    Dim OutlookApp As Object, EmailItem As Object

    ' Laad verjaardagen en e-mailadressen in arrays
    With ThisWorkbook.Sheets("Test")
        Verjaardagen = .Range("M2:M100").Value
        EmailAdressen = .Range("J2:J100").Value
    End With

    ' Start Outlook-applicatie
    On Error Resume Next
    Set OutlookApp = GetObject(class:="Outlook.Application")
    If OutlookApp Is Nothing Then Set OutlookApp = CreateObject(class:="Outlook.Application")
    On Error GoTo 0

    ' Loop door array voor verjaardagen en controleer
    For i = 1 To UBound(Verjaardagen)
        If IsDate(Verjaardagen(i, 1)) And Month(Verjaardagen(i, 1)) = Month(Date) And Day(Verjaardagen(i, 1)) = Day(Date) Then
            If Not IsEmpty(EmailAdressen(i, 1)) Then
                ' E-mail aanmaken en verzenden
                Set EmailItem = OutlookApp.CreateItem(0)
                With EmailItem
                    .To = EmailAdressen(i, 1)
                    .Subject = "Verjaardagswensen!"
                    .Body = "Gefeliciteerd met je verjaardag!" & vbCrLf & "We wensen je een fantastische dag!"
                    .Send
                End With
            End If
        End If
    Next i

    ' Opruimen Outlook objecten
    Set OutlookApp = Nothing
End Sub
 
Ik dacht meer aan:

Code:
Sub M_snb()
   With Sheet1.Cells(1).CurrentRegion
      .Sort Cells(1, 13), , , , , , , 1
      .AutoFilter 13, Format(Date, "dd-mm-yyyy")
      sn = .Offset(1).SpecialCells(12)
   End With
   
   With CreateObject("outlook.application")
    For j = 1 To UBound(sn)-1
       With .createitem(0)
          .to = sn(j, 10)
          .body = "proficiat"
          .send
       End With
    Next
   End With
End Sub
 
voor als je vandaag geboren bent
 
Voor wie doen jullie dit allemaal eigenlijk? TS zwijgt al een tijdje in alle tongen en talen. Lijkt mij dat dit weer een typisch stukje "Excelhelpers zelfbevrediging" is :).
 
Voor wie doen jullie dit allemaal eigenlijk? TS zwijgt al een tijdje in alle tongen en talen. Lijkt mij dat dit weer een typisch stukje "Excelhelpers zelfbevrediging" is :).
Ik denk dat hij in de nachtdienst zit en nu ligt te slapen gezien de tijd van de vraagstelling: 1:44 u
 
Lijkt me zonder chatty eenvoudig op te lossen:

Code:
Sub M_snb()
    With Sheet1.Cells(1).CurrentRegion
      .Sort Cells(1, 13), , , , , , , 1
      .columns(13).numberformat="ddmm"
      .AutoFilter 13, Format(Date, "ddmm")
      sn = .Offset(1).SpecialCells(12)
    End With

   With CreateObject("outlook.application")
      For j = 1 To UBound(sn)-1
         With .createitem(0)
            .to = sn(j, 10)
            .body = "proficiat"
            .send
         End With
      Next
   End With
End Sub
 
Lijkt mij dat dit weer een typisch stukje "Excelhelpers zelfbevrediging" is :).
Misschien wel. Je mag er zelf toch ook wel wat van leren? Ik weet nu dat chatty best wel een code kan schrijven die werkt, hoewel het mogelijk wel efficiënter of eleganter kan.
 
Sterker nog, coderen is een van de sterkste punten. Ik blijf steeds versteld staan van hoe goed het is.
Je hoeft bijna geen kennis van programmeren te hebben om een werkend programma te maken.

Code wordt ook zonder problemen in simpele woorden samengevat. Zeer leerzaam.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan