Как вставить таблицу в письмо outlook

Обновлено: 07.07.2024

Как можно загрузить Excel таблицу, например в DBGrid?
Как можно загрузить Excel таблицу, например в DBGrid? Или брать значения из Excel таблицы?

Как скопировать определенные ячейки, и вставить их в определенном порядке в таблицу?
Я планирую создать макрос, чтобы он копировал определенные значения из столбика с интервалом 194, и.

Выделить таблицу,"копировать",затем нажать на любую автофигуру на листе и ENTER. Получите картинку.

если вставлять таблицей а не картинкой, то у каждого разная ширина монитора, в итоге на разных мониторах цифры и форматирование таблицы может съезжать (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 я все же здесь тоже выложу хотя бы потому, что он прост, понятен и универсален(да и в большинстве случаев все же будет работать). К тому же у него все же есть одно очень большое преимущество - им можно вставить что угодно: хоть таблицу, хоть диаграмму, хоть фигуру. В общем все, что выделили на листе:

Перед запуском кода необходимо сначала выделить на листе нужную диаграмму.

Так же как и в случае с предыдущим кодом, необходимо сначала выделить на листе нужную диаграмму и запустить код.

Но я прекрасно понимаю, что на листе может быть более одной диаграммы и все их надо вставить на лист. Даже не так: не все, а несколько выделенных. Предыдущий код не сможет этого сделать, т.к. изначально работает только с одной диаграммой и подстроить его под одну-две-три простой правкой двух строк кода не получится. Поэтому я приведу ниже код, который вставляет в письмо все выделенные диаграммы(а перед ними добавит текст):

Все, что требуется, это выделить нужные диаграммы на листе и запустить код.

Читайте также: