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

Добавление таблицы в сообщение

Outlook для Microsoft 365 Outlook 2021 Outlook 2019 Outlook 2016 Outlook 2013 Outlook 2010 Еще…Меньше

Если вы когда-нибудь пытались вручную выровно строки и столбцы текста пробелами, то знаете, насколько это может быть неприятно. Вкладки — это отличное начало, но таблицы по возможности включают привлекательные стили. Это еще более подробное Excel электронных таблиц, которые содержат формулы и вычисления.

Пример таблицы в сообщении электронной почты

  1. Щелкните в том месте сообщения, куда вы хотите вставить таблицу.

  2. На вкладке Вставить нажмите кнопку Таблица.

    Команда вставки таблицы на ленте

  3. Выполните одно из указанных ниже действий.

    • Щелкните сетку таблицы, чтобы настроить количество строк и столбцов в новой пустой таблице.

    • Нажмите кнопку Вставить таблицу, чтобы добавить шаблон базовой таблицы.

    • Нажмите кнопку Нарисовать таблицу, чтобы получить указатель, позволяющий рисовать таблицу, строки и столбцы и изменять размер ячеек таблицы.

    • Щелкните Excel таблицу, чтобы добавить в сообщение таблицу. Это как мини-версия Excel в сообщении, которую можно использовать для добавления формул и выполнения вычислений. Измените размер с помощью точек обработки нижнего и правого краев.

    • Найдите пункт Быстрыетаблицы и щелкните таблицу. Замените содержимое таблицы собственным.

См. также

Преобразование текста в таблицу или таблицы в текст

Нужна дополнительная помощь?

Хитрости »

13 Апрель 2017              37188 просмотров


Про создание писем в Outlook через Visual Basic for Applications(VBA) Excel я уже писал пару статей, в том числе и о том, как вставить одну из стандартных подписей в письмо — Вставить в письмо подпись из Outlook через VBA(по умолчанию при создании писем из VBA подпись не вставляется, даже если это настроено параметрами почты). Но т.к. отправка происходит из Excel, то часто возникает и другой вопрос — как в письмо вставить не просто текст, а целую таблицу? Да еще со всем форматированием ячеек? Если речь о ручной вставке, то тут все просто: скопировали диапазон, перешли в письмо — вставили. Но если попробовать тоже самое кодом (через копировать-вставить) — ничего не получится(у Outlook просто нет метода Paste или что-то вроде того). Можно использовать метод SendKeys, но он весьма нестабилен и я стараюсь его вообще нигде не применять, только в случаях, когда по-другому ну вообще никак:

Sub Send_Mail()
    Dim objOutlookApp As Object, objMail As Object
 
    Application.ScreenUpdating = False
    'копируем выделенную таблицу
    Selection.Copy
    On Error Resume Next
    Set objOutlookApp = CreateObject("Outlook.Application")
    objOutlookApp.Session.Logon
    Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
    On Error GoTo 0
    'создаем сообщение
    With objMail
        .To = "адрес получателя"
        .Subject = "Тема: тест вставки таблицы"
        .BodyFormat = 2  'olFormatHTML - формат HTML
        .Display 'отображаем сообщение
        'передаем управление ОС, чтобы завершились все лишние процессы
        DoEvents
        'посылаем команду нажатия клавиш Ctrl+V для вставки таблицы из буфера обмена
        Application.SendKeys "^v"
    End With
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub

Чем мне не нравится этот метод? Как уже писал — он не очень стабилен и может получиться так, что вставите скопированное не туда или вставка вообще не произойдет.
Если же переносить таблицу кодом вроде такого:
.Body = Range(«A1»).Value & Range(«A2»).Value
то это будут только значения ячеек, но не их форматирование и уж никак не таблица.
Все дело в том, что таблица в теле письма это отдельный объект формата HTML. И при вставке через копировать-вставить руками Excel и Outlook делают за нас всю грязную работу по перекодировке скопированного в нужный формат HTML. А значит и нам надо каким-то образом конвертировать нужные ячейки в этот формат, да еще учесть всё форматирование. К примеру, есть такая таблица:

Пример таблица для вставки в письмо Outlook

рис.1

Теперь эту таблицу надо вставить в письмо вместе с остальным текстом, чтобы было что-то вроде:

Письмо с форматированной таблицей

рис.2

Чтобы конвертировать нужные ячейки в самостоятельную таблицу в формате HTML я использую такую функцию:

Function ConvertRngToHTM(rng As Range)
    Dim fso As Object, ts As Object
    Dim sF As String, resHTM As String
    Dim wbTmp As Workbook
 
    sF = Environ("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
    'переносим указанный диапазон в новую книгу
    rng.Copy
    Set wbTmp = Workbooks.Add(1)
    With wbTmp.Sheets(1)
        'вставляем только ширину столбцов, значения и форматы
        .Cells(1).PasteSpecial xlPasteColumnWidths
        .Cells(1).PasteSpecial xlPasteValues
        .Cells(1).PasteSpecial xlPasteFormats
        .Cells(1).Select
        Application.CutCopyMode = False
        'удаляем все объекты(фигуры, рисунки и пр.)
        '------------------------------------------
        'если рисунки и объекты нужны - удалить этот блок
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
        '------------------------------------------
    End With
    'сохраняем книгу как Веб-страницу(чтобы содержимое конвертировать в HTML-код)
    With wbTmp.PublishObjects.Add( _
         SourceType:=xlSourceRange, Filename:=sF, _
         Sheet:=wbTmp.Sheets(1).Name, Source:=wbTmp.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With
    'открываем созданный файл как текстовый и считываем содержимое
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sF).OpenAsTextStream(1, -2)
    resHTM = ts.ReadAll
    ts.Close
    'выравниваем таблицу по левому краю(если надо оставить по центру - удалить эту строку)
    ConvertRngToHTM = Replace(resHTM, "align=center x:publishsource=", "align=left x:publishsource=")
    'закрываем временную книгу и удаляем
    wbTmp.Close False
    Kill sF
    'очищаем объектные переменные
    Set ts = Nothing: Set fso = Nothing
    Set wbTmp = Nothing
End Function

Все, что остается — это в нужный момент вызвать эту функцию и вставить в нужное место письма.
Например, для конвертации в текст HTML выделенного на листе диапазона необходимо выполнить код:

Dim sTblBody As String
sTblBody = ConvertRngToHTM(Selection)

Чтобы создать письмо в Outlook и вставить туда эту таблицу можно использовать такой код:

Sub Send_Mail()
    Dim objOutlookApp As Object, objMail As Object
 
    Application.ScreenUpdating = False
    On Error Resume Next
    Set objOutlookApp = CreateObject("Outlook.Application")
    objOutlookApp.Session.Logon
    Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
    On Error GoTo 0
    'создаем сообщение
    With objMail
        .To = "адрес получателя"
        .Subject = "Тема: тест вставки таблицы"
        .BodyFormat = 2  'olFormatHTML - формат HTML
        .HTMLBody = ConvertRngToHTM(Selection)
        .Display 'отображаем сообщение
    End With
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub

Более подробно про создание и отправку писем из Excel я писал в этой статье: Как отправить письмо из Excel?
По сути основная задача выполнена, теперь вы сможете вкладывать в сообщение таблицу без потери форматирования.
Если задача поставлена так, что необходимо вставить таблицу не на основании выделенного диапазона(Selection), а на основании конкретного диапазона ячеек на листе(скажем диапазона A20:F27 на листе с именем Лист1), то это должно выглядеть так:

Dim sTblBody As String
sTblBody = ConvertRngToHTM(Worksheets("Лист1").Range("A20:F27"))

Скачать файл:

  Пример вставки таблицы в письмо Outlook.xls (67,5 KiB, 3 451 скачиваний)

В файле-примере, приложенном к статье, более расширенный вариант кода, который оформлен более удобно, там можно задать в ячейках адрес получателя, тему письма и текст письма. Плюс помимо описанного выше добавляет форматирование к письму, проставляет корректные переносы и непосредственно вставляет таблицу в любое место письма.
За форматирование(назначает шрифт Arial, размер 14) отвечает строка:

sBody = "<span style=""font-size: 14px; font-family: Arial"">" & sBody & "</span>"

Полагаю, несложно догадаться где изменить размер шрифта и его имя. Так же можно и иное форматирование применять, если Вам знакомы основы работы с HTML.
Корректные для HTML переносы строк текста

'Переносы строк и шрифт
sBody = Replace(sBody, Chr(10), "<br />")
sBody = Replace(sBody, vbNewLine, "<br />")

Про вставку таблицы следует расписать чуть подробнее. В примере в ячейку B13 записан следующий текст:
Уважаемый клиент!
Только для Вас мы подготовили специальное предложение по товарам, которыми Вы интересовались в нашем Интернет-магазине:
{TABLE}
Будем рады видеть Вас среди наших постоянных клиентов!
(а для постоянных клиентов у нас действуют еще более выгодные условия)
С уважением, Дмитрий
менеджер по работе с постоянными клиентами

красным специально выделен тег {TABLE}. Именно на место этого тега будет вставлена таблица, созданная из указанного диапазона и результат будет как на рис.2(см.выше). Эту метку можно вставлять в любое место и именно туда будет помещена таблица.
В коде диапазон вставляемой таблицы указывается в строке:

Set rDataR = .Range("A15:D18") 'Selection - если надо отправить только выделенные диапазона

Его можно изменить на любой необходимый.
Что важно помнить: если помимо вставки таблицы Вы планируете форматировать письмо другими тегами HTML, то лучше сначала сделать все форматирование и только в самом конце, самым последним шагом, добавлять таблицу в письмо. Иначе разметка таблицы может «поплыть».

Надеюсь теперь Вам не составит труда сделать свои сообщения более красивыми и аккуратными.

Понимаю, что многие захотят сделать из этого массовую рассылку. Для этого придется совместить код из этой статьи с кодом из статьи Как отправить письмо из Excel?. Там есть пример отправки писем через Outlook списку получателей.


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

'---------------------------------------------------------------------------------------
' Author : The_Prist(Щербаков Дмитрий)
'          Профессиональная разработка приложений для MS Office любой сложности
'          Проведение тренингов по MS Excel
'          http://www.excel-vba.ru
' Purpose: функция объединяет значения указанного диапазона ячеек в строку
'          разрывы между столбцами заменяются табуляцией
'          разрывы между строками заменяются переносами на строки
'---------------------------------------------------------------------------------------
Function RangeToTextTable(rng As Range)
    Dim lr As Long, lc As Long, arr
    Dim res As String
 
    arr = rng.Value
    If Not IsArray(arr) Then
        ReDim arr(1 To 1, 1 To 1)
        arr(1, 1) = rng.Value
    End If
    For lr = 1 To UBound(arr, 1)
        For lc = 1 To UBound(arr, 2)
            If lc = 1 Then
                res = res & arr(lr, lc)
            Else
                res = res & vbTab & arr(lr, lc)
            End If
        Next
        res = res & vbNewLine
    Next
    RangeToTextTable = res
End Function

Вставляем значения ячеек при помощи этой функции в письмо:

    'создаем сообщение
    With objMail
        .To = "адрес получателя"
        .Subject = "Тема: тест вставки таблицы"
        '.BodyFormat = 2  'уже не надо, т.к. форматирования нет
        .Body = RangeToTextTable(Selection)
        .Display 'отображаем сообщение
    End With

Здесь следует помнить, что «таблица» после такой вставки будет выглядеть не очень красиво. И речь не о цвете заголовков — при различной длине текста внутри ячеек текст в письме будет сдвигаться:
Письмо без форматирования
чтобы этого как-то избежать, можно чуть модифицировать функцию:

'---------------------------------------------------------------------------------------
' Author : The_Prist(Щербаков Дмитрий)
'          Профессиональная разработка приложений для MS Office любой сложности
'          Проведение тренингов по MS Excel
'          http://www.excel-vba.ru
'          WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
' Purpose: функция объединяет значения указанного диапазона ячеек в строку
'          разрывы между столбцами заменяются табуляцией
'          разрывы между строками заменяются переносами на строки
'---------------------------------------------------------------------------------------
Function RangeToTextTable(rng As Range)
    Dim lr As Long, lc As Long, arr
    Dim res As String, rh()
    Dim lSpaces As Long, s As String
 
    arr = rng.Value
    If Not IsArray(arr) Then
        ReDim arr(1 To 1, 1 To 1)
        arr(1, 1) = rng.Value
    End If
    ReDim rh(1 To UBound(arr, 2))
    For lr = 1 To UBound(arr, 1)
        For lc = 1 To UBound(arr, 2)
            If Len(arr(lr, lc)) > rh(lc) Then
                rh(lc) = Len(arr(lr, lc))
            End If
        Next
    Next
    For lr = 1 To UBound(arr, 1)
        For lc = 1 To UBound(arr, 2)
            s = arr(lr, lc)
            lSpaces = rh(lc) - Len(s)
            If lSpaces > 0 Then
                s = s & Space(lSpaces)
            End If
            If lc = 1 Then
                res = res & s
            Else
                res = res & vbTab & s
            End If
        Next
        res = res & vbNewLine
    Next
    RangeToTextTable = res
End Function

и назначить шрифт для писем по умолчанию Courier New или любой другой мноноширный шрифт. Тогда можно получить примерно такой результат:
Таблица в письме без форматирования моноширным шрифтом
Если использовать не моноширный шрифт, то визуально таблица все равно будет неравной и смысла в модификации функции нет.

Так же см.:
Как отправить письмо из Excel?
Вставить в письмо подпись из Outlook через VBA
Сохранить вложения из Outlook в указанную папку
Как отправить письмо от другой учетной записи Outlook


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

If you want to insert or add a Table in Gmail and Outlook messages, here is how you can do that. It is quite straightforward since you can use Google Sheets or Excel Online to fetch the table from. Here is everything you need to know about inserting tables in Gmail and Outlook messages on the web and Mail for Windows 11/10.

How to add a Table in Gmail and Outlook email messages

Let’s assume that you want to send a list containing some product names and their prices. Adding a table is probably the most efficient way to get the job done. The problem begins when you try to add the table since Gmail doesn’t allow you to do that. On the other hand, Outlook for the web lets you insert the table, but it doesn’t have any option to customize it. That is why you need to check out this article to learn more about various methods to insert a table in your emails.

How to add a Table in Gmail and Outlook using Copy-Paste

Follow these steps to add a Table in Gmail and Outlook using Copy-Paste:

  1. Open Google Sheets on your browser.
  2. Create the table you want to insert in the email.
  3. Copy the entire table to your clipboard.
  4. Open Gmail or Outlook and compose a message.
  5. Press Ctrl+V to paste the table

To learn more about these steps, continue reading.

It is the most common method when you are using Gmail. You can create a table in any spreadsheet maker, such as Excel Online, Google Sheets, or Excel for desktop. For this example, we are about to show you the screenshots of Google Sheets and Gmail. However, you can do the same with any other spreadsheet maker and Outlook also.

To get started, open the official website of Google Sheets, docs.google.com, and create a black spreadsheet. Following that, create a table as per your requirements and copy the entire table to your clipboard.

Next, open Gmail and start composing an email. Select a position where you want to display the table and press Ctrl+V to paste the copied table.

How to add a table in Gmail and Outlook messages

Now you can see the table in your email.

There is a more efficient way to insert a table when you are using Outlook.com. The web version of Outlook allows you to insert a table using the in-built option it includes.

Disadvantage: Outlook lets you edit the table, change the column width, insert or remove rows/columns, etc. However, Gmail doesn’t have any such option.

To insert table in Outlook for web, follow these steps:

  1. Log in to your account on outlook.com.
  2. Click on the New message button to start composing an email.
  3. Click on the Insert table icon in the toolbar.
  4. Select the number of rows and columns.

Let’s check out these steps in detail.

To get started, log in to your user account on the Outlook.com website and click the New message button to start composing a new email.

Following that, find out the Insert table icon in the toolbar and click on it.

How to add a table in Gmail and Outlook messages

Now, you need to select the number of rows and columns of your table.

Following that, you can start entering the values in each cell as per your wish.

Disadvantage: You cannot edit the first row or heading of a table if you insert it using the in-built option in Outlook.

How to add or insert a Table in Mail on Windows 11/10

To add or insert table in Mail on Windows 11/10, follow these steps:

  1. Open the Mail app on your computer.
  2. Start composing a message.
  3. Switch to the Insert tab.
  4. Click on the Table option.

You need to open the Mail app on your computer and start composing a message to get started. When you open the panel to start writing an email, it shows a toolbar on the top. You need to switch to the Insert tab and click on the Table option.

How to add a table in Gmail and Outlook messages

By default, it adds a 3×3 table automatically. If you want to insert more columns or rows, click on the Insert button and choose the option accordingly.

The best thing about this option is that you can customize the table in the way you want. There is almost no limitation in editing the table in the Mail app if you use the in-built option. The second advantage is that you get the same options for Gmail accounts as well.

How do I insert a Table into the body of an email?

To insert a table into the body of an email, you have three options – use the Copy-Paste method, use the in-built Insert table option, and use the Mail app on Windows 11/10. The Copy-Paste method works when you have a dedicated spreadsheet maker.

How do I add Rows to a Table in Gmail?

You cannot add rows to a table in Gmail once it is inserted already. You need to change the table before pasting it in the email body.

How do I edit a Table in Gmail?

It is not possible to edit the header color, insert more rows/columns, etc. However, you can change the value of cells in a table in Gmail. For that, click on the text you want to edit, remove it, and add the new one.

This is how you can add or insert a table in Gmail and Outlook.

Read: How to insert a checkbox in Outlook email and Mail app.

Как сделать почтовую рассылку клиентам из таблицы Excel

Почтовая рассылка клиентам из таблицы Excel

Бывает нужно разослать большое количество писем списку контактов из таблицы в Excel.

Это может быть список потенциальных клиентов с мероприятия, выгрузка контактов из программы (1С, Битрикс24, amoCRM), просто список родственников, которые с нетерпением ждут от вас поздравления с праздником или уникального предложения.

Расскажу, как сделать это просто, быстро и бесплатно. Для решения задачи понадобится Excel, Word и Outlook из пакета Microsoft Office.

Итак, например, есть Excel таблица с данными клиентов (ФИО, компания, E-mail) и мы хотим отправить им персонализированное сообщение о предстоящих скидках.

Таблица Excel

Таблица Excel со списком клиентов

Колонка “Пол” потребуется для определения окончания “уважаемый” или “уважаемая”, ее я вычислил по формуле, если “Отчество” заканчивается на “ч” значит это мужчина, если нет — женщина:

В новом документе Word наберём шаблон текста сообщения, которое будем отправлять. Вместо обращения, имени и названия компании оставим пока пустые места.

Запустим Мастер Слияния: вкладка Рассылки (Mailings), Начать слияние (Start Mail Merge), далее Пошаговый мастер слияния (Step-by-Step Merge Wizard).

Пошаговый мастер слияния

Запуск пошагового мастера слияния

Откроется мастер, состоящий из 6 этапов.

На перовом этапе выберем пункт Электронное сообщение (E-mail), так как хотим отправить наши сообщения по электронной почте.

Выбор типа документа

Выбор типа документа

На втором этапе нужно указать, какой документ будет использоваться в качестве шаблона, выберем Текущий документ (Current document).

Выбор документа

Выбор документа

Третий этап — выбор получателей. Так как список наших клиентов хранится в файле Excel, выбираем пункт Использование списка, жмем Обзор (Browse) и указываем наш файл.

Выбор получателей

Выбор получателей

Откроется окно Получатели слияния, в нем можно выбрать или отменить клиентов для которых делаем рассылку.

Получатели слияния

Выбор получателей рассылки

Четвертый этап — создание сообщения. Тут можно вставить данные из нашего файла Excel в шаблон сообщения, который мы подготовили.

Создание сообщения

Создание сообщения

Вставим Фамилию, Имя, Отчество и название компании в наш шаблон, для этого: установим курсор в текст сообщения куда хотим вставить значение поля Excel, нажмем Другие элементы, в открывшемся окне выберем поле, которое хотим вставить, и так для всех полей.

Вставка поля слияния

Вставка поля

Чтобы правильно указать обращение “уважаемый” для мужчин, и “уважаемая” для женщин создадим правило. Жмём кнопку Правила (Rules) на вкладке Рассылки (Mailings) и выберем пункт IF…THEN…ELSE.

Создание правила

Создание правила

В открывшемся окне укажем правило: если поле “Пол” равно “М” — вставить текст “уважаемый”, в противном случае — вставить текст “уважаемая”.

Настройка правила

Настройка правила

В итоге, после вставки полей должен получиться шаблон похожий на мой (вставленные поля выделил красным цветом).

Готовый шаблон слияния

Готовый шаблон слияния

На пятом этапе можно предварительно просмотреть результаты слияния. Для перехода между письмами служат кнопки со стрелками.

Просмотр сообщений

Предварительный просмотр сообщений

На завершающем 6 этапе нужно выбрать единственный пункт Электронная почта.

Завершение слияния

Завершение слияния

Затем в открывшемся окне указать тему отправляемых писем и выбрать в поле Кому столбец нашей таблицы Excel, в котором содержаться адреса получателей

Запуск рассылки

Запуск рассылки

После нажатия на кнопку ОК, Word автоматически подключится к вашему почтовому клиенту Outlook, поместит все сообщения в папку «Исходящие», после чего письма отправятся получателям.

Если вы хотите проверить письма перед отправкой, есть небольшая хитрость, нужно предварительно перевести Outlook в автономный режим Файл — Автономный режим. Письма останутся в исходящих, пока вы не выйдете из автономного режима и при необходимости вы сможете проверить или внести в них изменения.

На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.

Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.

Как из экселя перенести таблицу в письмо

Если вы когда-нибудь пытались вручную выровно строки и столбцы текста пробелами, то знаете, насколько это может быть неприятно. Вкладки — это отличное начало, но таблицы по возможности включают привлекательные стили. Это еще более подробное Excel электронных таблиц, которые содержат формулы и вычисления.

Пример таблицы в сообщении электронной почты

Щелкните в том месте сообщения, куда вы хотите вставить таблицу.

На вкладке Вставить нажмите кнопку Таблица.

Команда вставки таблицы на ленте

Выполните одно из указанных ниже действий.

Щелкните сетку таблицы, чтобы настроить количество строк и столбцов в новой пустой таблице.

Нажмите кнопку Вставить таблицу, чтобы добавить шаблон базовой таблицы.

Нажмите кнопку Нарисовать таблицу, чтобы получить указатель, позволяющий рисовать таблицу, строки и столбцы и изменять размер ячеек таблицы.

Щелкните Excel таблицу, чтобы добавить в сообщение таблицу. Это как мини-версия Excel в сообщении, которую можно использовать для добавления формул и выполнения вычислений. Измените размер с помощью точек обработки нижнего и правого краев.

Найдите пункт Быстрыетаблицы и щелкните таблицу. Замените содержимое таблицы собственным.

Как из экселя перенести таблицу в письмо

Нужна помощь, VBA для копирования таблицы из почты Outlook с определенной темой, чтобы преуспеть в определенном месте

Я получаю письмо с темой «Состояние резервного копирования сегодня» с таблицей из 2 столбцов и 6 строк в папке «Входящие». Пытаюсь написать код, чтобы открыть почту, скопировать таблицу и вставить ее в excel в определенное место.

Проблема: код работает нормально, ошибок нет. Почта открывается, а также открывается файл excel. Но таблица не копируется. Пожалуйста, помогите в этом.

Вставить таблицу Excel в Outlook — это шаг, который нужно выполнить, если мы хотим обмениваться информацией через эту платформу, есть другие способы поделиться таблицей Excel для электронной почты в Outlook, мы вскоре объясним их, а также вставим в сообщение.

Если вы хотите добавить, вставить или вставить таблицу Excel прямо в сообщение электронной почты Outlook, здесь мы предоставим вам шаги. может сделать это без осложнений . Мы также научим вас другим способам совместного использования таблицы Excel через Outlook.

Когда мы работаем в электронной таблице Excel, мы обычно используем таблицы, информация, собранная в Таблицы Excel понимать простые в выполнении расчеты. Если мы хотим поделиться этой информацией, есть несколько способов сделать это.

Один из способов поделиться информацией в таблице — это добавить в электронную почту Outlook, и это оказывается самым простым способом поделиться ими. Однако, когда мы не знаем, как применить процесс добавления или вставки массива, все усложняется.

Что мы собираемся сделать, чтобы вставить таблицу Excel в Outlook, очень просто: первое, что нужно сделать, это ввести наш рабочий лист Excel; щелкнув левой кнопкой мыши вниз, мы выберут все квадраты, соответствующие таблице.

Затем мы щелкнем правой кнопкой мыши по этому выбору и выберем возможность скопировать ; на этом этапе вы должны перейти к электронной почте и открыть новое сообщение для создания. 

Следующее, что нужно сделать, это щелкнуть правой кнопкой мыши сообщение Outlook, сначала указав адрес электронной почты получателя и тему, а затем нажмите на вставку . Таблица будет автоматически вставлена, и вы можете отправить ее, чтобы другой пользователь получил ее как сообщение.

Какие еще способы поделиться файлом Excel в Outlook?

Способ, который мы объясняли ранее, относится к простейшему механизму обмена информацией в Outlook, но есть и другие. способы отправить документ или таблицу Excel через эту платформу без необходимости вставлять таблицу Excel в Outlook.

Помня, что Outlook имеет связи с различными типами программного обеспечения Microsoft Office, мы можем сказать, что процесс совместное использование файла Excel через Outlook довольно просто.

Один из способов — отправить документ или таблицу Excel как вложение в Outlook , для чего требуется только файл заранее зарегистрирован на отправляющем устройстве. Существует также возможность отправки в формате PDF, когда он отправляется в виде файла, который нельзя редактировать из Outlook или другого почтового носителя.

А с другой стороны, есть возможность отправить как XPS по электронной почтепочта , способ, позволяющий сохранить дизайн, формат и изображения при отправке. Могут быть и другие способы отправки документа Excel через Outlook, но это метод по умолчанию, установленный Microsoft Office.

Что делать, если я не могу вставить таблицу Excel по электронной почте из Outlook?

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

Процесс вставка или добавление таблицы Excel в сообщении Outlook не работает в некоторых случаях, и содержащаяся в нем информация может не «перевариваться» форматом сообщения. Это также происходит с некоторыми изображениями, когда они вставлен в тело письма в Outlook.

Однако это не значит, что вы не можете этого сделать. Другой вариант вставки таблицы Excel в Outlook можно сделать с помощью ссылок между программами Microsoft Office.

Вы можете попробовать связать таблицу Excel с Word , или вы также можете сделать это с помощью другой носитель, такой как Power Point. Один или оба из этих пунктов могут помочь .

Последнее делается для того, чтобы скопировать рассматриваемую таблицу. в этих форматах и вставьте их в сообщение электронной почты Outlook.

Cправка — Gmail

Войти

Справка Google

  • Справочный центр
  • Сообщество
  • Gmail
  • Политика конфиденциальности
  • Условия предоставления услуг
  • Отправить отзыв

Тема отзыва

Информация в текущем разделе Справочного центра

Общие впечатления о Справочном центре Google

  • Справочный центр
  • Сообщество
  • Раньше не работали с интегрированным сервисом Gmail?

Gmail

Организуйте сообщения в чат-группах. Узнайте, как использовать цепочки.

Отправка книги или листа по электронной почте

Если вам часто приходится рассылать определенные книги или листы по электронной почте, то вы должны были заметить, что процедуру эту быстрой не назовешь. Если делать ее «классически», то надо:

  • открыть почтовую программу (например Outlook)
  • создать новое сообщение
  • вбить туда адрес, тему и текст
  • прикрепить к сообщению файл (не забыть!)
  • нажать кнопку Отправить

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

Способ 1. Встроенная отправка

Если у вас еще старый добрый Excel 2003, то все просто. Открываете нужную книгу/лист и выбираете в меню Файл — Отправить — Сообщение (File — Send To — Mail Recipient). Откроется окошко, в котором можно выбрать один из двух вариантов отправки:

sendmail1.gif

В первом случае текущая книга будет добавлена в сообщение как вложение, во втором — содержимое текущего листа попадет прямо в текст сообщения как текстовая таблица (без формул).

Кроме этого в меню Файл — Отправить (File — Send To) есть еще несколько более экзотических вариантов отправки:

 sendmail2.gif

  • Сообщение (для ознакомления) (Mail Recipient for Review) — отправляется вся книга целиком и при этом для нее включается отслеживание изменений, т.е. начинает явно фиксироваться — кто, когда и в каких ячейках какие изменения производил. Отобразить внесенные изменения потом можно в меню Сервис — Исправления — Выделить исправления (Tools — Track changes — Highlight changes) или на вкладке Рецензирование — Исправления (Reveiw — Track Changes) Выглядеть это будет примерно так:

    sendmail3.gif

    Цветные рамочки помечают изменения, внесенные в документ (для каждого пользователя — свой цвет). При наведении мыши всплывает похожее на примечание окошко с подробным описанием кто, что и когда изменил в этой ячейке. Весьма удобно для рецензирования документов, когда, например, вы правите отчет своих подчиненных или шеф правит ваш.

  • По маршруту (Routing Recipient) — сообщение, куда будет вложена ваша книга, отправится по цепочке получателей, каждый из которых автоматически будет пересылать его дальше, как эстафетную палочку. При желании можно задать, чтобы в конце цепочки сообщение вернулось к вам обратно. Можно включить режим отслеживания изменений, чтобы видеть правки, внесенный каждым человеком в цепочке.

В новых Excel 2007/2010 ситуация немного другая. В этих версиях для отправки книги по почте нужно выбрать кнопку Офис (Office Button) или вкладку Файл (File) и команду Отправить (Send). Далее, пользователю предлагается набор вариантов отправки:

sendmail5.gif

Обратите внимание на то, что в новых версиях исчезла возможность отправки отдельного листа книги, вставленного в тело письма — как это было в Excel 2003 и старше. Осталась только возможность отправить весь файл целиком. Зато появилась полезная возможность отправлять в известном формате PDF и менее известном XPS (аналог PDF, но не требует Acrobat Reader для чтения — открывается прямо в Internet Explorer). Команду отправки книги для ознакомления можно вытащить как дополнительную кнопку на панель быстрого доступа через Файл — Параметры — Панель быстрого доступа — Все команды — Отправить на проверку (File — Options — Quick Access Toolbar — All Comands — Send for Review).

Способ 2. Простые макросы для отправки

Отправка макросом гораздо проще. Открываем редактор Visual Basic через меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor), вставляем новый модуль в меню Insert — Module и копируем туда текст этих двух макросов:

Sub SendWorkbook()
    ActiveWorkbook.SendMail Recipients:="vasya@pupkin.com", Subject:="Лови файлик"
End Sub

Sub SendSheet()
    ThisWorkbook.Sheets("Лист1").Copy
    With ActiveWorkbook
        .SendMail Recipients:="vasya@pupkin.com", Subject:="Лови файлик"
        .Close SaveChanges:=False
    End With
End Sub

После этого скопированные макросы можно запустить в меню Сервис — Макрос — Макросы (Tools — Macro — Macros). SendWorkbook отправляет на заданный адрес всю текущую книгу, а SendSheet — Лист1 как вложение.

При запуске макроса Excel будет обращаться к Outlook, что вызовет появление вот такого сообщения безопасности на экране:

sendmail4.gif

Дождитесь, пока кнопка Разрешить станет активной и нажмите ее, чтобы подтвердить свою отправку. После этого созданные автоматически сообщения будут помещены в папку Исходящие и отправятся получателям при первом запуске Outlook или, если он у вас запущен, непосредственно сразу же.

Способ 3. Универсальный макрос

А если хочется отправлять не текущую книгу, а любой другой файл? И текст сообщения тоже неплохо было бы задать! Предыдущие макросы здесь не помогут, поскольку ограничены возможностями самого Excel, но можно создать макрос, который будет из Excel’я управлять Outlook’ом — создавать и заполнять окно нового сообщения и отправлять его. Макрос выглядит так:

Sub SendMail()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range
    
    Application.ScreenUpdating = False
    Set OutApp = CreateObject("Outlook.Application")   'запускаем Outlook в скрытом режиме
    OutApp.Session.Logon      
    On Error GoTo cleanup  'если не запустился - выходим 
    Set OutMail = OutApp.CreateItem(0)   'создаем новое сообщение
    On Error Resume Next
    'заполняем поля сообщения
    With OutMail
        .To = Range("A1").Value
        .Subject = Range("A2").Value
        .Body = Range("A3").Value
        .Attachments.Add Range("A4").Value
        'команду Send можно заменить на Display, чтобы посмотреть сообщение перед отправкой 
        .Send
    End With

    On Error GoTo 0
    Set OutMail = Nothing

cleanup:
    Set OutApp = Nothing
    Application.ScreenUpdating = True
End Sub

Адрес, тема, текст сообщения и путь к вложенному файлу должны быть в ячейках A1:A4 текущего листа.

Ссылки по теме

  • Групповая рассылка почтовых сообщений из Excel с помощью надстройки PLEX
  • Макросы для отправки почты из Excel через Lotus Notes от Dennis Wallentin
  • Что такое макросы, куда вставлять код макроса на Visual Basic
  • Создание писем с помощью функции ГИПЕРССЫЛКА
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
Sub ExcelToWordToOutlook()
 ' копирует таблицу Excel и вставляет её как текст или как картинку bitmap сначала в Word, а потом в тело письма Outlook
 
          Dim thistopic As String
 
        ActiveWorkbook.Activate
 
        Sheets("1").Select
 
        thistopic = Range("C2").Value
 
        Application.Run ("textcol5")
 ' это просто было выделение цветом разных подслов в тексте - делал через простой macrorecorder
 
     Sheets("1").Activate
 
    Dim ThisFiled As String
 
   ' Windows("Master Daily Sales Report h.xlsx").Activate
 
   
 
    ThisFiled = Range("N3").Value
 
    Dim wdApp As Object, wdDoc As Object
 
    Dim oOutlook As Object, oMessage As Object
 
    Set oOutlook = CreateObject("Outlook.Application")
 
    Set oMessage = oOutlook.CreateItem(0)
 
    oMessage.Attachments.Add (ThisFiled)
 
    oMessage.Display
 
 
            newHour = Hour(Now())
 
newMinute = Minute(Now())
 
newSecond = Second(Now()) + 2
 
waitTime = TimeSerial(newHour, newMinute, newSecond)
 
Application.Wait waitTime
 ' здесь сделал "ожидание 2 секунды", чтобы успело создаться окно нового письма
 
 
    Set wdApp = CreateObject("Word.Application")
 
    wdApp.Visible = True
 
    Set wdDoc = wdApp.Documents.Add
 
    wdDoc.PageSetup.Orientation = wdOrientLandscape
 
 
 
 
 'далее как раз просто копируется таблица и вставляется то как текст, то как bitmap, между ними делаю новый абзац, т.е. Typeparagraph
 
    With wdApp
 
                ActiveWorkbook.Activate
 
        Sheets("1").Range("B4").Copy
 
                .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
       
 
    ''             ActiveWorkbook.Activate
 
    ''    Sheets("1").Range("B5").Copy 
 
                .Activate
 
        With .Selection
 
           '' .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
      
 
        
 
        
 
        
 
                 ActiveWorkbook.Activate
 
        Sheets("1").Cells(6, 2).Copy 
 
        'Selection.Copy
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
       
 
        
 
                 ActiveWorkbook.Activate
 
        Sheets("1").Cells(7, 2).Copy 
 
        'Selection.Copy
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
       
 
   
 
          ActiveWorkbook.Activate
 
        Sheets("1").Range("a9:z25").CopyPicture Appearance:=xlScreen, Format:=xlBitmap
 
        .Activate
 
        With .Selection
 
            .Paste
 
        End With
 
 
 
 
' здесь думал сначала просто все картинки растянуть в 1.5 раза, но потом нашёл как растянуть до масштаба 100%
 
  '  With ActiveDocument.Shapes(1) 
 
  '      .LockAspectRatio = 1   
 
       ' .Height = .Height * 1.5 
 
        '.Width = .Width * 1.5 
 
      '  .Size = 1
 
       ' .LockAspectRatio = msoTrue 
 
'    End With
 
 
 
 
'    With Selection.ShapeRange(1) 
 
'        .LockAspectRatio = msoFalse
 
'        .Height = .Height * 1.5
 
'       .Width = .Width * 1.5
 
'        .LockAspectRatio = msoTrue
 
'   End With
 
 
 
 
        
 
                ActiveWorkbook.Activate
 
        Sheets("Progress").Range("B500:B500").Copy 
       'это как помню просто пустая ячейка, как бы делал вставку пустой строки между пунктами, т.к. .typeparagraph делал слишком большой отступ по высоте
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
   
 
 
                ActiveWorkbook.Activate
 
        Sheets("2").Range("B409").Copy 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
          '  .TypeParagraph
 
        End With
 
   
 
    
 
                    ActiveWorkbook.Activate
 
        Sheets("2").Range("B410").Copy 
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
   
 
    
 
        
 
        ActiveWorkbook.Activate
 
        Sheets("2").Range("a3:An408").CopyPicture Appearance:=xlScreen, Format:=xlBitmap
 
        .Activate
 
        With .Selection
 
            .Paste
 
        End With
 
       
 
                ActiveWorkbook.Activate
 
        Sheets("Progress").Range("B500:B500").Copy 
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
 
 
                ActiveWorkbook.Activate
 
        Sheets("Progress").Range("B500:B500").Copy 
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
 
 
 
 
        ActiveWorkbook.Activate
 
        Sheets("2").Shapes("markcolor").CopyPicture Appearance:=xlScreen, Format:=xlBitmap
        ' markcolor это было название картинки внутри excel-файла ежедневного отчёта, она объясняла что означали красный желтый и зелёный цвета кружков у %ов выполнения - её вставлял в текст письма, т.к. в таблице были эти самые кружки рядом с %ами прогресса продаж
 
        .Activate
 
        With .Selection
 
            .Paste
 
       
 
        End With
 
 
 
 
 
       ''         ActiveWorkbook.Activate
 
       '' Sheets("Progress").Range("B370:B370").Copy 
 
        .Activate
 
        With .Selection
 
            '.PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
 
 
 
 
        .Activate
 
        With .Selection
 
            '.PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
 
 
 
 
       
 
                  ActiveWorkbook.Activate
 
        Sheets("3").Range("B409").Copy 
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
     
 
        
 
        ActiveWorkbook.Activate
 
        Sheets("3").Range("a1:Ae407").CopyPicture Appearance:=xlScreen, Format:=xlBitmap
 
        .Activate
 
        With .Selection
 
            .Paste
 
       
 
        End With
 
       
 
                ActiveWorkbook.Activate
 
        Sheets("Progress").Range("B500:B500").Copy 
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
 
 
 
 
                ActiveWorkbook.Activate
 
        Sheets("4").Range("B55").Copy 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
 
 
 
 
       
 
        ActiveWorkbook.Activate
 
        Sheets("4").Range("a1:Ae52").CopyPicture Appearance:=xlScreen, Format:=xlBitmap
 
        .Activate
 
        With .Selection
 
            .Paste
 
       
 
        End With
 
       
 
                ActiveWorkbook.Activate
 
        Sheets("Progress").Range("B500:B500").Copy 
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
 
 
 
 
                ActiveWorkbook.Activate
 
        Sheets("5").Range("B20").Copy 
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
 
 
 
 
       
 
        ActiveWorkbook.Activate
 
        Sheets("5").Range("a1:p18").CopyPicture Appearance:=xlScreen, Format:=xlBitmap
 
        .Activate
 
        With .Selection
 
            .Paste
 
       
 
        End With
 
       
 
                ActiveWorkbook.Activate
 
        Sheets("Progress").Range("B371:B371").Copy 
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
 
 
       
 
                 ActiveWorkbook.Activate
 
        Sheets("6").Range("B24").Copy 
 
        .Activate
 
        With .Selection
 
            .PasteExcelTable False, False, False
 
            '.Collapse Direction:=0 'wdCollapseEnd
 
            .TypeParagraph
 
        End With
 
      
 
        
 
        
 
  '      ActiveWorkbook.Activate
 
    '    Sheets("2").Range("a3:Am369").CopyPicture Appearance:=xlScreen, Format:=xlBitmap
 
   '     .Activate
 
   '     With .Selection
 
   '         .Paste
 
  '      End With
 
       
 
        
 
        
 
        
 
    
 
     ActiveWorkbook.Activate
 
        ActiveWorkbook.Activate
 
        Sheets("6").Range("a1:j22").CopyPicture Appearance:=xlScreen, Format:=xlBitmap
 
        .Activate
 
        With .Selection
 
            .Paste
 
         '   .WholeStory
 
          '  .Copy
 
        End With
 
       
 
' не помню почему, но почему-то 2 раза нужно было прогонять растяжение до 100%, чтобы точно все картинки были растянуты
 
      On Error GoTo Errlab1
 
       
 
        .Activate
 
       '  Dim PercentSize As Integer
 
        Dim oIshp As InlineShape
 
        Dim oshp As Shape
 
           For Each oIshp In ActiveDocument.InlineShapes
 
           With oIshp
 
           .ScaleHeight = 100
 
           .ScaleWidth = 100
 
           End With
 
           Next oIshp
 
       
 
        
 
Errlab1:
 
       
 
        
 
          .Activate
 
       '  Dim PercentSize As Integer
 
        Dim oIshp1 As InlineShape
 
       ' Dim oshp As Shape
 
           For Each oIshp1 In ActiveDocument.InlineShapes
 
           With oIshp1
 
           .ScaleHeight = 100
 
           .ScaleWidth = 100
 
           End With
 
           Next oIshp1
 
     
 
        
 
        
 
        
 
        
 
        
 
        
 
        .Activate
 
          
 
        For Each oshp In ActiveDocument.Shapes
 
        With oshp
 
        .ScaleHeight Factor:=(100 / 100), RelativeToOriginalSize:=msoCTrue
 
        .ScaleWidth Factor:=(100 / 100), RelativeToOriginalSize:=msoCTrue
 
        End With
 
        Next oshp
 
          
 
        
 
          .Activate
 
        With .Selection
 
          '  .Paste
 
            .WholeStory
 
            .Copy
 
        End With
 
        
 
        
 
        
 
    End With
 
   
    
 
    With oMessage
 
          '  .Attachments.Add ("D:AutoEm201402Daily_Sales_Progress_Report_20140312.xlsx ")
 
 
 
        .To = "name@bbbr.ru"
 
        .Subject = thistopic
 
    ''    .BodyFormat = 3 ' olFormatRichText
 
       ' .Body = ""
 
        '.Attachments.Add ("D:AutoEm201402" & ThisFiled & ".xlsx")
 
       
 
        .Display
 
       
 
        SendKeys "{TAB}", True
 
        SendKeys "{TAB}", True
 
        SendKeys "{TAB}", True
 
        SendKeys "{TAB}", True
 
       
 
        SendKeys "^v", True
 
        .Display
 
    End With
 
   
 
 
 
   
 
    Set oMessage = Nothing
 
    Set oOutlook = Nothing
 
End Sub

Понравилась статья? Поделить с друзьями:
  • Как вставить excel в ревит
  • Как вставить excel в word в виде значка
  • Как вставить excel в powerpoint в виде таблицы
  • Как вставить eps в word
  • Как вставить enter в word