Aktualizováno: říjen 2023; Platí pro Microsoft Outlook 365/2019/2016
Úvod
Automatizace odesílání e-mailů pomocí VBA v aplikaci Outlook může výrazně zjednodušit pracovní procesy. V tomto článku se podíváme na kroky, jak psát makra aplikace Outlook pro automatické odesílání e-mailů.
Obsah
- Psaní VBA pro odesílání e-mailů
- Zkratka makra aplikace Outlook VBA
- Možné problémy s nastavením maker VBA
- Bonus: Odešlete e-mail z aplikace Outlook pomocí PowerShellu
Psaní VBA pro odesílání e-mailů
Při psaní VBA kódu pro odesílání e-mailů v aplikaci Outlook následujeme tyto kroky:
- Vytvoříme novou e-mailovou položku pomocí objektového modelu VBA Outlook.
- Nastavíme důležitost zprávy, příjemce a obsah textu.
- Zprávu zobrazíme v aplikaci Outlook.
- Odešleme ji příjemcům.
Zde je jednoduchý kód VBA pro automatické vytváření a odesílání e-mailů:
Sub SendMail()
Dim MyEmail As MailItem
Set MyEmail = Application.CreateItem(olMailItem)
With MyEmail
.To = "[email protected]"
.Importance = olImportanceHigh
.Subject = "Předmět zprávy"
.Body = "Toto je tělo zprávy."
.BodyFormat = olFormatHTML
.Display ' Zobrazí zprávu (změňte na .Send pro přímo odeslání)
End With
' Odešlete e-mail
' MyEmail.Send ' Odkomentujte, chcete-li odeslat e-mail
End Sub
Zkratka makra aplikace Outlook VBA
Chcete-li rychle spustit makro, můžete jej přiřadit k tlačítku v aplikaci Outlook:
- Otevřete aplikaci Microsoft Outlook.
- Klikněte na Soubor a vyberte Možnosti.
- Vyberte Přizpůsobit pás karet.
- Vyberte Makra v seznamu Vybrat příkazy z.
- Vyberte váš kód VBA a stiskněte Přidat.
- Potvrďte kliknutím na OK.
Možné problémy s nastavením maker VBA
Aby bylo možné spouštět makra, může být potřeba upravit nastavení aplikace Outlook. Zde je návod, jak to udělat.
Bonus: Odešlete e-mail z aplikace Outlook pomocí PowerShellu
V PowerShellu můžete použít cmdlet Send-MailMessage, avšak vyžaduje to ověření na poštovním serveru a nepodporuje moderní metody jako OAuth. Odesílání e-mailů je proto snazší, pokud máte v počítači nakonfigurovánu aplikaci Outlook.
Zde je příklad PowerShell skriptu, který odešle e-mail některým uživatelům z propojeného souboru Excel:
# otevřete soubor Excel
$ExcelObj = New-Object -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Sheet1")
# Získejte počet vyplněných řádků v souboru xlsx
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Projděte všechny řádky ve sloupci 1, začněte od druhého řádku
for($i=2;$i -le $rowcount;$i++){
$useremail = $ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
...
$email.Send()
}
$ExcelWorkBook.close($true)

Tento skript předpokládá, že máte spuštěnou aplikaci Outlook a generuje předmět a tělo e-mailu pro každou e-mailovou adresu příjemce v souboru XLSX.
Petr Šimek -
Super článek! Mám pár dotazů ohledně toho, jak přizpůsobit šablonu e-mailu. Můžu to udělat i v Outlook VBA? Díky za odpověď nebo za další tipy
Kateřina Lišková -
Wow, tohle mi ušetří spoustu času při posílání hromadných e-mailů! Poslal jsem e-mail mým kolegům a vše fungovalo perfektně, díky moc
Hana K. z Brna -
Chci se podělit o svojí zkušenost. Používám VBA pro automatizaci e-mailů již několik měsíců. Nikdy jsem neměla žádné potíže. Jen jsem musela zjistit, jak pracovat s bezpečnostními nastaveními, abych mohla posílat e-maily bez problémů!
Lukáš M. 789 -
Tenhle návod je opravdu užitečný! Mám několik projektů, kde využívám VBA a potřebuji posílat notifikace e-mailem. Budu to určitě vyzkoušet a podělím se o výsledek!
Jitka Kopecká -
Neznal jsem vůbec VBA, ale díky tomuto článku jsem se k tomu dostala. Cítím se jako královná IT! :) Už se těším, až to budu moci aplikovat v práci
Jana Nováková -
Díky za skvělý návod na odesílání e-mailů pomocí VBA v Outlooku! Nikdy jsem nevěděla, že to může být tak jednoduché. Zdá se mi, že teď to zvládnu i já, i když jsem spíš začátečník
Tomáš Hrnčíř -
Skvělé! Mám ale problém s tím, že když použiju VBA, e-maily se občas neodesílají. Mám nějakou chybu ve skriptu, nebo je to nastavením Outlooku? Kdo má stejný problém
Martin B. IT -
Díky za skvělý tip! Zkoušel jsem použít VBA v Outlooku a některé funkce fungují naprosto skvěle. Určitě doporučím tento článek svým kolegům.
Tereza Z. z Prahy -
Ummmm, díky moc! Mám tak ráda, když najdu jednoduché návody. Odesílání e-mailů pomocí VBA mě nikdy nenapadlo, ale teď to chci vyzkoušet. Snad to dostanu do rukou
Lucie Poměnková -
Moc díky za tento článek, opravdu mi pomohl! Mám dotaz, je možné posílat e-maily s přílohami pomocí VBA? Kdo už to zkoušel, dejte vědět