VBA Email

  • Onderwerp starter Onderwerp starter RDIE
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

RDIE

Gebruiker
Lid geworden
25 aug 2013
Berichten
83
Hoi,
Ik heb een formulier waarmee ik contracten invoer. Laten we het formulier even FRM_ContractInvoer noemen
Ik zoek naar een stukje code waarmee ik het volgende kan realiseren:

Ik open het formulier
De code kijkt naar het veld: Afloopdatum
Ligt de huidige datum 365 tot 370 dagen voor de afloopdatum (want wellicht open ik niet elke dag het formulier) dan wordt er automatisch een email opgemaakt gericht aan:
Contacpersoon
EmailadresContactpersoon
BCC: mijn emailadres
onderwerp: "etc etc"
Emailboodschap: "uw contract loopt af etc etc"
met vriendelijke groet
standaard afzender uit outlook

De email zou klaargezet moeten worden maar handmatig verzonden. (om een laatste check te kunnen doen)

Het mooiste zou zijn als de email slechts 1 keer gemaakt wordt. Dus niet elke keer als het formulier wordt geopend en de afloopdatum voldoet aan de voorwaarde dat dan dezelfde email wordt gegenereerd.

Op het forum heb ik wel een stukje code gevonden wat in de goede richting gaat, echter ik zou niet weten hoe ik dit kan fijnslijpen naar bovenstaande.
Zie hieronder. De mailadressen zijn uiteraard voor het moment even fake.
Hopelijk kan iemand me hierbij helpen.

Bij voorbaat dank weer.

Code:
Private Sub Knop98_Click()
Dim OutApp As Object
    Dim OutMail As Object
    
    sBody = "Beste ...,"
  
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .to = "info@test.nl"
        .CC = ""
        .BCC = "info@test2.nl"
        .Subject = "Uw contract loopt af etc etc"
        .Body = sBody
        .Display 'of .Send
    End With
End Sub
 
De enige manier om te voorkomen dat een mail meerdere keren wordt verstuurd is ofwel met een selectievakje werken, ofwel met een verzenddatum. Als het gaat om jaarlijks terugkerende betalingen, dan heb je er weinig aan om dit gegeven in de persoonstabel te zetten, maar zul je een aparte tabel moeten gebruiken om de verstuurde mails bij te houden. Als je dat een beetje slim opzet, kun je die tabel voor álle mails gebruiken trouwens.

Daarnaast vind ik de controletijd nogal onhandig; ik zou eerder alleen de beginperiode gebruiken, dus zeg de 370 dagen. Immers: als je twee of drie weken niet in de db kijkt (of iemand anders) of de mails niet aanmaakt, dan worden deze contracten niet meer gecheckt. En het lijkt mij belangrijk dat alle contracten een mail krijgen, ongeacht wanneer het systeem ze opmerkt.
Dus: een contract valt binnen de controleperiode, en je stuurt dan een mail. Daarna maak je een record aan in de mailtabel, waarin je alle benodigde velden (datum, persoonID, Onderwerp etc) toevoegt. Eventueel heb je ook een veldje in je tabel Personen staan waarin je aanvinkt dat de mail is gestuurd. Dat vinkje kan je dan gebruiken om bij betaling het vinkje weer uit te zetten. In combinatie met de verstuurde mail heb je dan voldoende controle of een persoon het volgende jaar wéér een mail kan krijgen of niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan