Hur skickar jag ett e-postmeddelande i Outlook med VBA?

Uppdaterad: augusti 2021; Gäller Microsoft Outlook 365/2019/2016

Här är en anteckning vi fick från en läsare.

Tack för din mycket användbara Outlook-kodningshjälp. Jag undrar om du kan dela med dig av någon kod för att hjälpa till att automatisera att skicka ett e-postmeddelande i Outlook? Jag vet att det finns flera sätt att skicka återkommande meddelanden men jag är speciellt intresserad av att använda VBA för min denna uppgift.

Tack för frågan. Att automatiskt skicka e-postmeddelanden verkar vara bland de mest användbara och populära uppgifterna du kan automatisera med VBA. Läs vidare för mer information och ett enkelt manus för att komma igång här.

Skriver VBA för att skicka Outlook-e-post

I det ganska enkla exemplet nedan kommer vi att täcka följande steg:

  1. Först och främst använder vi VBA Outlook-objektmodellen för att skapa ett nytt e-postobjekt.
  2. Sedan går vi vidare och ställer in meddelandets betydelse, mottagare (separerade med semikolon) och brödtextstil och innehåll.
  3. Sedan visar vi meddelandet i ditt Microsoft Outlook-program.
  4. Sist går vi vidare och skickar det till mottagarna.

Här är den enkla VBA-koden för att automatiskt skapa och skicka enkla e-postmeddelanden. Observera att du enkelt ska förbättra det här skriptet till att inkludera filbilagor, uppgifter etc', men låt oss börja med ett mycket grundläggande skript.

Sub SendMail()
Dim MyEmail As MailItem
Set MyEmail = Application.CreateItem(olMailItem)

With MyEmail
.To = ""
.Importance = olImportanceHigh
.Subject = ""
.Body = ""
.BodyFormat = olFormatHTML
.Display
End With

'I purposely commented the next line, uncomment it by removing the "'" sign to send your email.
' MyEmail.Send
End Sub

Outlook VBA makro genväg

Du kanske vill undersöka att associera VBA-koden du just skrev med en kommandoknapp i Outlook. Detta gör att du enkelt kan starta den från en genväg placerad i Outlook-bandet.

Så här gör du det:

  1. Gå först vidare och öppna Microsoft Outlook.
  2. Tryck på Arkiv och välj sedan Alternativ
  3. Gå nu vidare och välj Anpassa menyfliksområdet.
  4. I avsnittet Anpassa menyfliksområdet ser du listrutan Välj kommandon från.
  5. Välj makron
  6. Välj sedan din nyskapade VBA-kod, i vårt fall ska namnet vara SendMail.
  7. Tryck sedan på Lägg till och sedan på OK. Alternativt kanske du vill tilldela en ikon till ditt makro.
  8. Ditt makro kommer att vara tillgängligt i verktygsfältet Snabbåtkomst i den övre vänstra sidan av ditt Outlook-program.

Möjliga problem med VBA-makroinställningar

Dina makroinställningar i Outlook kan behöva justeras för att kunna köra makron. Om så är fallet, så här gör du det.

Bonus: Skicka ett e-postmeddelande från Outlook med PowerShell

I PowerShell kan du använda Send-MailMessage cmdlet för att skicka e-post. Det kräver dock att du autentiserar till e-postservern, och det stöder inte moderna autentiseringsmetoder, som OAuth och Microsoft Modern Authentication. Så det är mycket enklare att skicka ett e-postmeddelande om du har en Outlook-profil konfigurerad på din dator.

Här är ett exempel på ett PowerShell-skript som läser data från en Excel fil och använder en Outlook-profil för att skicka ett e-postmeddelande till varje användare:

# öppna Excel-filen
$ExcelObj = New-Object -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Sheet1")
# Hämta antalet ifyllda rader i en xlsx-fil
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Gå igenom alla rader i kolumn 1, med början från den andra raden (dessa celler innehåller användarnamn och e-post).
for($i=2;$i -le $rowcount;$i++){
$useremail = $ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
$FullUsername =  $ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Text
$Status =  $ExcelWorkSheet.Columns.Item(4).Rows.Item($i).Text
$pwdchange = $ExcelWorkSheet.Columns.Item(3).Rows.Item($i).Text
# Generera meddelandetext
$strSubj = " Din kontostatus på woshub.com-domänen "
$strBody = "Kära " + $FullUsername
$strBody = $strBody + " `r`n Ditt konto i woshub.com-domänen är i " + $Status
$strBody = $strBody + "`r`n Datum och tid för den senaste lösenordsändringen är: " +  $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Vi antar att Outlook körs, om det inte är det måste du starta det med kommandot $outlook = new-object -comobject outlook.application
$outlook = [Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
$email = $outlook.CreateItem(0)
$email.To = $useremail
$email.Subject = $strSubj
$email.Body =  $strBody
# Bifoga en fil (om nödvändigt)
$email.Attachments.add($strfile)
#skicka e-postmeddelandet
$email.Send()
}
$ExcelWorkBook.close($true)

powershell-skript för att skicka e-post från outlook-konfigurerad profil

Detta PowerShell-skript förutsätter att Outlook körs på din dator. Skriptet genererar ämnet och brödtexten för e-postmeddelandet för varje mottagares SMTP-adress i XLSX-filen och bifogar filen. Skickar sedan e-postmeddelandet.


Hur skriver man användbara makron i Outlook 2016 och 2019-meddelanden?

Hur skriver man användbara makron i Outlook 2016 och 2019-meddelanden?

Ny på VBA-makron för Outlook-automatisering? Lär dig hur du infogar VBA-kod i Outlook 365 / 2016 / 2019.

Hur duplicerar du möten och händelser i din Outlook 2019/365/2016-kalender?

Hur duplicerar du möten och händelser i din Outlook 2019/365/2016-kalender?

Lär dig hur du enkelt duplicerar Outlook-kalenderhändelser, möten och möten i Office 365, 2016 och 2019.

Outlook-formulär: Hur skapar man ifyllbara formulär i Microsoft Office 2016 / 2019?

Outlook-formulär: Hur skapar man ifyllbara formulär i Microsoft Office 2016 / 2019?

Lär dig hur du kan designa och skapa anpassade användarformulär för Outlook.

Hur uppdaterar jag min e-post i Outlook-inkorgen när den inte uppdateras automatiskt?

Hur uppdaterar jag min e-post i Outlook-inkorgen när den inte uppdateras automatiskt?

Outlook-inkorgen uppdateras inte automatiskt? Lär dig hur du automatiskt kan uppdatera din Outlook 365/2019/2016/2013 inkorg automatiskt.

Hur lägger man till gif-bilder i Outlook 2016 / 2019 e-posttext eller signatur?

Hur lägger man till gif-bilder i Outlook 2016 / 2019 e-posttext eller signatur?

Lär dig hur du lägger till/bäddar in och skickar en gif-bild till din Outlook 2016 och 2019 utgående e-post.

Varför Outlook är offline eller frånkopplat och hur återansluter jag?

Varför Outlook är offline eller frånkopplat och hur återansluter jag?

Lär dig hur du diagnostiserar och felsöker olika problem med frånkoppling av Microsoft Outlook-klient i Windows 10.

Hur skickar jag ett e-postmeddelande i Outlook med VBA?

Hur skickar jag ett e-postmeddelande i Outlook med VBA?

Lär dig att skriva Outlook-makron för att automatisera e-postsändning.

Stoppa Outlook 365 / 2019 / 2016 kalenderaviseringar för möten och möten från att dyka upp

Stoppa Outlook 365 / 2019 / 2016 kalenderaviseringar för möten och möten från att dyka upp

Lär dig hur du inaktiverar påminnelser och meddelanden från Outlook 2016/2019-kalendrar, både på Windows och MAC.

Hur får man Microsoft Outlook att köras snabbare (versionerna 2019/365/2016)?

Hur får man Microsoft Outlook att köras snabbare (versionerna 2019/365/2016)?

Lär dig hur du förbättrar din Outlook-prestanda.

Hur ändrar jag ditt Hotmail-lösenord i Windows, Android-telefon, iPhone eller iPad?

Hur ändrar jag ditt Hotmail-lösenord i Windows, Android-telefon, iPhone eller iPad?

I det här inlägget hjälper du dig att ändra lösenordet för ditt Outlook.com-konto och hålla synkroniseringen av Windows på alla dina enheter.