PDF Bijlage meesturen met verzendlijsten Word/Outlook

Angela69

Gebruiker
Lid geworden
9 mrt 2017
Berichten
394
Besturingssysteem
Windows
Office versie
365
Hallo, ik ga het nog eens proberen, ik zal wel niet duidelijk genoeg zijn geweest.

Al jaren verzend ik mail naar verenigingsleden. Dat doe ik als volgt:

Ik maak een Word een document en via verzendlijsten refereer ik aan een in Excel gemaakte leden bestand. Na verdere instellingen gedaan te hebben, druk ik op de knop voltooien en samenvoegen en voilà 150 documenten worden gegenereerd en in Outlook gezet, waarna ik in Outlook 'Verzenden' indruk en daar gaan ze alle 150.

Nu doet de situatie voor dat er een PDF bestand (voor alle 150 hetzelfde) meegezonden moet worden.

Ik vind geen oplossing in Word en/of Outlook (classic)

Wie o wie heeft de oplossing!
 
Die is er natuurlijk wel, en vermoedelijk ook al wel ongeveer gegeven. Maar ik heb een voorbeeldje gevonden dat je wellicht kunt gebruiken. Het is nogal een lap code, dus ik heb daar een aparte module van gemaakt die je in Word moet inlezen. Zet in ieder geval de Outlook bibliotheek aan, zodat je met Early Binding kan werken, anders moet je de Late Binding variant gebruiken.

Kleine aanpassing: in de code wordt gebruik gemaakt van een Excel veld voor de bijlage. Dat hoeft bij jou niet dus je kunt deze code
Code:
    Case "attachment", "attachments"
        ' create a file system object To check the file
        ' if the file does not exist, then the attachment is not added and the error string is updated
        If fso Is Nothing Then Set fso = CreateObject("Scripting.FileSystemObject")
        If fso.FileExists(df.Value) Then
            ' add the attachment
            outlookMail.Attachments.Add df.Value
        Else
            errorString = errorString & vbCrLf & "Attachment: " & df.Value & " could not be found"
        End If
verwijderen en vervangen door deze:

Code:
        Next df     ' move on To the next record
        ' add the attachment
        outlookMail.Attachments.Add "D"\JouwPad\Bijlage\Bestandsnaam.pdf"

De code verzend elk record apart, dus dat zou goed moeten kunnen gaan!
 

Bijlagen

Ben onder de indruk van alle moeite die je voor mij doet, ik ben zelf niet op de hoogte van scripts, modules en alle andere niet Excel items, dus ik begrijp echt niet wat er bedoelt wordt met 'Early Binding kan werken, anders moet je de Late Binding variant gebruiken.' En outlook bibliotheek, nooit van gehoord!
Ook begrijp ik niet wat ik met je bijlage moet aanvangen. Begrijpt jouw script hoe mijn Excelbestand heet waar de mailadressen instaan?
AL met al gaat mij dit nooit lukken, is het mogelijk dat je een Word document maakt waarin je de module(s) plaatst? En wil je me uitleggen hoe ik een Outlook Bibliotheek open?
Alvast ontzettend bedankt!
 
Programmeren is inderdaad lastig, als je niet gewend bent met macro's :). Ik heb een aangepaste variant meegestuurd nu, waar je verder niks hoeft te klooien aan de bibliotheken. Deze zou dus 'uit de doos' moeten werken.
Stap 1: pak het bestand modMailMergeToEmail_LB.zip uit in een terug te vinden map.
2: start Word, als je dat nog niet gedaan hebt.
3. Klik op <Alt>+<F11> om in de VBA editor te komen. Hier staan je macro's, als je die al hebt gemaakt.
4. Selecteer in het linker venster de groep Normal (niet Project (Document1)).
4. Klik nu op het menu <Bestand>, <Importeren> (of <Ctrl>+<m>).
5. Blader naar de map waar je de code hebt uitgepakt (modMailMergeToEmail.bas) en klik op <Openen>

De code staat nu als het goed is in de Normal.dot, Onder het kopje <Modules>) zodat je de macro overal kan gebruiken. De module heet modMailMergeToEmail. Als je dubbelklikt op de module, zie je de macro.

De macro kun je handmatig starten door de cursor in de macro Sub EnhancedMailMergeToEmail() te zetten, en op <F5> te drukken. Er zitten wat checks in om te controleren of je wel in een samenvoegdocument zit.

Wat ik zelf altijd eerst doe met een onbekende macro: Niet <F5> maar <F8>. Dan loopt de macro apart door elke regel code, en elke keer als je op <F8> drukt gaat hij naar de volgende. Dan duurt de uitvoer uiteraard best lang, maar je kunt dan wel zien wat er gebeurt. En als je een paar mailtjes zo hebt gemaakt, kun je alsnog op F8> drukken om de rest in één keer af te spelen.
 

Bijlagen

Begrijpt jouw script hoe mijn Excelbestand heet waar de mailadressen instaan?
Programma's als Word, Excel en PowerPoint zijn prima applicaties waar je een hoop mee kan doen. Maar soms heb je wensen die niet met de standaard functionaliteiten kunnen worden uitgevoerd, en dan ben je vaak al genoodzaakt om ofwel programma's van derden te kopen/gebruiken, ofwel zelf te gaan programmeren. Zonder die twee kun je hooguit wat aan de zijlijn gaan stampvoeten dat 'het programma niet doet wat jij wil', maar dat gaat natuurlijk niet helpen. Je zult jezelf op zijn minst moeten verdiepen in programmeren, als je meer wilt :).

In het script zit géén code die van jouw bestand een samenvoeg document maakt. Wél een check die controleert óf het actieve document goed is ingesteld. En de code controleert vervolgens of de veldnamen wel de juiste gegevens bevatten. Je moet er dus eerst voor zorgen dat je samenvoegdocument op de juiste manier aan het juiste document is gekoppeld.

Verder kijkt de procedure of in het Excel bestand een veld "To" zit, een veld "CC", een veld "Subject" etc. staan, en gebruikt die dan om de juiste gegevens in het document in te vullen. In de macro zie je ergens halverwege de regel "Select Case StripToLcaseLetters(df.Name)" staan, gevolgd door een aantal regels "Case "to"", "Case "subject"" etc. Op die plekken wordt dan wat gedaan.
Uitendelijk zie je dan onderin een blokje met de regels outlookMail.To = toString, outlookMail.Subject = SubjectString etc. die wordt afgesloten met outlookMail.Display. Waarna je de mail dus op het scherm ziet. Een paar regels later wordt de mail verzonden, en gaat de procedure verder met de volgende mail.

Nogmaals: het is prima om wensen te hebben die niet via de standaard functionaliteit kunnen worden opgelost, maar dan moet je wél bereid zijn om je te verdiepen in de (VBA)materie, of iemand in de buurt hebben die het voor je kan implementeren. Ik kan ook niet naar Robin van Persie gaan en vragen of ik in de spits van Feijenoord mag spelen. Ja, ik mag het vragen, maar geheid dat hij vraagt of ik een beetje kan ballen? En als ik dan zeg dat ik dat eigenlijk niet kan, dan gaat het feest denk ik tóch niet door. Eerst oefenen dus!
 
Terug
Bovenaan Onderaan