E-mail is een ideaal middel om facturen te verzenden. Het verzenden van een digitale factuur (als beveiligd PDF-bestand) werkt snel, en is ook nog eens financieel aantrekkelijk gezien de besparingen op papier, enveloppen, afdrukkosten, portokosten en de wandeling naar de brievenbus. Een PDF-bestand kan worden gelezen en geprint met de gratis Adobe Acrobat Reader (download: https://get.adobe.com/nl/reader/).
Een beveiligd PDF-bestand is gemakkelijk zelf te maken met gratis programma's zoals PDFCreator (download: www.pdfforge.org/pdfcreator). Zorg er wel voor dat de factuur niet zomaar aan te passen is door het bestand te beveiligen met een wachtwoord. Beveilig hiervoor het PDF-bestand met een geheime sleutel en beperk de mogelijkheden tot het afdrukken van het bestand. Het maken van zo'n factuur in PDF-formaat is net zo makkelijk als het printen van een pagina: selecteer bij de afdrukopties van het programma waarin de factuur wordt gemaakt (bijvoorbeeld Word) de PDF-printer in plaats van de standaard printer. Geef vervolgens aan waar en onder welke naam het PDF-bestand opgeslagen moet worden. Nadat zo'n factuur in PDF-formaat is gemaakt, kan deze als bijlage worden toegevoegd aan een e-mail.
Het versturen van e-mail kan met de programmeertaal VBA (Visual Basic for Applications onder Excel) worden geautomatiseerd. Met deze taal kunnen macro’s worden opgenomen en uitgevoerd binnen de verschillende Office-pakketten van Microsoft. Deze functie wordt vanuit Excel geopend via Extra, Macro, Visual Basic Editor.
Voor VBA-gebruikers nog een tip voor het geautomatiseerd verzenden van e-mail door middel van een VBA-macro: met onderstaande basiscode is het mogelijk vanuit Excel e-mailberichten automatisch te versturen (enige ervaring met de programmeertaal VBA is wel vereist).
Met behulp van de in VOORBEELD 1 beschreven VBA-code kan een macro worden uitgevoerd voor het versturen van een simpele e-mail. De regels voor de CC- en BCC-velden kunnen eventueel worden weglaten. Zoals gebruikelijk in een programmeertaal kan voor het invullen van de verschillende velden ook gebruik worden gemaakt van zelf gedefinieerde variabelen.
De code uit het voorbeeld is gemakkelijk naar de VBA-editor te kopiëren. Om gebruik te kunnen maken van de aansturing van Outlook binnen Excel is het wel noodzakelijk dat binnen de VBA-editor de Outlook-verwijzingen worden geactiveerd (Extra, Verwijzingen, activeer de optie Microsoft Office Outlook-weergavebesturing). Zonder de activering toont VBA bij de uitvoering van de macro's een foutmelding!
VOORBEELD 1:
Sub VerstuurEmail() Dim objOl As Outlook.Application Dim objMail As Object Set objOl = Outlook.Application 'Start Outlook Set objMail = objOl.CreateItem(olMailItem) 'Maakt e-mailbericht aan. olMailItem kan ook worden 'vervangen door 0 (code voor e-mailitem) '//////////////////////////////////////////////////// 'Dit stukje is voor Outlook 2007 voor het vastleggen 'van de afzender van een e-mailbericht. Hiervoor moet 'in VBA wel worden verwezen (Extra, Verwijzingen) naar 'minimaal Microsoft Outlook 12 Object Library. Dim objAccount As Outlook.Account For Each objAccount In objOl.Session.Accounts If objAccount.DisplayName = "Naam Outlook-account" Then Set objMail.SendUsingAccount = objAccount End If Next Set objAccount = Nothing '//////////////////////////////////////////////////// 'Gebruik eventueel deze optie in oudere versies van Outlook 'waarbij een e-mail wordt verzonden namens een ander e-mailadres. objMail.SentOnBehalfOfName = "Naam verzender <verzender@emailadres.nl>" '//////////////////////////////////////////////////// With objMail .To = "to@emailadres.nl" 'Deze moet worden aangepast .CC = "cc@emailadres.nl" 'Deze moet worden aangepast of weggelaten .BCC = "bcc@emailadres.nl" 'Moet ook worden aangepast of weggelaten 'Het is helaas niet mogelijk het FROM-veld aan te passen 'Zie bovenstaande oplossing voor Outlook 2007. .Subject = "Onderwerp e-mail" .Body = "Hier plaatst u de inhoud van het bericht" '.HTMLBody = "<HTML><P>TEST</P></HTML>" .NoAging = True .Attachments.Add "C:\WINDOWS\WIN.INI" 'De locatie van de bijlage '.Display 'Laat e-mail zien voordat hij wordt verzonden '.Save 'Voorkomt de vraag om op te slaan, slaat op in Postvak In .Send 'Verzenden van e-mailbericht End With Set objMail = Nothing objOl.Quit Set objOl = Nothing End Sub |
Het e-mailadres van de afzender kan niet zomaar worden ingesteld, daarom wordt elk bericht verzonden met de standaard in Outlook ingestelde e-mailaccount. Vanaf Outlook 2007 kan een e-mailbericht worden gekoppeld aan een van de in Outlook ingestelde e-mailaccounts. Dit kan plaats vinden bij de creatie van een e-mailbericht met de VBA-code in Excel zoals in bovenstaand voorbeeld is weergegeven (SendUsingAccount, hiervoor is minimaal Microsoft Outlook 12 Object Library benodigd, in te stellen in VBA via Extra, Verwijzingen). Het aanpassen van de te gebruiken e-mailaccount is ook mogelijk met de VBA-code in Outlook voor het versturen van de in concept geplaatste e-mailberichten zoals in VOORBEELD 3 is weergegeven.
TIP: In oudere versies van Outlook kan eventueel de variabele SentOnBehalfOfName worden ingesteld (er kan ook volstaan worden met alleen het e-mailadres). Deze methode heeft echter als nadeel dat de e-mail nog steeds wordt verzonden met de in Outlook als standaard ingestelde e-mailaccount.
Er kan gekozen worden tussen Send (direct verzenden), Display (eerst weergeven) en Save (opslaan). In VOORBEELD 1 werkt het opslaan (Save) niet correct, de e-mail wordt namelijk opgeslagen in Postvak In in plaats van in Postvak Uit of in Concepten. In VOORBEELD 2 is dit probleem opgelost.
Keuze uit platte tekst (Body) en opgemaakte tekst (HTMLBody).
Zoals in VOORBEELD 1 weergegeven, is het toevoegen van een bijlage aan een e-mailbericht vrij simpel. Wordt er geen gebruik gemaakt van een attachment dan kan die regel worden weggelaten.
Bij het verzenden vraagt Outlook om een bevestiging waarbij het programma 5 seconden stil staat en om een bevestiging vraagt. Het is niet eenvoudig hieraan te ontkomen (er zijn overigens wel oplossingen voor). De e-mail kan wel zonder problemen in de map Concepten worden geplaatst om deze later met een aparte macro binnen Outlook te verzenden. Zie daarvoor de code uit VOORBEELD 2.
De code uit VOORBEELD 1 vraagt bij elk e-mailbericht om een bevestiging. Moeten er meerdere e-mailberichten worden verstuurd, dan werkt dat niet handig. Het is echter wel mogelijk e-mail klaar te zetten in de map Concepten zonder dat er om een bevestiging wordt gevraagd. Deze code is iets ingewikkelder, zie hiervoor VOORBEELD 2.
VOORBEELD 2:
Sub
BewaarEmailInConcepten() Dim objOl As Outlook.Application Dim objNamespace As Outlook.Namespace Dim objMAPIFolder As Outlook.MAPIFolder Dim objMail As Object Set objOl = Outlook.Application 'Start Outlook On Error Resume Next Set objNamespace = objOl.GetNamespace(Type:="MAPI") If Err <> 0 Then Set objOl = New Outlook.Application 'Zo nee: start Outlook Set objNamespace = objOl.GetNamespace(Type:="MAPI") End If Set objMAPIFolder = objNamespace.GetDefaultFolder(16) 'Folder voor Concepten wordt geselecteerd Set objMail = objOl.CreateItem(olMailItem) 'Maakt e-mailbericht 'olMailItem kunt u ook vervangen door 0 (de code voor een e-mailbericht) '//////////////////////////////////////////////////// 'Dit stukje is voor Outlook 2007 voor het vastleggen 'van de afzender van een e-mailbericht. Hiervoor moet 'in VBA wel worden verwezen (Extra, Verwijzingen) naar 'minimaal Microsoft Outlook 12 Object Library. Dim objAccount As Outlook.Account For Each objAccount In objOl.Session.Accounts If objAccount.DisplayName = "Naam Outlook-account" Then Set objMail.SendUsingAccount = objAccount End If Next Set objAccount = Nothing '//////////////////////////////////////////////////// 'Gebruik eventueel deze optie in oudere versies van Outlook 'waarbij een e-mail wordt verzonden namens een ander e-mailadres. objMail.SentOnBehalfOfName = "Naam verzender <verzender@emailadres.nl>" '//////////////////////////////////////////////////// With objMail .To = "to@emailadres.nl" 'Deze moet worden aangepast .CC = "cc@emailadres.nl" 'Deze moet worden aangepast of weglaten .BCC = "bcc@emailadres.nl" 'Deze moet worden aangepast of weglaten 'Het is helaas niet mogelijk het FROM-veld aan te passen 'Zie bovenstaande oplossing voor Outlook 2007. .Subject = "Onderwerp e-mail" '.Body = "Hier plaatst u de inhoud van het bericht" .HTMLBody = "<HTML><P>TEST</P></HTML>" .NoAging = True .Attachments.Add "C:\WINDOWS\WIN.INI" 'De locatie van de bijlage '.Display 'Laat e-mail zien voordat hij verzonden wordt .Save 'Voorkomt de vraag om op te slaan, slaat nu op in Concepten '.Send 'Verzenden van e-mailbericht End With Set objMail = Nothing objOl.Quit Set objMAPIFolder = Nothing Set objNamespace = Nothing Set objOl = Nothing End Sub |
De code in VOORBEELD 3 kan worden gebruikt voor het automatisch versturen van alle e-mail uit de map Concepten. Deze macro moet binnen Outlook worden uitgevoerd. De macro kan aan een knop in de menubalk worden toegewezen zodat deze altijd binnen handbereik is!
VOORBEELD 3:
Sub
AlleEmailVerzenden() With Outlook.Application.GetNamespace("Mapi").GetDefaultFolder(16) Do While .Items.Count > 0 .Items(1).Send Loop End With End Sub |
Ook het aanmaken van een factuur in PDF-formaat en deze met behulp van de Attachments.Add-functie toevoegen aan een in VBA aangemaakt e-mailbericht, kan worden geautomatiseerd. De daarvoor benodigde code is afhankelijk van de gebruikte PDF-printer (zoals de gratis PDFCreator (download: www.pdfforge.org/pdfcreator)). Begin met het in VBA-code opnemen van een printopdracht van de factuur om een PDF-bestand aan te maken. Vervolgens kan de code in de editor worden bewerkt zodat de printopdracht met behulp van een VBA-macro met automatisch verstuurde voorgeprogrammeerde keyboard-aanslagen kan worden afgerond. Het toevoegen van het aangemaakte PDF-bestand aan het e-mailbericht is vervolgens met de Attachments.Add-functie niet moeilijk meer.
Het afdrukken kan met de VBA-opdrachten SendKeys en Application.Wait worden gerealiseerd. Gebruik de help-functie om meer te weten te komen over deze opdrachten. Stel de PDF-printer zo in dat er zo weinig mogelijk toetsaanslagen noodzakelijk zijn. Het is ook mogelijk een door Excel random gegenereerde beveiligingscode voor het PDF-bestand in te voeren en deze met de SendKeys-opdracht in te voeren. Nogmaals, hiervoor is enige VBA-ervaring nodig, maar met een beetje knutselen moet het lukken. Veel succes...!
Deze pagina is het vervolg op de pagina over het versturen van e-mail en het voorkomen van spam.
© 2001-2024 - Menno Schoone - SchoonePC - Rotterdam - Privacyverklaring