Send mail fra Excel via Outlook

I artiklen Send Aktivt Ark har jeg vist, hvordan man sender det aktive ark til en række modtagere, der var foruddefinerede. Modtagerne defineres enten direkte i koden, eller hentes fra arket. Samme mail sendes til alle. Funktionen bruger det aktive mailprogram til forsendelsen.

Af og til har man brug for mere funktionalitet, og så er man nødt til fx at bruge automation - i dette tilfælde af Outlook. Nedenstående funktion sender en mail via Outlook til hver af 10 modtagere, der findes i et regneark. Informationen er delvis forskellig til den forskellige modtagere.  Den "variable" information findes også i regnearket.

Først viser jeg koden, dernæst gennemgår jeg de væsentligste elementer:

Sub SendViaOutlook()
    On Error Resume Next
    Dim olApp As New Outlook.Application
    Dim olNewMail As Object
    Dim Recep As String
    Dim MsgTxt As String
    Dim Varnavn As String
    Dim varantal As Long

    Set olApp = GetObject("Outlook.Application")

    For i = 1 To 10
        Recep = Range("A" & i).Value
        Varenavn = Range("B" & i).Value
        Vareantal = Range("C" & i).Value
        MsgTxt = "Deres bestilte " & Vareantal & " stk. " & Varenavn _
            & " er hjemkommet, og kan afhentes."

        Set olNewMail = CreateItem(olMailItem)

        With olNewMail
            .Recipients.Add Recep
            .Body = MsgTxt
            .Subject = Varenavn
            .ReadReceiptRequested = False
            .OriginatorDeliveryReportRequested = False
            .Save
            .Send
        End With
    Next i
End Sub

For at koden skal virke, skal man huske - under Tools - References at sætte en reference til MS Outlook.

Forklaring:
Koden forudsætter at e-mail adresser på modtagerne står i A-kolonnen. I B-kolonnen (i det konkrete eksempel) er varenavn. I C-kolonnen et bestilt antal. I princippet kunne der selvfølgelig stå hvad som helst, der kan indsættes som variabler i en fast tekst.

I koden erklæres først en række variable. Først to variable til henholdsvis Outlo9okapplikationen og de enkelte mails. Dernæst fire variable til at rumme de informationer, der hentes fra regnearket. Endelig en variabel til teksten i mailen.

Så hentes Outlook (det forventes at programmet allerede er startet, ellers skal koden lige rettes til). Nu genneløbes en løkke så 10 gange. Dette kan selvfølgelig rettes, så det bliver et variabelt antal. For gennemløb hentes information fra en række i regnearket, startende med række 1. Skal man starte i en en anden række, kan For I = 1 To  ændres. For hver række oprettes en ny mail med værdien i kolonne A som modtager, teksten fra kolonne B som emne, og Ordlyden fra variablen MsgTxt som tekst i mailen, i dette tilfælde fx "Deres bestilte 8 kålpølser er hjemkommet, og kan afhentes.".  Mailen gemmes og sendes.

- Til top -
- Tilbage til makroer -
- Tilbage til Excel -