Nivå: Avancerad
Ibland vill kan det vara användbart att kunna göra ett ett massutskick till sina kunder, klienter osv. från Excel. I denna bloogpost visar jag principen för hur man skapar ett massutskick från Excel, med hjälp av Outlook som e-postklient.
Förutsättningar
Detta exempel kräver Outlook och Excel på datorn. Jag har testat nedanstående kod i miljöerna Windows 7 och Windows XP, med Outlook-versionerna Outlook 2013 och Outlook 2003 och koden fungerar för båda plattformarna. I den mån du fortfarande använder Windows XP måste du också har servicepack 3(SP3) installerat, gäller även för Outlook 2003, där du måste ha SP3. Notera att nedanstående kodexempel endast fungerar för Outlook.
Exempel
Anta att vi har en Excel-arbetsbok och ett ark med e-postadresser. Vill kunna skicka ett massutskick till dessa e-postadresser direkt från Excel.
Starta Excel
- Det första vi gör är att ge kolumnerna namn. Första kolumnen kallas E-mail(Kolumn A), First Name(Kolumn B), Last Name(Kolumn C). Vi skapar en kolumn för rubriken, Mejlrubrik, för våra mejl, (Kolumn H) och slutligen kolumnen Meddelandet som skickas (Kolumn J). Här kommer själva texten att läggas in.
Kommentar: Detta upplägg ger en ganska fast struktur, och vi behöver endast ändra i mejlrubriken och meddelandetexten i Excel-arket. Vi kan också fylla på med e-postadresser, var efter listan växer. Det som återstår är att skriva kod så vi kan skicka iväg vår e-post.
Koden
- Gå in i Visual Basic Editor (Alt+F11).
- Det första som måste göras är att sätta referenserna. Detta är mycket viktigt. Använder du t.ex Excel 2013, sätter du referenserna till Microsoft Outlook 15.0 Object Library. Använder du t.ex Outlook 2003, sätter du referenserna till Microsoft Outlook 11.0 Object Library.
Skriv sedan in följande kod i editorn (se bilden nedan)
Kommentar till koden: Vi använder oss av Outlook-objektet MailItem. Det är den som gör så att vi kan göra följande i detta fall:
- skicka iväg mejlet till en mottagare,
- ange en mejlrubrik,
- och en meddelandetext.
I detta fall har vi gjort så att användaren som tar emot mejlet kommer att se att det har angetts med Hög Prioritet (se raden olMail.Importance = olImportanceHigh). Det är inte nödvändigt att använda nämnda egenskap. Om man inte använder den sätts prioriteten till Normal.
Det översta kodstycket är en funktion som vi kommer att anropa varje gång vi skall skicka ut mejl.
Det nedre kodstycket är den kod vi skriver, för det specifika fallet. I detta fall, vill vi mejla ut information från Excel-arket som vi skapade först. Först anges (ROW_NUMBER = 1) att vi skall börja leta på raden efter den första e-postadressen. Sedan skall vi leta igenom, via en Do-loop, fyra rader med e-postadresser som skall skickas ut. På raden som börjar med Call SendEmail, anropar vi funktionen ovan. Det är den raden med kod som gör det möjligt att skicka iväg mejlen. Vi ser att det står ”A”, vilket anger att vi ska börja leta i kolumn A på Excelarket, där e-postadresserna finns, därefter kolumn H, på rad 2, dvs H2, där mejlrubriken står. Slutligen skall mejlet ha ett meddelande som vi skriver in och det står i kolumn J, rad 2.
Begränsningar i denna kod är att vi måste ändra i Loopen varje gång vi lägger till nya e-postadresser, eftersom loopen är statisk. Den förutsätter att vi talar om hur många e-postadresser som finns i kolumn A. Vi måste också ändra ROW_NUMBER beroende på hur många mer e-postadresser som läggs till. För att få det mer funktionell, skulle man behöva skriva en kod som letar upp första tomma raden och sedan arbetar sig uppåt. Man kan också tänka sig att man lägger in olika kontroller i koden, så att man kontrollerar att det verkligen är giltiga e-postadresser som finns registrerade. Skälet till att det inte är med är att öka förståelsen och läsbarheten i exemplet.
Relevanta referenser till exemplet:
http://www.rondebruin.nl/win/s1/outlook/tips.htm