Как вставить таблицу в письмо outlook
Как можно загрузить Excel таблицу, например в DBGrid?
Как можно загрузить Excel таблицу, например в DBGrid? Или брать значения из Excel таблицы?
Как скопировать определенные ячейки, и вставить их в определенном порядке в таблицу?
Я планирую создать макрос, чтобы он копировал определенные значения из столбика с интервалом 194, и.
если вставлять таблицей а не картинкой, то у каждого разная ширина монитора, в итоге на разных мониторах цифры и форматирование таблицы может съезжать (2 строки в ячейке вместо одной становится или у 5-значного числа 2 цифры в 1ой строке вдруг и 3 цифры во второй)
+ как я подозревая кто-то это с мобилы читает + у айфона на сколько я знаю с экселем проблемы (как минимум мне сын учредителя звонил с вопросом "зачем я ему решётки прислал" - а там надо было просто 2 раза щелкнуть столбец чтобы выровнять ширину. Либо "нажать плюс чтобы группировка данные раскрыла")
Выделить таблицу,"копировать",затем нажать на любую автофигуру на листе и ENTER. Получите картинку.При этом я это делаю при помощи snipping tool. Но будет ОК если в Excel подобрать размер таблицы так, чтобы после вставки в тело письма как BITMAP и не надо было растягивать картинку, то качество как у BITMAP
При этом именно и только BITMAP - т.к. если например в Excel скопировать таблицу и нажать "Специальная вставка - как рисунок" (т.к. в Спецвставке в Excel я не нашел опции BITMAP), то если этот рисунок вставить например в презентацию, то у него есть баг: толщина границ таблицы съезжает (этот же баг есть если скопировать таблицы в Excel и вставить её как ссылку в ppt - в режиме просмотра толщина границ таблицы съезжает, притом зависит от масштаба просмотра и от разрешения экрана - на cyberforum мы это 2 месяца назад обсуждали)
Вот потому и очень хотелось бы себя-кнопкодава савтоматизировать в части ежедневного отчета - а для этого мечтаю найти код макроса который умеет с новой строки в теле письма вставлять скопированную из Excel таблицу как BITMAP
Решение
Добавлено через 1 час 50 минутПолный макрос Excel:
Подскажите пожалуйста, попытался сделать Ctrl+C текста из Excel файла и Ctrl+V в тело письма (как я понимаю, письмо активизируется командой .Display) - для того, чтобы форматирование и цвет внутри текста из Excel'я скопировался
Дальше, соответственно, копирую таблицу как картинку bitmap
Так вот на этому моменте даже если не прописывать код Ctrl+V, то весь текст заменяется этой картинкой (притом если я 2 раза Ctrl+C и Ctrl+V нажимал когда копировал текст, то текст заменится на 2 картинки принтскрина таблицы)
Решение
KoGG, это мегасупер!! thanks!!
единственное, что после вставки в word форматирование текста Ок, но цвет становится обычным (т.е. например синим цветом подсвечено "Net Sales" - становится обычного цвета в Word)
и таблица после вставки в Word в масштабе ужимается - но это легко: просто пробегусь по 6 картинкам и поставлю 100% в самом письме перед отправкой
Это круто!! робот отчетности!
вот как в тело вставить данные я не понимаю (
помогите пожалуйста
Тем более что был Word из Excel , а теперь просто Excel и без картинок.
Уважаемый KoGG, но как собрать в одном теле письма все записи касающиеся допустим Васи . Писем то должно быть столько сколько уникальных записей по колонке ФИО а в теле данные из указанных столбцов со всей таблицы напротив этого уникального имени . То есть по данному примеру должно быть 4 письма : Васе Маше льву и Игорь , а вот в теле писем все нужные данные касающиеся их.
Зачем следующий блок ?:
For j = 1 To 30: DoEvents: Next
Next
В чем его смысл ?
PS прошу прощение за запись в этой теме , просто не хотел плодить темы своим пустяковым вопросом . Я в макросах совсем не силен (
создать новую тему?
Добавлено через 11 часов 18 минут
Добрый день! Подскажите пожалуйста - почему может не работать SendKeys "^v", True? Всё остальное в скрипте работает. Облазил весь интернет, пока мысли - возможно окно не активно? У меня стоит Office 365.
Так же смотрел по ссылке операторы, которые могли бы заменить SendKeys, но не нашёл таких.
Заранее спасибо за помощь!
cercyo, проверяйте: точно ли активированно то место где вставляется текст (если остановить скрипт и нажать на клавиатуре, то работает без лишних кликов,); точно ли то что надо есть в буфере.
А вообще практика с симуляцией клавиш вряд ли когда-то будет надёжным решением. Так что поглядеть на другие опци тоже не лишнее.
настало время немного доделать данную тему
в 2014 писал что "ок, пробегусь по картинкам и вручную сделаю масштаб 100%" - конечно каждый кто дошёл до этого момента без труда в итоге, я уверен, нашёл в поиске код, который выделяет все shapes (InlineShape) в word-doc'е и делает их 100% прежде чем вставить в тело письма Outlook
для этого приведу всё-таки полный текст того подмакроса, которым я успешно и с удовольствием делал 3 года утренние ежедневные отчёты (так-то макрос находил все непрочитанные письма - это в программе настроили автоотправку файла с данными о продажах и остатках в заданное время - скачивал их в папку, открывал и обновлял ежедневный отчёт и формировал письмо с картинками для рассылки - если кому нужно, то могу весь такой макрос дать, просто в поиске помню вроде легко это всё найти)
так вот - в чём сейчас вопрос по 100%ой доработке данного макроса стоит:
в макросе как видно почти в самом конце есть выделение в Word Ctrl+A т.е. ".WholeStory" и далее через SendKey 4 раза TAB и потом Ctrl+V
и вот это на самом деле ранее срабатывало %ах в 80-90, но нужно чтобы это срабатывало сейчас в 100%, т.к. ранее я наблюдал за процессом создания письма и даже если вставлялось всё например в адресаты вместо тела, то далее после окончания работы макроса сам мышкой щёлкал в тело письма и нажимал "Ctrl+V"
т.е. видимо sendkey как-то с задержкой срабатывает иногда
а сейчас у меня задача автоматом 10-15 писем создать - и поэтому нужна 100% срабатывание
подскажите пожалуйста, каким кодом можно сделать "Ctrl+V в тело письма Outlook"?
(желательно без затирания автоподписи, т.к. если делать .body=, то оно к примеру затирает автоподпись)
т.е. делается ".WholeStory", а далее я искал и пробовал ".body .paste" и пр. - нет такой команды для oMessage
т.е. между Excel и Word к примеру на 100% можно копировать и вставлять таблицы простой командой .activate .paste как видно из приведенного кода, а так чтобы сделать ".body .activate .paste" не нашёл
Приходится ли вам делать рассылки ? Если да, то информация ниже будет полезна. Если нет - то, как минимум, интересна.
1. Шаблоны писем. Чем они хороши?
Известно, что шаблоны - удобный инструмент ускорения рутинной работы. Будь то шаблоны документов или электронных писем.
Задачи, для решения которых пригодятся шаблоны электронных писем:
- сокращение времени на форматирование текста электронного письма;
- периодическая отправка однообразного содержимого одному или многим адресатам;
- приём заявок на стандартные услуги, справки и т.п. по электронной почте.
Как подготовить письмо и сохранить его в виде шаблона?
- создаём новое письмо;
- вносим адреса получателей в поля Кому, Копия, Cкк(To. Cc. Bcc. ) ;
- в поле Тема(Subject вписываем тему письма
Всегда пишите тему письма! Пожалейте адресатов, облегчите им сортировку почты! Письма без темы - предмет моей личной неприязни и дурной тон :)
- далее оформляем текст. Используем советы, описанные ранее в этой статье;
- если надо, вставляем таблицы и делаем их красивыми (об этом рассказано здесь);
- вставляем вложения ( файлы ). Если нужно, опять же.
Сохраняем письмо в виде шаблона:
1. Жмём "Файл" (File):
2. Жмём "Сохранить как" ( Save As):
3. Выбираем сохранить в виде "Шаблона Outlook" (Outlook Template (*.oft))
4. Система предложит вам путь расположения шаблонов. Измените его на удобную папку:
Отступление. Про формат *.msg
Тут надо сказать, что многие пользуются возможностью сохранения писем в формате MSG . Т.е. письмо (Message) появится в папке в виде файла. Но шаблоны на основе такого формата делать очень неправильно . Поскольку изменяя данный файл - и сохранив его, можно потерять данные и оформление. Лучше использовать OFT . При работе с ним всегда создаётся именно "новое письмо" на основе шаблона. Для этого данный формат и придуман.
MSG - это хороший способ сохранять письма в папках. Для сохранения информации в формате писем . Можно просто мышкой перетаскивать из почты прямо в папку. Удобно!
Чуть больше о встроенной в Outlook функции работы с шаблонами.
Строго говоря, у Outlook есть особый механизм работы с шаблонами. Их называют формами (Forms). И если вы попробуете не совсем привычным способом создать новый элемент, способом, показанным на рисунке:
Вообще-то, это всё " Изображение ". Это может быть фотография, рисунок, скриншот, картинка из клипарта . В общем - любой графический файл !
Давайте договоримся, что Картинка = Рисунок = Picture.
Мы будем говорить о той кнопке, которая называется " Рисунок " ( Pictures ) на вкладке " Вставка " ( Insert ):
Про формат письма и его специфику при ответе-пересылке
В статье по этой ссылке - раскрыта тема форматов письма. Касательно картинок - надо помнить, что формат письма должен быть HTML . Это самый правильный формат для вставки картинок непосредственно в тело письма.
Картинки вставленные в письмо в этом формате - с охраняются в истории переписки при ответах и пересылке .
Я продолжаю настаивать на том, что вложения в письме - это зло :) Всю информацию максимально нужно вставлять в тело письма . Чтобы не заставлять получателя щёлкать по вложению, и потом терять его в дальнейшей переписке (кроме конкретных случаев необходимости пересылки вложений).
Как вставить картинку?
Для начала, собственно, нужно создать новое письмо и поместить курсор туда, где должно появиться изображение.
Всему поколению "копи-пастеров" известна комбинация "Copy-Paste".
Ctrl +C -> Ctrl + V . Находите картинку, открываете в программе просмотра, если там есть опция " Скопировать " - копируете мышкой или жмёте Ctrl + C . Переходите в письмо, ставите курсор в нужное место и жмёте Ctrl + V .
Как вставить скриншот (снимок экрана)? На клавиатуре нажмите PrnScrn (захват всего экрана) или Alt + PrnScrn (активное окно) перейдите в письмо и нажмите Ctrl + V.
Однако не во всех программах просмотра изображений есть впрямую опция копирования картинки. Да и лучше чтобы этот процесс был более управляемым. Под вашим контролем.
Как раз для этого существует специальная кнопка на закладке " Вставка " ( Insert ) - " Вставить Рисунок " ( Insert Pictures ).
Нажимаете эту кнопку и видите окно выбора файлов-картинок. Выбираете нужную и жмёте " Вставить ".
Руками вставить диаграмму в письмо Outlook более чем просто: копируем нужную диаграмму, переходим в письмо и вставляем в нужное место. Через VBA это делается чуть сложнее.
Я уже писал несколько статей по работе в Outlook, среди которых есть и Вставить в письмо Outlook таблицу Excel с форматированием. Однако, код вставки таблицы не совсем подходит для вставки диаграммы. Первый код из статьи, в котором используется метод SendKeys для вставки в тело письма объекта из буфера обмена(будь то диапазон, фигура или диаграмма), хоть и сработает, не очень мне нравится. Он не очень надежен. Почему? Например поэтому: При вставке из VBA картинки на лист ошибка Метод paste из класса worksheet завершен неверно. А есть еще причины: на некоторых ПК сочетание клавиш Ctrl + V может отвечать совсем не за вставку чего-то из буфера, а за вызов какого-нибудь окна настроек. Плюс, метод SendKeys всегда работает только с активным на данный момент окном, а может оказаться так, что на момент попытки вставки окно нового письма еще не отобразилось по какой-то причине. Иначе говоря мы слишком зависимы от тех факторов, на которые практически не можем повлиять и предусмотреть все практически нереально. И по факту, таким методом (помимо правильной вставки) мы можем получить либо ошибку, либо неверное действие и никакой вставки, либо вставится вообще не то, что требовалось. Тем не менее, код вставки через SendKeys я все же здесь тоже выложу хотя бы потому, что он прост, понятен и универсален(да и в большинстве случаев все же будет работать). К тому же у него все же есть одно очень большое преимущество - им можно вставить что угодно: хоть таблицу, хоть диаграмму, хоть фигуру. В общем все, что выделили на листе:
Перед запуском кода необходимо сначала выделить на листе нужную диаграмму.
Так же как и в случае с предыдущим кодом, необходимо сначала выделить на листе нужную диаграмму и запустить код.
Но я прекрасно понимаю, что на листе может быть более одной диаграммы и все их надо вставить на лист. Даже не так: не все, а несколько выделенных. Предыдущий код не сможет этого сделать, т.к. изначально работает только с одной диаграммой и подстроить его под одну-две-три простой правкой двух строк кода не получится. Поэтому я приведу ниже код, который вставляет в письмо все выделенные диаграммы(а перед ними добавит текст):
Все, что требуется, это выделить нужные диаграммы на листе и запустить код.
Читайте также: