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