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:

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

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):