

Excel VBA - odeslání e-mailu
Ahoj, obracím se na Vás s prosbou o radu jak funkčně odeslat e-mail přes VBA prostřednictvím Outlooku.
Využívám tento kód
Sub ExcelOutlookPriloha()
'Tools / References / Microsoft Outlook x.x Object Library
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
With OutMail
'adresát
.To = "nekdo@nekde.cz"
'kopie pro
.CC = "schranka@email.com"
'skrytá kopie pro
.BCC = "info@firma.org"
'předmět zprávy
.Subject = "Předmět zprávy"
'text zprávy
.Body = "1. řádek zprávy" & Chr(13) & "2. druhý řádek zprávy"
'aktivní (uložený) sešit jako příloha
.Attachments.Add ActiveWorkbook.FullName
'jiná příloha
.Attachments.Add ActiveWorkbook.Path & "\soubor.txt"
'zobrazení okna se zprávou (není nutné)
.Display
'odeslání zprávy
'.Send
End With
'uvolnění z paměti
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Čerpáno z TÉTO STRÁNKY
Problém, kterého sem si všimnul až po nějaké době je, že email se neodešle ihned při kliknutí na tlačítko odeslat (v okně Outlooku nová zpráva), ale uloží se do konceptů. K odeslání dochází až tehdy pokud se klasicky otevře Outlook.
Nechat proběhnout kód aby vytvořil zprávu a poté ještě znovu nahodit Outlook aby došlo k faktickému odeslání jaksi postrádá smysl. Věděl by někdo jak z toho ven.
PS: jedná se o office 2007
Tak sem našel možné řešení ZDE
Několikrát sem testoval a vypadá to, že tohle je to pravé ořechové.
Edit: Věděl by někdo jak sestavit kód, pokud bych chtěl nahradit příkaz send za display? Pokud provedu náhradu, tak se zobrazí okno se zprávou, ale makro pokračuje v chodu (nečeká něž uživatel zprávu fyzicky odešle) a zpráva se opět uloží do složky "k odeslání".
Siki,
prosím Ťa, narazil som na potrebu zasielať mail z Excelu 2013.
Ty píšeš, že si poriešil pre 2007 ale možno si to odvtedy riešil aj pre 2013.
V 2010 mám funkčné zasielanie ale ten istý kód v 2013 sa dá síce ošetriť proti nejakým tým chybám, kód prebehne bez chyby, akurát že sa nič neodošle.
Nemáš náhodou riešenie?
Díky
Bohužel musím Tě zklamat makro používám výhradně na verzi 2007 na 2010 jsem netestoval (mám je na stolním PC, kde s tímto makrem nepracuji). Verzi 2013 nemám vůbec k dispozici.
Zde kód který mi funguje:
Dakujem, skusim, ale pravdepodobne bezuspesne, lebo mne to slo este aj na 2010, zmena nastala az na 2013...
Vyzera to tak, ze v 2013 skoncim max na .Display a samotne zaslanie sa bude musiet realizovat odkliknutim "odoslat". Este aj to by sa dalo vydrzat...
Diky
Ahoj, podařilo se Ti rozchodit to odesílání?
Ahoj, nepodarilo, koncim na .Display, po ktorom je nutne obsluzit tlacidlo outlooku Odoslat.
Lenze kym v 2010 mi kod povodne generoval viac adries s ciastkovymi spravami a v cykle krasne odoslalo x sprav, tak v 2013 cyklus odosielania nemozem pouzit. Myslel som, ze mi to naotvara x .Display okien a budem ich musiet rucne poodklikavat, ale takto to nefunguje. Tak som to zmenil tak, ze v cykle sa mi akurat nacita x adresatov do jednej hromadnej spravy, takze na zaver odklikavam len jedno odoslanie. Tym vsak nemozem kazdemu zaslat len na neho situ spravu, ale posielam zovseobecneny oznam. Nie je to to, co som povodne chcel, ale moze to byt aj takto... Takze ma to netlaci hladat ine riesenie...
Ahoj, prečo dáváš display a nie .send ?
Keby niekto potreboval pomoc s VBA, tak ma kontakujte www.vba.webnode.cz
nerobil som to pre seba ja mám E 2010 (kde to funguje), ale robil som to pre stroj, ktorý má E 2013.
Od užívateľa E 2013 mám správu, že ".Send" nefunguje...
Zdá sa, že odpovedáš teoreticky, než preverením situácie...