Hulp nodig bij VBA voor Access (Mail naar lijst)

Status
Niet open voor verdere reacties.

ainghelbrecht

Nieuwe gebruiker
Lid geworden
19 apr 2011
Berichten
4
Dag iedereen

Voor mij werk heb ik een nieuwe opdracht gekregen waar ik niet zo goed in thuis ben. Onze dienst heeft in Access een overzicht aangemaakt van al onze contactpersonen.

In 1 grote tabel staan alle gegevens incl. in welke categorie zij behoren. Ik heb dan voor iedere categorie een afzonderlijke query aangemaakt en bijhorend formulier. Op die manier kunnen we reeds voor iedere contactpersoon een fiche bekijken, maar kunnen we ook voor iedere categorie alle bijhorende contactpersonen bekijken.

Nu ben ik op zoek om vanuit Access een mail aan te maken in Outlook geadresseerd aan iedere contactpersoon in deze groep.

Vermits ik geen ervaring heb in VBA, heb ik volgende code reeds gevonden:

Code:
Private Sub cmdMailAlle_Click()
 Dim strMailadressen As String
 strMailadressen = strMailadressen + Form_Erfgoedverenigingen.E_mail.Value
'FollowHyperlink "Mailto: xxxx "
End Sub

Om alles chronologisch op te lijsten, moet ik dus eerst:

- Alle (correcte) emails uit de lijst op te vragen. (ik vermoed hiervoor een For Each - Next / If ... Else ... argument te gebruiken). In bovenstaand voorbeeld werk ik dus met alle contactpersonen uit de lijst 'Erfgoedverenigingen'

- Alle opgevraagde mailadressen in een nieuwe mail toevoegen als geadresseerden. Ik dacht hiervoor de argument FollowHyperlink te gebruiken, maar ik weet ook niet hoe ik mijn 'String' met alle mailadressen hieraan kan koppelen...

Kan er mij iemand hierbij helpen, want zelfs met het doornemen van tientallen sites en boeken geraak ik er maar niet uit...

Eeuwige dankbaarheid als beloning :)
 
Laatst bewerkt door een moderator:
Ik heb dan voor iedere categorie een afzonderlijke query aangemaakt en bijhorend formulier.
Mij bespringt dan gelijk de vraag: Waarom????? Ik zou met één formulier werken (met uiteraard één query) en een keuzelijst (met invoervak) in de koptekst waarmee je de categorie kunt kiezen. Is een heel stuk beter te behappen als je iets wilt aanpassen. Maar goed, die keuze ligt uiteraard bij jou ;)

Volgende vraag: wil je iedereen tegelijk kunnen mailen met dezelfde mail, of wil je voor elk record apart een mail maken?
 
Re:

Wel, die keuze werd mij gedwongen, want iedere contactpersoon kan lid zijn van 1 of meerdere categorieën... Ik probeer nu zelf mijn baas te overhalen om gans het categoriesysteem te wijzigen, maar voorlopig moet ik het stellen met de opdracht die ik krijg...

Ik ken ook geen eenvoudiger oplossing dan deze met de categorieën...

Nuja, dit gezegd zijnde, zou ik graag één mail opmaken die ik verzend aan iedereen die in de specifieke categorie zit. Weliswaar wil ik de inhoud van de mail handmatig typen.
 
Wat betreft je catagorieën: het maakt echt niet uit of je op één formulier een keuzelijst maakt waarop je categorieën filtert zodat je bij een selectie de records van de gekozen categorie ziet, of dat je voor elke categorie een aparte query/formulier maakt. Je ziet in die formulieren namelijk exact dezelfde (hoeveelheid) aan personen. Iemand is lid van een categorie, of niet..... Dus ik zou nog eens met die man (meestal zijn het mannen, als ze eigenwijs doen) gaan praten. Het kan zelfs nog mooier als je een keuzelijst gebruikt waarop je meerdere categorieën tegelijk kunt selecteren, want dan kun je de selectie naar behoeven instellen op één of meer categorieën!

Voordat je dingen gaat bouwen in een db, is het behoorlijk zinvol om eerst te inventariseren wat een tabel/query/formulier moet doen. Dan weet je namelijk welke functionaliteit je wel of niet kunt gebruiken. Blind formulieren en qeuries gaan bouwen is nou net datgene wat je moet zien te voorkomen. Alles begint met inventariseren, en plannen...

Wat betreft de mail: moet per zending de tekst kunnen worden aangepast, begrijp ik dat zo? Of alleen als je gaat mailen naar de groep, dat je eenmalig een tekst kunt maken? En doe je dat via een formulier?
 
Re:

Zucht... Hoe meer ik erover lees, hoe minder ik mezelf nog lijk te begrijpen....

Ik ben dus op vraag van mijn baas (wat trouwens een vrouw is, mss nog erger?) vertrokken met 1 tabel waarin alle contactpersonen opgelijst staan. In deze tabel staan er nog ongeveer 20 kolommen met ieder een categorie, waarbij ik per categorie al dan niet een vinkje kan aanzetten...

Op die manier heb ik dus voor iedere categorie een query aangemaakt en een bijhorend formulier om op die manier alle contactgegevens te kunnen zien per categorie...

Ik kan begrijpen dat je misschien beter 1 extra kolom voorziet, gekoppeld aan een andere tabel, waarin je dan de bijhorende categorie kan selecteren. Maar ik versta dan niet hoe je op die manier kan beslissen om 1 persoon meerdere categorieën toe te wijzen....

Nuja, ze gaan het bijna zelf kunnen oplossen in ieder geval :p

Wat betreft dan de mailing list... Ik heb in iedere afzonderlijke formulier een knop gezet om automatisch een nieuwe mail te openen waarbij dan alle contactpersonen van uit die bepaalde categorie als geadresseerde wordt toegevoegd. Het bericht typ ik vervolgens zelf in...

Ik kan altijd het lege Access bestand doorsturen, maar blijkbaar is die 45 mb groot, wat ik ook al niet begrijp, dus kan hem hier niet toevoegen....

Bedankt voor alle hulp... Jammer dat je zover weg woont of kging al aan je deurbel hangen :)
 
De opzet van de db klinkt al rotter en rotter ;) Niet jouw schuld overigens, ik begrijp dat jij 'm ook maar in je maag gesplitst krijgt :) Wil je het netjes doen, dan maak je een aparte tabel Contactpersonen, een aparte tabel Categorieën en een koppeltabel CP_Cat waarin je per persoon vastlegt welke categorieën hij/zij krijgt. Een persoon met 4 categorieën krijgt dus in die tabel 4 records. Per cp kun je dan in een subformulier zien welke categorieën van toepassing zijn. Op die manier kun je ook heel simpel overzichten maken per categorie, per persoon etc. Nu heb je inderdaad een heel probleem, omdat de velden allemaal apart in de tabel cp zijn opgenomen, en dat maakt het maken van het algemene formulier er inderdaad niet makkelijker op. Overigens nog niet onmogelijk, alleen moet je nu een truc toepassen bij het openen van het formulier, want je moet dus steeds wisselende categorievelden aan het formulier toewijzen. Maar, zoals gezegd, niet onmogelijk en zelfs te prefereren boven het gebruiken van 20 aparte formulieren. Wat mij betreft. Moest ik het maken, dan zou ik het wel weten....

Voor het mailen kun je iets als dit gebruiken:

Code:
Private Sub cmdAllen_Click()
Dim appOutLook As Outlook.Application
Dim MailOutLook As Outlook.MailItem
Dim sEmail As String
Dim sVerzonden As String
Set appOutLook = CreateObject("Outlook.Application")
Set MailOutLook = appOutLook.CreateItem(olMailItem)
        
    sVerzonden = ""
    With CurrentDb.OpenRecordset("Tbl_Mailen")
        If Not .RecordCount = 0 Then
            Do While Not .EOF
                sEmail = .Fields("Aan").Value
                With MailOutLook
                    .BodyFormat = olFormatRichText
                    .To = sEmail
                    .Subject = Me.Mess_Subject
                    .HTMLBody = Me.mess_text
                    .Send
                End With
                'MsgBox MailOutLook.Body
                sVerzonden = sVerzonden & sEmail & ", "
                .MoveNext
            Loop
        End If
    End With

    Do While Right(sVerzonden, 2) = ", "
        sVerzonden = Left(sVerzonden, Len(sVerzonden) - 2)
    Loop
    MsgBox "Er is een mail gestuurd naar " & sVerzonden & "."

    Exit Sub

email_error:
    MsgBox "Er was een foutje..." & vbCrLf & "En wel: " & Err.Description

End Sub
 
Laatst bewerkt:
Re:

Hehe, het kriebelt om jouw reactie af te drukken en eens onder haar neus te gaan schuiven :p Nuja, misschien beter niet doen als ik nog eventjes deze job wil verder uitoefenen...

Ik wil je in ieder geval al heel hard bedanken voor alle tips die je mij gaf. Het is voor mij nog een beetje ontcijferen wat je allemaal bedoelde, maar ik doe mijn best.

Dus in principe moet ik nu 3 tabellen maken: 1 contactpersonen, 1 met alle categorieën en 1 koppeltabel. Daartussen moet ik dus één op veel relaties aanmaken veronderstel ik?

Het enige wat ik nog niet direct voor ogen zie is hoe ik dan alles in een mooi hanteerbare formulier kan gieten waardoor het voor iedereen op onze dienst gemakkelijk hanteerbaar is...

Ik probeer alles even vanaf 0 opnieuw op te bouwen, ook de code zal ik even proberen toe te passen. Ik laat deze topic wel nog even 'open' staan, om misschien mijn vragen naar de toekomst beter te kunnen kaderen.

Ik hoop tegen donderdag al meer inzichten te krijgen en dan nog iets te laten weten hier... Indien het mij dan nog niet lukt, dan zal ik eens een prijsofferte opvragen bij jou :p

Nogmaals bedankt in ieder geval!!!
 
Ik heb een voorbeeldje, waar bovenstaande code o.a. ook in zit.
 

Bijlagen

  • email_verzenden v3.zip
    83,8 KB · Weergaven: 33
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan