Introdus în o perspectivă foaie de calcul Excel de formatare, Excel pentru toate

Despre crearea de e-mailuri în Outlook printr-un Visual Basic for Applications (VBA) Excel Am scris o serie de articole, inclusiv modul de a insera unul dintre semnăturile standard la scrisoarea - Insert într-o scrisoare semnată de Outlook prin intermediul VBA (implicit când creați litere din VBA semnătură nu poate fi introdus, chiar dacă acesta este configurat opțiuni e-mail). dar, pentru că Trimiterea are loc din Excel, ea apare de multe ori o altă întrebare - cum se introduce o literă nu este doar textul, și întreaga masă? Da, chiar și cu toate formatarea celulelor? Dacă vorbim despre introducerea manuală, este pur si simplu toata gama, copiate, transmise în scris - inserat. Dar dacă încercați același cod (prin copy-paste) - nu funcționează (în Outlook pur și simplu nu are metoda de Paste sau ceva de genul asta). Puteți utiliza metoda SendKeys, dar este foarte instabil și am încerca, la toate este nicăieri să se aplice numai în cazurile în care un alt bine, deloc. În cazul în care codul de masă de transfer astfel:
.Corp = Range ( "A1"). Valoarea Range ( "A2"). Valoarea
acesta va fi doar valorile celulelor, dar nu și de formatare a acestora, și cu siguranță nu o masă.
Lucru este, că tabelul în corpul scrisorii este un format separat obiect HTML. Iar atunci când inserați prin copy-paste Excel și Outlook mâini fac pentru noi toate treburile murdare pentru transcodare copiate corespunzător HTML. Și acest lucru înseamnă că trebuie să ne transforme într-un fel celulele dorite în acest format, astfel încât să se ia în considerare toate formatarea. De exemplu, există un tabel:

Introdus în o perspectivă foaie de calcul Excel de formatare, Excel pentru toate


Acum, acest tabel ar trebui să fie introdusă în scrisoarea împreună cu restul textului, care a fost ceva de genul:

Introdus în o perspectivă foaie de calcul Excel de formatare, Excel pentru toate


Pentru a converti celulele dorite ca un tabel separat în format HTML Eu folosesc această funcție:

Funcția ConvertRngToHTM (RNG Ca Range)

Dim FSO ca obiect. ts ca obiect

Dim sF ca șir. resHTM ca șir

Dim wbTmp Ca Workbook

sF = Environ ( "temp") "/" Format (Acum. "Zz-ll-aa h-mm-ss") ".htm"

„Se transferă intervalul specificat într-o nouă carte

Set wbTmp = Workbooks. Adăugați (1)

Cu wbTmp. Foi (1)

„Introduceți numai lățimea coloanelor, valorile și formate

Celulele (1). xlPasteColumnWidths PasteSpecial

Celulele (1). xlPasteValues ​​PasteSpecial

Celulele (1). xlPasteFormats PasteSpecial

Celulele (1). selecta

„Ștergeți toate obiectele (forme, imagini, și așa mai departe.)

„În cazul în care sunt necesare cifrele și obiectele - pentru a elimina acest bloc

On Error Reluare următor

DrawingObjects. Vizibil = Adevărat

La Eroare GoTo 0

„Păstrați cartea ca o pagină Web (pentru a converti conținutul în HTML-code)

Cu wbTmp. PublishObjects. Adăugați (_

SourceType. = XlSourceRange. Nume fișier. = SF. _

Sheet. = WbTmp. Foi (1). Nume. Sursa. = WbTmp. Foi (1). UsedRange. Adresă. _

„Deschideți fișierul nou ca un text și să citească conținutul părților

Set FSO = CreateObject ( "Scripting.FileSystemObject")

Set ts = FSO. Getfile (sF). OpenAsTextStream (1 - 2)

resHTM = ts. ReadAll

„Aliniaza tabelul de la marginea din stânga (în cazul în care aveți nevoie să plece în mijloc - pentru a elimina această linie)

ConvertRngToHTM = Înlocuiți (resHTM "align = centru x: publishsource =". "Align = stânga x: publishsource =".)

„Închideți cartea și eliminarea temporară

wbTmp. Închide Fals

„Ștergeți variabilele obiect


Acesta poate fi schimbat la orice dorit.
Ceea ce este important să ne amintim că, dacă inserați un tabel în plus față de planul de a formata o HTML scrisoare alte etichete, cel mai bun pentru a face toate formatare și doar la sfârșit, ultima etapă, se adaugă un tabel în scrisoarea. În caz contrar, marcarea mesei poate „înota“.

Sper că acum nu va fi dificil de a face mesajele dumneavoastră mai frumoase și îngrijite.

Am înțeles că mulți vor dori să facă din această corespondență în masă. Pentru aceasta este necesar să se combine codul în acest articol cu ​​codul de articol Cum se trimite o scrisoare de Excel?. Există un exemplu de a trimite mesaje prin lista de destinatari Outlook.

Am decis să adăugați un articol simplu caracteristică mic, care nu stochează orice fișier, tabele formatate, și aproape nu face nici mișcări inutile. Pur și simplu pune în scris valorile tuturor celulelor din intervalul specificat în text simplu, fără formatare (cu excepția faptului că se rupe rând adăugate și file, pentru a menține cel puțin un fel de foaie de calcul și de text nu a fost o singură linie):