Rapport versturen per email met sjabloon

Status
Niet open voor verdere reacties.

GerbenDenker

Gebruiker
Lid geworden
29 mrt 2013
Berichten
74
Hallo, ik probeer het volgende.
Met een knop wordt een rapport naar alle bekende e-mail adressen gestuurd.
Dat gebeurt nog 1 voor 1; in beeld verschijnt achter elkaar 1 geadresseerde.
Het rapport (pdf) wordt goed toegevoegd.
Dat werkt goed (code van het forum gezocht en wat mee gestoeid..)


Vraag 1. Wat is de code om er een sjabloon aan toe te voegen, zodat het e-mail bericht een mooie opmaak heeft.
Vraag 2. Is het mogelijk de mails in 1 keer weg te sturen naar iedereen - of moet je dan met CLickYes of zo gaan werken ?




De code die ik nu gebruik..

Code:
Private Sub Knop0_Click()
With CurrentDb.OpenRecordset("Incasso info")
    .MoveFirst
    Do While Not .EOF
        'defineren ontvanger en actienemer met veld uit recordset
        Ontvanger = !Email
        Rekhouder1 = !Rekhouder1
        
        'report openen voor eerste naam
        DoCmd.OpenReport "verzendRapport", acViewPreview, , "Rekhouder1 = '" & Rekhouder1 & "'"
        'report verzenden naar eerste ontvanger
        DoCmd.SendObject acSendReport, , acFormatPDF, Ontvanger, , , "Informatie aan de leden" _
            & " voor " & !Rekhouder1, "Mijnheer, mevrouw, hierbij...etc.", True
        'voorgaande herhalen
        DoCmd.Close acReport, "verzendRapport", acSaveNo
        .MoveNext
    'herhalen tot einde van de recordset
    Loop
End With

End Sub

iemand een idee?
 
Laatst bewerkt:
Zou je eens kunnen beginnen met de code op te maken maken met de CODE knop, dan wordt die een stuk leesbaarder.
 
Pak een kleinere pet ;) Als je code plakt in een berichtje, kun je dat opmaken als CODE. Die knop vind je als je de geavanceerde modus gebruikt. Zelf vind ik het sneller om [ CODE ] en [ /CODE ] (maar dan zonder de spaties) om de code heen te typen.
 
Zodra je massamails verstuurt, springt de 'bewaker' van Microsoft uit het gelid, en vraagt om een bevestiging. Dit om mail bommen te voorkomen. Dat kun je met CLickYes ondervangen, dus dat zou ik zeker gebruiken. Verder wil je (neem ik aan) een gepersonificeerd rapport versturen, dus dan ontkom je eigenlijk ook niet aan dit principe. Al zou de Preview niet nodig zijn als je een rapport aan een vaste bron (query) koppelt waarvan je eerst in je procedure de SQL aanpast met het QueryDefs object. Dan zit er altijd één bedrijf in het rapport.
Een Outlook sjabloon aan een email hangen? Dat is vanuit Outlook al behoorlijk lastig te doen, laat staan vanuit Access. Wèl kun je (mits je dus Outlook gebruikt) SendObject vervangen door het openen van een Outlook sessie, en vanuit Access een mail genereren. Daarbij moet je de hele mail opbouwen in Access, en omdat je blijkbaar fancy opmaak wilt gebruiken, zul je die opmaak in HTML tags mee moeten geven bij het opbouwen van de HTMLBodytext eigenschap van je mail. Maar op die manier kun je dus wel fraaiere, en persoonlijke mails versturen.
 
Ok, het gaat echt m'n pet te boven. Jammer. Ik dacht dat er wel een code zou zijn, want als je het via een macro doet, kan je wel een sjabloon opgeven.
 
Laatst bewerkt:
Wat versta je precies onder een sjabloon? Nu praat je namelijk boven mijn pet... Overigens zou je code er zo uit moeten komen te zien:
Code:
Private Sub Knop0_Click()
With CurrentDb.OpenRecordset("Incasso info")
    .MoveFirst
    Do While Not .EOF
        Ontvanger = !Email
        Rekhouder1 = !Rekhouder1
        DoCmd.OpenReport "verzendRapport", acViewPreview, , "Rekhouder1 = '" & Rekhouder1 & "'"
        DoCmd.SendObject acSendReport, , acFormatPDF, Ontvanger, , , "Informatie aan de leden" _
            & " voor " & !Rekhouder1, "Mijnheer, mevrouw, hierbij...etc.", True
        DoCmd.Close acReport, "verzendRapport", acSaveNo
        .MoveNext
    Loop
End With
End Sub
En zeg nu zelf: een stuk fraaier :)
 
Ja, je hebt gelijk - begrijp eigenlijk nog niet hoe je dat moet doen, maar goed..
Ik bedoel dat je dus een stuk voorbeeld tekst al in je mail hebt staan, samen met een adres en zo.
Outlook noemt dat een ***.oft bestand.

Ik had geprobeerd om een stuk tekst in een memoveld te zetten en daarnaar te verwijzen, maar dat lukt mij niet.
Dan zou het ook opgelost zijn.
Dus daar waar je ziet staan: Mijnheer, mevrouw, hierbij...etc zou ik eigenlijk een verwijzing willen hebben naar een tekstveld vanuit een formulier.
Kan dat, of is dat te moeilijk en/of onuitvoerbaar ?

Je ziet het, ik ben een huis tuin en keuken ploetelaar.
 
Outlook sjablonen gebruiken in een SendObject is sowieso onmogelijk, dat kan alleen op de manier zoals ik net heb beschreven, dus vanuit het openen van een Outlook sessie. Dat kan dan met Late Binding of Early Binding, wat voor jou het handigst is. De sjabloon optie waar je het over had heb ik inmiddels ook gevonden: dat is een HTML bestand met alle onderliggende code. UIt de Help:
Een tekenreeksexpressie die de volledige naam aangeeft, inclusief het pad, van het bestand dat u wilt gebruiken als sjabloon voor een HTML (HTML: de standaardcoderingstaal die wordt gebruikt voor documenten op het World Wide Web. HTML bestaat uit codes die aangeven hoe pagina-elementen zoals tekst en afbeeldingen in browsers moeten worden weergegeven en hoe gebruikersacties moeten worden verwerkt.)-bestand.
Maar of je daarin ook velden kunt gebruiken, vraag ik mij af.
Ik snap je probleem eigenlijk niet met de tekst; die is toch heel simpel op te lossen?
Code:
    DoCmd.SendObject acSendReport, , acFormatPDF, Ontvanger, , , "Informatie aan de leden voor " & !Rekhouder1, Me.TekstVeld, False
 
Ok, ik heb het anders opgelost. Ik werk nu met een macro, die de mail verstuurd.
Dan kan je meerdere mails tegelijk wegsturen en ook een stuk tekst opmaken en daarna in de mail laten plaatsen.
In het formulier maak ik teksten aan in het veld Tekst2; in de macro vul ik in bij Bericht: =[Tekst2].

En zo kan je ook andere velden laten verwijzen naar/in de macro.
Dat is precies wat ik voor ogen had.
 
Oftwel: precies de constructie die ik in post #8 heb uitgelegd :)
Als ik jou was zou ik het werken met macro's zo snel mogelijk links laten liggen en mij concentreren op het eigen maken van VBA, want vroeg of laat kom je daar toch op uit. En dan kun je de (in mijn ogen nodeloze) stap van het leren van de macro taal maar beter overslaan.
Maar aangezien je probleem voorlopig is verholpen, mag de vraag natuurlijk wel op <Opgelost> ;)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan