Вмъква в перспектива Excel таблици форматиране на, Excel за всички

За създаването на имейли в Outlook чрез Visual Basic за приложения (VBA) Excel написах няколко статии, включително как да поставите един от стандартните подписите на писмото - Поставете в писмо, подписано от Outlook чрез VBA (по подразбиране, когато създавате писма от VBA подпис не може да се вмъкне, дори ако то е конфигуриран опции поща). Но тъй като Изпращането се извършва от Excel, често възниква още един въпрос - как да вмъкнете писмо не е само на текста, както и цялата масата? Да, дори и с всички форматирането на клетките? Ако говорим за ръчно вкарване, всичко е просто, копиран обхват, предава в писмен вид - поставена. Но ако се опитате същия код (чрез копиране и поставяне) - тя не работи (в Outlook просто не разполага с метод Paste или нещо подобно). Можете да използвате метода на SendKeys, но това е много нестабилна и аз го пробвам изобщо къде да се прилага само в случаите, когато друго е, не на всички. Ако маса кода за трансфер като този:
.Тяло = обхват ( "А1"). Стойност Range ( "A2"). Value
това ще бъде само стойностите на клетки, но не и форматирането си, и със сигурност не маса.
Работата е там, че на масата в тялото на писмото е отделен обект HTML формат. И когато се вмъкват през копиране и поставяне на Excel и Outlook ръце правят за нас всички мръсната работа за транскодиране копира в съответния HTML. А това означава, че трябва по някакъв начин да конвертирате желаните клетки в този формат, така че ние се вземат под внимание всички форматирането. Например, има маса:

Вмъква в перспектива Excel таблици форматиране на, Excel за всички


Сега, тази таблица трябва да се включат в писмото, заедно с останалата част от текста, който беше нещо като:

Вмъква в перспектива Excel таблици форматиране на, Excel за всички


За да се превърне желаните клетки като отделна таблица в HTML формат използвам тази функция:

Функция ConvertRngToHTM (RNG Както Range)

Дим FSO Като обект. TS като Обект на

Дим SF Както стринга. resHTM Както стринга

Дим wbTmp Като работна книга

Sf = Environ ( "температура") "/" Format (сега. "ДД-ММ-ГГ з-мм-сс") ".htm"

"Трансфер на посочения диапазон в нова книга

Задайте wbTmp = Работни книги. Добави (1)

С wbTmp. Листове (1)

"Въвеждане само ширината на колони, ценностите и формати

Клетките (1). PasteSpecial xlPasteColumnWidths

Клетките (1). PasteSpecial xlPasteValues

Клетките (1). PasteSpecial xlPasteFormats

Клетките (1). Изберете

"Изтриване на всички от обектите (форми, снимки и така нататък.)

"Ако са необходими фигурите и обектите - да се премахне този блок

На Грешка Resume Следваща

DrawingObjects. Видим = True

На Error GoTo 0

"Да се ​​съхранява на книгата като уеб страница (за конвертиране на съдържанието в HTML-код)

С wbTmp. PublishObjects. Добави (_

SourceType. = XlSourceRange. Име на файл. = SF. _

Лист. = WbTmp. Листове (1). Name. Източник. = WbTmp. Листове (1). UsedRange. Адрес. _

"Отваряне на нов файл като текст и да прочетете съдържанието на

Задайте FSO = CreateObject ( "Scripting.FileSystemObject")

Задайте TS = FSO. GetFile (SF). OpenAsTextStream (1 - 2)

resHTM = TS. ReadAll

"Подравнява таблицата към левия ръб (ако трябва да напусне по средата - за да се отстрани този ред)

ConvertRngToHTM Сменете (resHTM "приведе = център х: publishsource =". "Align = ляво х: publishsource =".)

"Затваряне на книгата и премахване на временната

wbTmp. Близо False

"Изчистване променливите на обектите


Това може да се промени и да е желание.
Какво е важно да се помни, че ако вмъкнете таблица в допълнение към плана за форматиране на писмо други тагове HTML, можете най-добре да се направи всичко, форматиране и само в самия край, най-последната стъпка, добавете една маса в писмото. В противен случай маркиране на таблицата може да "плува".

Надявам се, че сега няма да е трудно да се направи публикациите си по-красив и чист.

Разбирам, че много хора ще искат да направят от това масовото изпращане. За това е необходимо да се съчетаят кода в тази статия с кода на статията Как да се изпрати писмо на Excel?. Там е пример за изпращане на съобщения чрез Outlook списъкът с получатели.

Реших да добавите прост малко функция статия, която не съхранява всички файлове, форматирани таблици, и почти не прави излишни движения. Тя просто поставя в писмен вид на стойностите на всички клетки в посочения диапазон в обикновен текст, без форматиране (с изключение на това, че добавят интервали и нови раздели, които трябва да имате поне някаква таблица и текст не е на един ред):