Metoda FollowHyperlink

Podobné dokumenty
Odstavení automatického zpracování hypertextových odkazů

Spojování textových řetězců na listu

Slíbená princezna. Univerzální ComboBox

VÝŘEZ OBLASTI BUNĚK VZORCEM

V článku Skrytý obsah na listu (1) jsme se zabývali obecnými možnosti skrývání obsahu. Dnes se na dané téma podíváme prakticky.

Generátor list nastavení

Na úvod tip, jak kontrolovat šířku tabulky před a po změně. Chování makra ukazují obrázky. Jak změnit rastr v hotové tabulce Excelu

Odstranění řádků (na základě hodnoty)

Obsahy kurzů MS Office

MsgBox, InputBox, FileDialog, Pravomoci vlastních funkcí (UDF) Function TESTOVKA() 'dialog (MsgBox) TESTOVKA = MsgBox("Baf!

SMTPServer - Příručka

Jak na propojení Excelu s Outlookem

OBSAH Úvod do VBA... 6 K čemu VBA... 6 Když VBA nestačí... 6 Historie Visual Basicu... 7 Objektový model, vlastnosti, metody, události a funkce...

Výběr složek a souborů ve VBA

Dialog Vzhled stránky

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

MS Exchange a MS Outlook

Prezentace uvádí výčet poštovních programů, základní postupy při jejich využívání.

VDDMAIL by ESCAD, Corp. (Součást IWSE.NET Services by ESCAD, Corp.)

Jak vložit obrázek do oblasti buněk

POVRCHOVÝ (OBRYSOVÝ GRAF)

Panely pro práci s barvami a ohraničením v Excelu 2003 a 2010

Jak nastavit poštu v síti SPKFree

Parsování HTML. Pro účely testování jsem vytvořil stránku parsovani.html. Zdrojový kód:

Microsoft Outlook 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit.

Faxový server společnosti PODA s.r.o.

Tabulka obsluhovaná kódem VBA

Návod pro použití Plug-in SMS Operátor

Hromadná korespondence

Příručka nastavení funkcí snímání

3MA481 Propojení Accessu a Excelu David Hach

Přesunutí poštovní schránky ze stávajícího serveru do systému MS Exchange si vyžádá na straně uživatele změnu nastavení poštovního klienta.

Povrchový (obrysový graf)

Návod na používání webmailu

Nastavení ového účtu Outlook 2007

MS Excel makra a VBA

8. , kalendář a kontakty kdekoliv a kdykoliv. Verze dokumentu: 1.0 Autor: Marián Henč, Microsoft Časová náročnost: 25 minut

8 Makra Příklad 4 Excel 2007

Nastavení ového účtu Outlook Express operační systém Windows XP

Dokumentace k produktu IceWarp Outlook konektor

1) Legenda... str.1. 2) Vytvoření ových schránek Business mail. str ) Instalace Outlook str.4-8

Empty, Null, Nothing, Missing, prázdný řetězec a buňka

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

Na vod k nastavenı u

Práce s ovými schránkami v síti Selfnet

Tlačítka a další prvky vestavěných panelů nástrojů a nabídek (CommandBar) a jejich Control ID ve verzi Excel 2010

Informace o poštovním provozu na serveru mail.ktkadan.cz a stručný návod na použití OpenWebMailu

Úvodní příručka. Získání nápovědy Kliknutím na otazník přejděte na obsah nápovědy.

1. Obsah 2. Úvod Zdarma poštovní klient od společnosti Microsoft přímo v PC

Star Trek Do temnoty (infografika na panelu)

Nastavení ové schránky

Outlook Express

Dialog Najít a nahradit

Použití inteligentních značek s informačními službami

Hromadná změna datumu a času v buňkách

Informační a komunikační technologie pro učební obory ME4 a SE4. Makra

ELEKTRONICKÉ PODÁNÍ OBČANA

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

MS Outlook Web Access Nastavení pravidel pro předávání pošty na Google

Outlook. V té to ka pi to le: Prostředí programu Outlook 2010 Elektronická pošta Kalendáře Kontakty Plánování úkolů Poznámky Deník

Migrace na aplikaci Outlook 2010

GMAIL. Verze Gmail je online aplikace, která se neustále vyvíjí. V daném okamžiku proto používáte vždy tu nejaktuálnější verzi.

Nastavení ového klienta MS Outlook Express. IMAP první spuštění

Jak nastavit elektronickou poštu při využívání služeb sítě FDLnet.CZ

IceWarp Outlook Sync Rychlá příručka

Visual Basic for Application

24 Uživatelské výběry

Nastavení poštovních klientů pro přístup k ové schránce na VŠPJ

'je zobrazen stavový řádek? blnstavovyradekzobrazen = Application.DisplayStatusBar. Excel stavový řádek

2. Thunderbird: jak ho získat 19

OBSAH. Word. První spuštění a hlavní obrazovka Wordu 3 Základní nastavení Wordu 6 Kontrola pravopisu a mluvnice 8 Nastavení ukládání dokumentu 12

3.8 Elektronická pošta

Zá kládní nástávení prostr edí operáč ní ho syste mu Windows 7 á vybrány čh áplikáčí

Inovace a zkvalitnění výuky prostřednictvím ICT Počítačové sítě

Spuštění a ukončení databázové aplikace Access

Nastavení Microsoft Outlook 2007

ELEKTRONICKÁ POŠTA OBSAH

Informace k e-learningu

První přihlášení k Office 365

Inovace výuky prostřednictvím šablon pro SŠ

II. Elektronická pošta

ZŠ ÚnO, Bratří Čapků 1332

OUTLOOK ADDIN PRO SYNCHRONIZACI S AKTIVITAMI RAYNET CRM - POUŽITÍ

Servisní telefon: Internet:

Různé barvy v grafu pro skutečnost a plán

Nastavení telefonu T-Mobile MDA II

Nastavení telefonu T-Mobile MDA II

Vazba ESO9 na MS Outlook a MS Exchange

Zpětná vazba od čtenářů 11 Dotazy 11 Zdrojové kódy ke knize 11 Errata 11 Typografické konvence použité v knize 12

DUM 06 téma: Tvorba makra pomocí VBA

Počítačové kurzy buildit

UNIVERZITA PARDUBICE. Dopravní fakulta Jana Pernera. Elektronická pošta. Semestrální práce z předmětu Úvod do informačních technologií

Excel 2013 balada o tabulkovém procesoru

SMS_Mail popis funkcí podle verzí:

Jak nastavit 2SMS a SMS2 na bráně 2N VoiceBlue Next

Stručný návod pro nastavení funkcí snímání. Nastavení snímání do u

Vytvoření.NET komponenty (DLL) ve Visual Studiu

MS Excel Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

Transkript:

Jedním z věčných témat je potřeba odesílání informací přímo z Excelu prostřednictvím e-mailu. Opětovně jej uvádím na svých stránkách i já. Ukážeme si, jak poslat část tabulky, sešit jako přílohu i e-mail úplně nezávislý na Microsoft Office. Nástrojem nám budiž VBA. Metoda FollowHyperlink Jmenovaná metoda využívá výchozího poštovního klienta. Programově umí naplnit dialog nové zprávy. SendKeys pak může simulovat stisk klávesy Odeslat (Alt+A, dříve Alt+S). Její užití není podmíněno posláním sešitu jako celku v příloze. Sub ExcelFollowHyperlink() Dim rngoblast As Range Dim rngbunka As Range Dim stradresat As String Dim strpredmet As String Dim strobsah As String Dim strret As String 'náhrada vblf Const cstrlf As String = "%0A" 'adresát stradresat = "nekdo@nekde.cz" 'předmět strpredmet = "Výpis z listu" 'zdroj obsahu Set rngoblast = Range("rngObsah") 'hlavička obsahu strobsah = rngoblast.parent.name & cstrlf 'načtení adres a obsahů jednotlivých buněk oblasti For Each rngbunka In rngoblast strobsah = strobsah & cstrlf & rngbunka.address(, ) & ": " & _ rngbunka.text Next rngbunka Excelplus.NET 1

'sestavení řetězce pro metodu FollowHyperlink strret = "mailto:" & stradresat & "?" 'předmět strret = strret & "subject=" & strpredmet & "&" 'obsah strret = strret & "body=" & strobsah 'odeslání e-mailu ActiveWorkbook.FollowHyperlink (strret) 'simulované potvrzení dialogu (Odeslat, ALT+A) 'Microsoft Outlook 2010 CZ Application.Wait (Now + TimeValue("0:00:05")) SendKeys "%a", True End Sub Excelplus.NET 2

Metoda FollowHyperlink Metoda SendMail Tato metoda patří asi k nejznámějším, ale také činí největší potíže. Sešit je v ní posílán jako příloha a veškerá činnost podléhá vcelku přísným bezpečnostním opatřením, díky čemuž nelze úlohu plně zautomatizovat. Sub ExcelSendMail() 'aktivní sešit jako příloha Dim akomu() 'adresáti akomu = Array("nekdo@nekde.cz", "info@firma.org") Excelplus.NET 3

'odeslání s uvedením předmětu zprávy ActiveWorkbook.SendMail akomu, "Výpis listu" End Sub První z níže uvedených obrázků ukazuje systémový dialog při odesílání zprávy přes Microsoft Outlook. V průběhu let se měnil, tlačítka přišla o klávesovou zkratku, tlačítko Povolit není výchozí a navíc je zpřístupněno po uplynutí několika sekund. Řadu let se programátoři snaží tento dialog obejít. Pokud vím, ze strany Microsoftu je cesta hodně trnitá a svého času byla podmíněna používáním Microsoft Exchange. Druhý obrázek ukazuje výsledek klepnutí na tlačítko Odepřít či uzavření dialogu chybovou zprávu. Metoda SendMail zabezpečení Excelplus.NET 4

Metoda SendMail Dialog SendMail Následující příklad využívá vestavěného dialogu pro odesílání pošty. Bohužel, v tomto případě se mi nepodařilo zprovoznit automatické potvrzení dialogu přes SendKeys. Nezkoušel jsem cestu odeslání klávesové zkratky přes API. Sub ExcelDialogSendMail() 'aktivní sešit jako příloha Dim akomu() akomu = Array("nekdo@nekde.cz", "info@firma.org") 'simulované potvrzení dialogu (Odeslat, ALT+A) Excelplus.NET 5

'Microsoft Outlook 2010 CZ 'neproběhne SendKeys "%a" 'předvyplnění a zobrazení okna se zprávou Application.Dialogs(xlDialogSendMail).Show akomu, "Výpis listu" End Sub Dialog SendMail API funkce Při posílání e-mailu můžete sáhnout i po API funkci, konkrétně ShellExecute (popravdě nejsem si úplně jistý, proč v poznámkách nemám uveden příklad na VBA funkci Shell, ale pravděpodobně jsem narazil na nějaký problém při jejím užití). Private Const SW_SHOWNORMAL As Long = 1 Excelplus.NET 6

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteW" _ (ByVal hwnd As Long, ByVal lpoperation As Long, ByVal lpfile As Long, ByVal _ lpparameters As Long, ByVal lpdirectory As Long, ByVal nshowcmd As Long) As Long Sub ExcelAPI() Dim strobsah As String Dim strurl As String Dim stradresat As String Dim strpredmet As String Dim stradresatcc As String Dim stradresatbcc As String Dim rngoblast As Range Dim rngbunka As Range 'náhrada vblf Const cstrlf As String = "%0A" 'adresát stradresat = "nekdo@nekde.cz" 'kopie stradresatcc = "schranka@email.com" 'skrytá kopie stradresatbcc = "info@firma.org" 'zdroj pro obsah zprávy Set rngoblast = Range("rngObsah") 'předmět strpredmet = "Výpis listu" 'zpracování obsahu strobsah = rngoblast.parent.name & cstrlf For Each rngbunka In rngoblast strobsah = strobsah & cstrlf & rngbunka.address(, ) & ": " & vbtab & _ Excelplus.NET 7

rngbunka.text Next rngbunka 'sestavení řetězce pro funkci ShellExecute strurl = "mailto:" & stradresat & "?cc=" & stradresatcc & "&bcc=" & _ stradresatbcc & "&subject=" & strpredmet & "&body=" & strobsah 'nasazení API funkce ShellExecute &, &, StrPtr(strURL), &, &, SW_SHOWNORMAL 'simulované potvrzení dialogu (Odeslat, ALT+A) 'Microsoft Outlook 2010 CZ Application.Wait (Now + TimeValue("0:00:05")) SendKeys "%a", True End Sub Excelplus.NET 8

API funkce ShellExecute Pozn. V původní verzi tohoto článku byla užita ANSI verze funkce ShellExecute, nyní již pracujeme s Unicode verzí (viz alias ShellExecuteW v deklaraci, parametry Long, StrPtr a správný obsah buňky B5 v těle e-mailu) Panel Obálka (Envelope) Dialog nové zprávy umí Excel zobrazovat i v rámci svého hlavního okna. Jedná se o panel reprezentující jakousi hlavičku formuláře. Kromě toho je také důkazem, že starší panely nástrojů lze zobrazovat v prostředí Excelu 2007 a novějším. Sub ExcelPanelObalka() 'aktivní sešit jako příloha 'odesílaný z podokna Excelu Excelplus.NET 9

ActiveWorkbook.EnvelopeVisible = True End Sub Sub ExcelZavritPanelObalka() ActiveWorkbook.EnvelopeVisible = False End Sub Panek Obálka (Envelope) Pozn. Teoreticky je k dispozici přístup k panelu přes CommandBars( Envelope ). Tento postup je ale nespolehlivý. Objektový model Microsoft Outlook Komfortní práci s odesíláním pošty zajistí pochopitelně přímé napojení na objektový model Outlooku. První příklad ukazuje obecný postup posílání elektronické zprávy včetně příloh. Sub ExcelOutlookPriloha() 'Tools / References / Microsoft Outlook x.x Object Library Excelplus.NET 10

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 Excelplus.NET 11

Set OutMail = Nothing Set OutApp = Nothing End Sub Microsoft Outlook příloha Jak jistě víte, v e-mailu se může objevit i obsah v HTML formátu. Tuto možnost využívá následující procedura, která odesílá aktivní list přímo v těle zprávy. Sub ExcelOutlookHTML() 'Tools / References / Microsoft Outlook x.x Object Library Dim OutApp As Outlook.Application Dim OutMail As Outlook.MailItem Excelplus.NET 12

Dim strcestasoubor As String Dim strobsahhtml As String Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(olMailItem) 'uložení listu do HTML podoby strcestasoubor = ActiveWorkbook.Path & "\temp.htm" ActiveWorkbook.PublishObjects.Add(xlSourceSheet, _ strcestasoubor, ActiveSheet.Name).Publish (True) 'načtení HTML kódu uloženého listu Set fso = CreateObject("Scripting.FileSystemObject") Set txt = fso.getfile(strcestasoubor).openastextstream(1, -2) strobsahhtml = txt.readall txt.close 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" 'HTML obsah zprávy.htmlbody = strobsahhtml 'zobrazení okna se zprávou (není nutné).display 'odeslání zprávy Excelplus.NET 13

'.Send End With 'uvolnění z paměti Set OutMail = Nothing Set OutApp = Nothing End Sub Microsoft Outlook HTML obsah Objektový model Outlooku je pochopitelně možné využít v daleko větším měřítku práce s kontakty, složkami, kalendářem atd. Makra směřující k událostem Outlooku (nová příchozí zpráva, navázání pravidel, ) je už zpravidla nutné směřovat přímo do Outlooku, kde si můžete také vytvořit formuláře coby šablony zpráv. Excelplus.NET 14

CDO Ve Windows již dlouho existuje jedna cesta, jak odeslat tichý e-mail a dokonce s přílohou bez vazby na poštovního klienta. Využijeme přitom systémovou knihovnu cdosys.dll (CDO je zkratkou Collaboration Data Objects). CDO je řešením pro klientské aplikace, které v určitém bodu pracovního procesu odešlou informaci zaměstnanci, jenž má v procesu pokračovat. Může se jednat kupříkladu o proces schvalování. Bezpodmínečně nutný je SMTP server a existující poštovní účet. Dříve šlo blafovat ve vlastnosti.from, v níž se mohl objevit jiný odesílatel. Kupříkladu Seznam.cz toto již přímo zakazuje a Gmail.com ignoruje. Sub ExcelCDO() Dim imsg As Object Dim iconf As Object Dim strbody As String Dim Flds As Object 'Windows 2000 a novější 'objekty CDO Set imsg = CreateObject("CDO.Message") Set iconf = CreateObject("CDO.Configuration") 'nastavení konfigurace iconf.load -1 Set Flds = iconf.fields strconf = "http://schemas.microsoft.com/cdo/configuration/" 'příklad pro Seznam.cz With Flds.Item(strConf & "sendusing") = 2 'SMTP server.item(strconf & "smtpserver") = "smtp.seznam.cz" 'port.item(strconf & "smtpserverport") = 25 Excelplus.NET 15

.Item(strConf & "smtpauthenticate") = 1 'pro e-mail ucet@seznam.cz.item(strconf & "sendusername") = "ucet".item(strconf & "sendpassword") = "heslo".update End With 'text v těle zprávy strbody = "1. řádek zprávy" & Chr(13) & Chr(10) & "2. druhý řádek zprávy" With imsg 'konfigurace Set.configuration = iconf 'adresát.to = "nekdo@nekde.cz" 'kopie.cc = "" 'skrytá kopie.bcc = "" 'odesílatel.from = "ucet@seznam.cz" 'předmět.subject = "Text v předmětu zprávy" 'HTML obsah zprávy '.HTMLBody=... 'HTML stránka na internetu '.CreateMHTMLBody "http://www.excelplus.net/data/cnb-denni-kurz.php" Excelplus.NET 16

'lokální HTML soubor '.CreateMHTMLBody "file://c:/test.htm" 'textový obsah zprávy.textbody = strbody 'příloha (mezeru v názvu nahrazujte "%20").AddAttachment ActiveWorkbook.Path & "\soubor.txt" 'odeslání.send End With 'odstranění spojení Set imsg = Nothing Set iconf = Nothing End Sub Excelplus.NET 17

CDO příchozí e-mail Uvědomte si prosím, že heslo uvedené ve VBA není nijak chráněno a heslo projektu je snadno prolomitelné. Pro Gmail.com je nastavení následující: 'příklad pro Gmail.com With Flds.Item(strConf & "sendusing") = 2.Item(strConf & "smtpserver") = "smtp.gmail.com".item(strconf & "smtpserverport") = 25 '465, 587.Item(strConf & "smtpauthenticate") = 1.Item(strConf & "smtpusessl") = 1.Item(strConf & "smtpconnectiontimeout") = 60 Excelplus.NET 18

'pro e-mail ucet@gmail.com.item(strconf & "sendusername") = "ucet@gmail.com".item(strconf & "sendpassword") = "heslo".update End With Pozn. Gmail ve výchozím stavu odesílání z nedůvěryhodných aplikací nedovoluje. Naopak, na daný účet dorazí varování o využití schránky (spolu s návodem, jak lze nastavení změnit). Gmail změna nastavení Častokrát jsem v nejen v rámci CDO (viz užití CreateMHTMLBody) musel diskutovat otázku špatně zobrazeného HTML obsahu s kódováním UTF-8. Pravdou je, že ať už jsem použil SMTP Seznamu nebo Googlu, tak na jejich straně je kódování v pořádku. Nicméně bez pardonů pitomý Outlook má problém s jeho zobrazením. Zatímco u odchozí pošty si můžete pohrát s nastavením, pro příchozí Excelplus.NET 19

maily nejspíš neexistuje způsob, jak ho UTF-8 naučit (snad by to zvládl Exchange). Přitom pokud si obsah otevřete v Internet Exploreru (na kterém je podle všeho závislý), dopadne vše dobře. Tádydády-dá. Příloha excel_mail.zip Excelplus.NET 20