Как написать сообщение в excel

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

Простое форматирование: изменение направления, цвета и размера

Имея конкретную надпись или короткий текст, можно поиграть с его настройками в Excel. Для этого используйте некоторые инструменты, следуя инструкции ниже.

  1. Открываем Excel и проводим вставку текста, если он еще не прописан в ячейках. Далее переходим на вкладку «Вставка» и в нужной нам ячейке кликаем правой кнопкой мыши один раз. Перед вами всплывает меню в виде списка. Здесь выбираете пункт «Специальная вставка».

№ 1.png

  1. Открывается следующее окно, где нажимаем «Вставить как» и выбраем «Текст». Затем нажимаете кнопку «ОК», чтобы выбранные действия сохранились. Как мы видим текст успешно перенесен в выбранную ячейку.

№ 2.png

  1. Теперь попробуем преобразовать этот текст в декоративный и сменить его направление. Для этого переходим снова во вкладку «Вставка», копируем исходный текст из ячейки и нажимаем на кнопку «Надпись».

№ 3.png

  1. Выбираем нужное место на листе и кликаем мышью. Перед вами открывается небольшое окошко, в которое вставляем скопированный текст путем нажатия CRTL+V. Здесь вы можете увеличить масштаб заданной рамки или сделать текст перевернутым при помощи соответствующих инструментов.

№ 4.png

  1. Мы можем сменить структуру надписи и ее текст. Для этого перейдем в активную вкладку «Формат», выберем блок «Стили WordArt», после чего кликнем на «Контур текста». Здесь выберете нужный оттенок из существующей палитры.

№ 5.png

Используем мастер форматирования

  1. Чтобы приступить к смене направления текста, необходимо сделать клик правой кнопкой мыши на объекте со вставленной надписью. Перед вами откроется меню, в котором, выберите пункт исходя из требований: или «Формат фигуры», или «Размер и свойства».

№ 6.png

  1. Перед вами справа откроется диалоговое окно мастера, в котором собраны самые популярные утилиты для работы со вставленным текстом и фигурами. Здесь можно выбрать для надписей различные стили шрифтов, задать направление и объем.

№ 7.png

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

Как перенести текст в Эксель

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

  1. Выделим наш текст. Для этого зайдите в строку формул и протяните мышью от начала до конца. Или же сделайте это непосредственно, где размещается запись. Если не отображаются кнопки инструментов, значит просто нажмите на ячейку, в которой начинается текст.

№ 8.png

  1. После чего переходите на вкладку «Главная» и нажимайте на кнопку «Перенести текст». Теперь вся ваша запись отображается в формате с множеством строчек или в виде столбика.

№ 9.png

Важно!

Также вы можете задать нужное количество строк, на которые должен распределяться ваш текст. Для этого в ячейке с фразой установите курсор мыши так, чтобы он был после последнего слова первой строки, затем нажмите клавишу ALT+Enter. Текст автоматически перенесется в столбик.

Также работа с текстом осуществляется посредством специальной функции — читайте подробнее в Справочнике Студворк.

Тест по теме «Как работать с текстом в Excel: основные положения и инструкции»

Содержание

  1. Как в офисе.
  2. Ввод текста
  3. Редактирование текста в ячейке
  4. Способ первый
  5. Способ второй
  6. Автозаполнение ячеек
  7. Как писать в excel – Как писать текст в Excel
  8. Как писать текст в Excel
  9. Написание записи вертикально
  10. Способ 1: выравнивание через контекстное меню
  11. Способ 2: действия на ленте
  12. Эксель формулы, как написать, примеры
  13. Как в excel написать формулу?
  14. Формулы в Эксель — Примеры
  15. Как написать формулу в экселе

Как в офисе.

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

Ввод текста

Ввод текста (числа или формулы) осуществляется довольно просто.

  1. Выделите ячейку, в которую нужно ввести текст.
  2. Введите нужный текст.
  3. Нажмите клавишу Enter. Текст зафиксируется в ячейке, а фокус выделения перейдет на ячейку, расположенную ниже (рис. 5.6).

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

Если выделить ячейку с текстом и начать вводить новый, предыдущий текст из ячейки будет удален. Чтобы освоить навыки ввода текста в ячейки, создайте таблицу, приведенную на рис. 5.7. Также измените ширину столбцов, чтобы текст полностью помещался в ячейках.

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

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

  1. Выделите одну или несколько ячеек, для которых нужно включить режим переноса текста. Также вы можете выделить сразу всю строку или весь столбец листа.
  2. Щелкните правой кнопкой мыши внутри выделенной ячейки или диапазона.
  3. В появившемся контекстном меню выберите команду Формат ячеек. Появится одноименное диалоговое окно.
  4. В диалоговом окне Формат ячеек перейдите на вкладку Выравнивание.
  5. Установите флажок Переносить по словам.
  6. Нажмите кнопку ОК, чтобы применить изменения.

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

Редактирование текста в ячейке

Текст в ячейке можно отредактировать (изменить) двумя способами: непосредственно в ячейке или в строке формул.

Способ первый

  1. Дважды щелкните мышью по ячейке, в которой нужно отредактировать текст. В ней появится текстовый курсор.
  2. Используя те же методы редактирования, что и в программе Word, измените текст (можно использовать методы выделения текста, клавиши Delete и BackSpace).
  3. Нажмите клавишу Enter или щелкните по любой другой ячейке, чтобы применить изменения.

Способ второй

  1. Щелкните мышью по ячейке с текстом. Текст, содержащийся в ячейке, отобразится в строке формул.
  2. Используя обычные методы редактирования, измените текст в строке формул.
  3. Нажмите клавишу Enter или щелкните по любой другой ячейке, чтобы применить изменения.

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

Автозаполнение ячеек

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

  1. Введите в ячейку A1 слово Понедельник.
  2. Нажмите клавишу Enter, чтобы завершить ввод. Фокус выделения перейдет на ячейку A2.
  3. Выделите ячейку A1.
  4. Установите указатель мыши на маркер в правом нижнем углу рамки выделения так, чтобы указатель принял вид значка «плюс».
  5. Нажав и удерживая кнопку мыши, перетащите указатель вниз, пока в рамку выделения не попадет диапазон, включающий ячейку A7, после чего отпустите кнопку мыши. Ячейки A1:A7 автоматически будут заполнены названиями дней недели в правильном порядке (рис. 5.8).

Если распространить автозаполнение на нижележащие ячейки, то есть, на ячейки A8, A9, A10 и т. д., начнется формирование новой недели, то есть, в ячейке A8 появится текст Понедельник, в ячейке A9 — Вторник и т. д. Автозаполнение выполняется с указанного в первой ячейке значения. Так, например, если в первой ячейке мы укажем не Понедельник, а Суббота, то в следующих ячейках автоматически появятся дни, идущие по порядку (Воскресенье, Понедельник, Вторник и т. д.).

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

  1. Очистите ячейки на листе. Напомним, для этого нужно выделить ячейки и нажать клавишу Delete.
  2. Введите в ячейку A1 цифру 1.
  3. Введите в ячейку A2 цифру 2.
  4. Выделите ячейки A1 и A2.
  5. Установите указатель мыши на маркер в правом нижнем углу рамки выделения так, чтобы указатель принял вид значка «плюс».
  6. Нажав и удерживая кнопку мыши, перетащите указатель вниз, выделив несколько расположенных ниже ячеек.
  7. В выделенных ячейках появятся числовые значения, следующие по порядку (рис. 5.9).

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

  1. Очистите ячейки на листе. Напомним, для этого нужно выделить ячейки и нажать клавишу Delete.
  2. Введите в ячейку A1 цифру 3.
  3. Введите в ячейку A2 цифру 9.
  4. Выделите ячейки A1 и A2.
  5. Установите указатель мыши на маркер в правом нижнем углу рамки выделения так, чтобы указатель принял вид значка «плюс».
  6. Нажав и удерживая кнопку мыши, перетащите указатель вниз, выделив несколько расположенных ниже ячеек.
  7. В выделенных ячейках появятся числовые значения (рис. 5.10).

В данном случае на основе первых двух чисел программа распознала арифметическую прогрессию, где каждое следующее число больше предыдущего на 6, и продолжила рад чисел (15, 21, 27, 33. ).

Программа Excel способна распознавать зависимость также в датах, днях недели и месяцах. Попробуйте сами ввести в первые ячейки дни Понедельник и Среда, а затем выполнить операцию автозаполнения. Вы увидите, что ряд будет продолжен «через день» (Пятница, Воскресенье, Вторник, Четверг, Суббота, Понедельник. ).

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

Источник

Как писать в excel – Как писать текст в Excel

Как писать текст в Excel

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

Урок: Как писать вертикально в Microsoft Word

Написание записи вертикально

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

Способ 1: выравнивание через контекстное меню

Чаще всего пользователи предпочитают включать вертикальное написание текста при помощи выравнивания в окне «Формат ячеек», куда можно перейти через контекстное меню.

  1. Кликаем правой кнопкой мыши по ячейке, где содержится запись, которую мы должны перевести в вертикальное положение. В открывшемся контекстном меню выбираем пункт «Формат ячеек».
  2. Открывается окно «Формат ячеек». Переходим во вкладку «Выравнивание». В правой части открытого окна имеется блок настроек «Ориентация». В поле «Градусов» по умолчанию установлено значение «0». Это означает горизонтальное направление текста в ячейках. Вбиваем в это поле с помощью клавиатуры значение «90».

Также можно поступить несколько по-другому. В блоке «Текст» имеется слово «Надпись». Кликаем по нему, зажимаем левую кнопку мыши и тянем вверх до тех пор, пока слово не примет вертикальное положение. Затем отпускаем кнопку мыши.

Как видим, после данных действий, запись в выделенной ячейке стала вертикальной.

Способ 2: действия на ленте

Ещё проще сделать текст вертикальным — это воспользоваться специальной кнопкой на ленте, о которой большинство пользователей знает ещё меньше, чем об окне форматирования.

  1. Выделяем ячейку или диапазон, где планируем размещать информацию.
  2. Переходим во вкладку «Главная», если на данный момент находимся в другой вкладке. На ленте в блоке инструментов «Выравнивание» жмем на кнопку «Ориентация». В открывшемся списке выбираем пункт «Повернуть текст вверх».

После этих действий текст в выбранной ячейке или диапазоне отобразится вертикально.

Как видим, этот способ даже удобнее предыдущего, но, тем не менее, используется реже. Кому же все-таки больше нравится выполнять данную процедуру через окно форматирования, то в его соответствующую вкладку можно перейти и с ленты. Для этого, находясь во вкладке «Главная», достаточно нажать на пиктограмму в виде наклонной стрелки, которая размещена в нижнем правом углу группы инструментов «Выравнивание».

После этого будет открыто окно «Формат ячеек» и все дальнейшие действия пользователя должны быть в точности такими же, как и в первом способе. То есть, нужно будет производить манипуляции с инструментами в блоке «Ориентация» во вкладке «Выравнивание».

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

После этих действий текст займет соответствующее положение.

Урок: Форматирование таблиц в Excel

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

Эксель формулы, как написать, примеры

Эксель не зря является любимчиком миллионов пользователей: от студентов до ведущих специалистов и бизнесменов. Его способности в работе с цифровыми данными просто огромны. Большая часть его возможностей основана на использовании формул и функций, применяющихся для расчетов. Итак, эксель формулы, как их записывать?

Как в excel написать формулу?

Ввод формулы начинается всегда со знака «равно» =

Затем Вы пишете свою формулу, с использованием:

  • адресов ячеек,
  • знаков + (плюс), — (минус), * (умножить), / (разделить),
  • скобок,
  • запятых
  • двоеточий.

Вы говорите Экселю, что например, нужно сложить цифры в ячейке А1 и С1, и затем из этой суммы отнять число из ячейки Н1. Для этого Вы пишете в ячейке, в которой Вам нужен результат =A1+C1-h2 и нажимаете enter.

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

Т.е., если говорить о примере выше — поставили знак «=», щелкнули ячейку А1, поставили знак «+», щелкнули ячейку С1, поставили знак «-«, щелкнули ячейку Н1, нажали enter.

Если Вы внесете изменения в таблицу, например, измените число, участвующее в расчетах — формула будет пересчитана!

Частые ошибки при написании формул в Экселе:

    неправильный ввод чисел с дробной частью (в зависимости от версии Эксель разделитель целой и дробной частей может быть либо запятая либо точка! Как правило, в большинстве случаев используется запятая, проверяйте с помощью установки числовых или денежных форматов со знаками после запятой)

Самый простой пример формулы: сумма двух ячеек (A2 и B2)

Как в Excel написать формулу

Обратите внимание, что в самой ячейке мы видим результат (число), а в строке формул у нас осталась формула, ее можно редактировать или скопировать.

Формулы в Эксель — Примеры

На картинке Вы можете увидеть различные примеры написания самых простых формул в табличках

Формулы в Эксель с примерами

И небольшой видеоурок о том, как просто и быстро создать формулу в Excel

Если у Вас остались вопросы, Вы всегда можете задать их в комментариях:)

Как написать формулу в экселе

Нужно запомнить: вне зависимости от задачи все формулы начинаются со знака «=».

Сумма ячеек в экселе

Пожалуй самая востребованная формула. Пример простого написания формулы: =A1+B1

Давайте разберем ее. Вы уже наверное знаете, что таблица делится на столбцы, строки и ячейки. Столбцы маркируются с помощью букв «A, B, C» и т.д. Для строк используются цифры «1, 2, 3…».

Для определения ячейки используется комбинация из буквы и цифры, что соответствует столбцу и номеру строки в нем. Таким образом первая ячейка будет иметь индекс «А1». Ячейка ниже первой будет иметь обозначение «А2», так как находится в столбце «А» и во второй строке.

Давайте проверим как Вы восприняли данную информацию. Какой индекс будет иметь ячейка, которая находится справа от ячейки «А1» и расположена с ней в одной строке? Правильно! Эта ячейка будет иметь обозначение «B1», так как находится в столбце «В» и в первой строке.

Давайте вернемся к нашей формуле

Сумма двух ячеек в Exel

Данная формура суммирует значение двух ячеек. В нашем случае это ячейки «А1» и «В1». Результат выводится в ту ячейку где Вы прописали формулу. Принцип я думаю понятен. Теперь покажу как это сделать на практике.

  1. Дважды кликаем по ячейке в которой будем писать формулу и пишем знак «=».
  2. Далее кликаем на первую ячейку из тех, которые нужно суммировать и пишем знак «+».
  3. Теперь кликните на вторую ячейку и нажмите «Enter».
  4. Вот и все. Попробуйте изменить значение в одной из ячеек. Вы увидите как изменится сумма значений. Теперь давайте разберем как суммировать более двух ячеек. Принцип тот же. Пишем знак «=» и кликаем по первой ячейке. Далее пишем «+» и жмем по второй ячейке, после снова пишем «+» и жмем по третьей ячейке и так далее.
  5. Если все ячейки, которые необходимо суммировать, не разрываются другими ячейками задать формулу можно гораздо проще. Пропишите знак «=» и выбелите нужные ячейки.
  6. После нажмите «Enter». Формула выдаст сумму всех выделенных ячеек.

С суммой ячеек разобрались. Двигаемся далее.

Деление и умножение ячеек в экселе

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

  1. Дважды кликаем по ячейке, в которой будем прописывать формулу.
  2. Пишем знак «=» и кликаем по первой ячейке. После указываем какое действие мы хотим совершить («*» или «/»).
  3. Нажимаем «Enter» и получаем результат. Различные действия можно объединять в одной формуле. Давайте сумму ячеек «А1 В1» разделим на сумму «С1 D1». Для этого пишем знак «=» и открываем скобку.
  4. Далее суммируем ячейки «А1 В1». Как это делать Вы уже знаете. После закрываем скобу и пишем знак умножения.
  5. После открываем скобку и задаем сумму для ячеек «С1 D1» и жмем «Enter».
  6. Таким образом мы получили нужный результат. Вот по такому простому принципу Вы можете комбинировать различные действия для получения необходимого результата.
Среднее значение в экселе

Еще одна полезная функция.

  1. Дважды кликаем по нужной ячейке и пишем знак «=».
  2. В экселе есть отличный конструктор формул, который находится вверху слева. Выберите из выпадающего списка «СРЗНАЧ».
  3. Теперь просто выделите те ячейки, среднее значение которых нужно получить. Подсказка: для выделения можно использовать «Ctrl». Зажмите клавишу и кликайте по нужным ячейкам. Таким образом можно выбирать ячейки, между которыми есть какой либо контент. После нажмите «Ок».
  4. В итоге мы получаем среднее значение выбранных ячеек.
Логические функции в экселе

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

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

Итак, задача: выбрать среднее значение ячеек и указать больше оно пятидесяти или меньше.

  1. Пишем формулу для получения среднего значения. Как это делать мы разобрали выше.
  2. Пишем знак «=» и в конструкторе формул выбираем «ЕСЛИ».
  3. В поле «Выражение» задаем наше условие (если меньше 50). Кликаем на ячейку, где у нас средне значение и пишем «

Источник

Хитрости »

1 Май 2011              386272 просмотров


Прежде чем начать читать статью прошу принять к сведению объявление: используйте СВОИ АДРЕСА ЭЛ.ПОЧТЫ при тестировании кодов. Не надо отсылать письма на указанные в статье e-mail адреса- это все приходит мне на почту. Помимо этого Вы сами не сможете понять работает или нет, т.к. письма придут мне, а не Вам.
Спасибо за понимание
P.S. А если написанное выше Вы все же проигнорировали и отправили письмо на мои адреса электронной почты — это означает, что Вы соглашаетесь с тем, что вся информация внутри письма, включая вложения, может быть использована мной без ограничений в личных целях.

  • Отправка через меню Excel
  • Простая отправка книги через VBA без Outlook
  • Отправка писем через VBA при помощи Outlook(с вложениями)
  • Отправить письма через Outlook с картинкой в теле письма
  • Массовая рассылка писем по адресам при помощи Outlook
  • Отправка сообщения без использования Outlook — используем CDO

Отправить письмо из Excel можно несколькими способами, в том числе и через написание кода в VBA.

Отправка через меню Excel
Отправку без кода осуществить достаточно просто:

  • Excel 2003: Файл(File)Отправить(Send To)Сообщение(Mail Recipient)
    и выбрать способ отправки:

    • Сообщение(Mail Recipient) — создается сообщение в программе по умолчанию для отправки электронных писем
    • Сообщение (для ознакомления) (Mail Recipient for Review) — вполне интересный вариант. Перед отправкой для книги включается отслеживание изменений(Сервис(Tools)Исправления(Track changes)). Можно воспользоваться этим методом, чтобы отправить получателю для внесения им изменений, а после отследить их(СервисИсправленияВыделить исправления(Highlight changes))
    • Сообщение (как вложение)(Mail Recipient as attachment) — создается сообщение в программе по умолчанию для отправки электронных писем, в которое вложением вкладывается активная книга целиком
    • По маршруту(Routing Recipient) — практически тоже самое, что и Сообщение (для ознакомления) (Mail Recipient for Review) с той разницей, что письмо с вложением пересылается как эстафета от одного получателя к другому. После этого так же можно отследить изменения, внесенные каждым пользователем
    • Папка Exchange(Exchange folder) — активная книга автоматически сохраняется в заданную папку общего сервера Microsoft Exchange. Доступ к этой книге будет открыт всем участникам рабочей группы
    • Факс пользователю службы факсов интернета(Fax) — отправляет содержимое книги по факсу указанным получателям. Для использования данной возможности должна быть установлена служба факсов
  • Excel 2007: Кнопка ОфисОтправить(Send)Сообщение(E-mail)
  • Excel 2010: Файл(File)Сохранить и отправить(Save & Send)Отправить(Send Using E-mail)
  • Далее выбирается способ отправки:

    • Как вложение(Send as attachment) — будет автоматически запущена почтовая программа по умолчанию и создано новое письмо, в которое уже будет вложен файл книги, из которой была вызвана команда
    • Как ссылку(Send link) — доступно, только если файл находится на сетевом ресурсе. После нажатия будет создано новое письмо в почтовой программе по умолчанию, в тело которого будет вставлена ссылка на книгу
    • Как PDF(Send as PDF) — файл будет автоматически сохранен в формате PDF, далее будет создано новое письмо в почтовой программе по умолчанию и файл PDF будет вставлен в письмо
    • Как XPS(Send as XPS) — файл будет автоматически сохранен в формате PDF, далее будет создано новое письмо в почтовой программе по умолчанию и файл PDF будет вставлен в письмо
    • Отправить как факс через интернет(Send as internet fax) — если у вас на ПК установлена служба работы с факсами и есть возможность отправлять и получать факсы на ПК — то данная команда отправит данные активного листа файла как факс

Простая отправка книги через VBA без Outlook

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

Sub SendMailStandart()
    ActiveWorkbook.SendMail "mail1@excel-vba.ru", "Тема письма"
End Sub

Также можно указать несколько получателей:

Sub SendMailStandart_MassRecipients()
    ActiveWorkbook.SendMail Array("mail1@excel-vba.ru", "mail2@excel-vba.ru"), "Тема письма"
End Sub

Внутри скобок Array можно в кавычках через запятую указать достаточное количество получателей.
Данный метод универсален, но работает только с активным файлом. Нельзя выбрать файл с диска и отправить как вложение. Кроме того, нельзя отправить более одного файла разом и указать текст письма.
Поэтому очень часто на форумах возникает вопрос как отправить письмо из Excel кодом с указанием темы, текста и вложения.
Есть несколько вариантов:


Отправить письмо через Outlook кодом VBA

Option Explicit
 
Sub Send_Mail()
    Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody As String, sAttachment As String
 
    Application.ScreenUpdating = False
    On Error Resume Next
    'пробуем подключиться к Outlook, если он уже открыт
    Set objOutlookApp = GetObject(, "Outlook.Application")
    Err.Clear 'Outlook закрыт, очищаем ошибку
    If objOutlookApp Is Nothing Then
        Set objOutlookApp = CreateObject("Outlook.Application")
    End If
    'раскомментировать строку, если в Outlook несколько учетных записей и нужно подключиться к конкретной(только если Outlook закрыть)
    '   [параметры]: Session.Logon "имя профиля","пароль",[показывать окно выбора профиля], [запускать в новой сессии]
    'objOutlookApp.Session.Logon "profile","1234",False, True
    Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
    'если не получилось создать приложение или экземпляр сообщения - выходим
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
 
    sTo = "AddressTo@mail.ru"    'Кому(можно заменить значением из ячейки - sTo = Range("A1").Value)
    sSubject = "Автоотправка"    'Тема письма(можно заменить значением из ячейки - sSubject = Range("A2").Value)
    sBody = "Привет от Excel-VBA"    'Текст письма(можно заменить значением из ячейки - sBody = Range("A3").Value)
    sAttachment = "C:TempКнига1.xls"    'Вложение(полный путь к файлу. Можно заменить значением из ячейки - sAttachment = Range("A4").Value)
 
    'создаем сообщение
    With objMail
        .To = sTo 'адрес получателя
        .CC = "" 'адрес для копии
        .BCC = "" 'адрес для скрытой копии
        .Subject = sSubject 'тема сообщения
        .Body = sBody 'текст сообщения
        '.HTMLBody = sBody 'если необходим форматированные текст сообщения(различные шрифты, цвет шрифта и т.п.)
        'добавляем вложение, если файл по указанному пути существует(dir проверяет это)
        If sAttachment <> "" Then
            If Dir(sAttachment, 16) <> "" Then
                .Attachments.Add sAttachment 'просто вложение
                'чтобы отправить активную книгу вместо sAttachment указать ActiveWorkbook.FullName
            End If
        End If
        .Send 'Display, если необходимо просмотреть сообщение, а не отправлять без просмотра
    End With
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub

Этот код отправляет одно письмо и одно вложение за раз. Но если несколько раз вызвать метод .Attachments.Add, то можно добавить еще файлы:

.Attachments.Add "C:TempКнига1.xlsx"
.Attachments.Add "C:TempКнига2.xlsx"
.Attachments.Add "C:DocumentsReport.rar"

Строка:

objOutlookApp.Session.Logon "user","1234",False, True

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

objOutlookApp.Session.Logon

Важно помнить: пути для файлов в качестве вложений должны содержать полный путь до файла, включая его имя и расширение: C:DocumentsReport.rar. При указании только имени Report.rar или пути без расширения (C:DocumentsReport) ошибки не будет, но вложения не будут помещены в сообщения и адресату отправится письмо без вложений.

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


 
Отправить письма через Outlook с картинкой в теле письма

Sub Send_Mail_With_Picture()
    Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody As String, sAttachment As String, sPicture As String
 
    Application.ScreenUpdating = False
    On Error Resume Next
    'пробуем подключиться к Outlook, если он уже открыт
    Set objOutlookApp = GetObject(, "Outlook.Application")
    Err.Clear 'Outlook закрыт, очищаем ошибку
    If objOutlookApp Is Nothing Then
        Set objOutlookApp = CreateObject("Outlook.Application")
    End If
    'objOutlookApp.Session.Logon "user","1234",False, True
    Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
    'если не получилось создать приложение или экземпляр сообщения - выходим
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
 
    sTo = "AddressTo@mail.ru"    'Кому(можно заменить значением из ячейки - sTo = Range("A1").Value)
    sSubject = "Автоотправка"    'Тема письма(можно заменить значением из ячейки - sSubject = Range("A2").Value)
    sBody = "Привет от Excel-VBA"    'Текст письма(можно заменить значением из ячейки - sBody = Range("A3").Value)
    sAttachment = "C:TempКнига1.xls"    'Вложение(полный путь к файлу. Можно заменить значением из ячейки - sAttachment = Range("A4").Value)
    sPicture = "C:ДокументыИзображенияExcel_vba_ru.png" 'если надо вставить в письмо картинку
    'создаем сообщение
    With objMail
        .To = sTo 'адрес получателя
        .CC = "" 'адрес для копии
        .BCC = "" 'адрес для скрытой копии
        .Subject = sSubject 'тема сообщения
'        .Body = sBody 'текст сообщения без форматирования
        .HTMLBody = sBody 'если необходим форматированные текст сообщения(различные шрифты, цвет шрифта и т.п.)
        'чтобы картинка была видна внутри сообщения - надо её сначала добавить как вложение
        'если картинка по указанному пути существует(dir проверяет это)
        If Dir(sPicture, 16) <> "" Then
            If Dir(sPicture, 16) <> "" Then
                .Attachments.Add sPicture
                'теперь вставляем код картинки
                .HTMLBody = .HTMLBody & "<p>Картинка в письме</p>" & "<img src=cid:" & Replace(Dir(sPicture, 16), " ", "%20") & ">" ' & " height=240 width=180>"
            '" height=240 width=180>" - если нужны размеры картинки
            End If
        End If
        'добавляем вложение, если файл по указанному пути существует(dir проверяет это)
        If sAttachment <> "" Then        
            If Dir(sAttachment, 16) <> "" Then
                .Attachments.Add sAttachment 'просто вложение
            End If
        End If
        .Send 'Display, если необходимо просмотреть сообщение, а не отправлять без просмотра
    End With
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub

Этот код отправляет одно письмо и вставляет одну картинку. За это отвечает строка

"<img src=cid:" & Replace(Dir(sPicture, 16), " ", "%20") & ">"

Если картинку надо вложить с заранее указанными размерами, то строка будет выглядеть так:

"<img src=cid:" & Replace(Dir(sPicture, 16), " ", "%20") & " height=240 width=180>"
'height - высота
'width  - ширина

Если надо добавить несколько картинок, то метод .Attachments.Add sPicture надо будет вызвать столько раз, сколько картинок(для каждого свой путь к картинке).

Важно помнить: пути для картинок должны содержать полный путь до файла, включая его имя и расширение: C:ДокументыИзображенияExcel_vba_ru.png. При указании только имени Excel_vba_ru.png или пути без расширения (C:ДокументыИзображенияExcel_vba_ru) ошибки не будет, но картинка не будет вставлена, а вместо неё скорее всего будет текст «Ошибка загрузки картинки!» или пустой квадрат вместо реальной картинки.


 
Массовая рассылка писем по адресам

Так же можно сделать нечто вроде рассылки, организовав цикл по ячейкам. Предположим, что в столбце А записаны адреса, в столбце В тема, в столбце С текст сообщения, в столбце D путь к вложениям:
Таблица адресов
Тогда можно применить следующий код:

Sub Send_Mail_Mass()
    Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody As String, sAttachment As String
    Dim lr As Long, lLastR As Long
 
    Application.ScreenUpdating = False
    On Error Resume Next
    'пробуем подключиться к Outlook, если он уже открыт
    Set objOutlookApp = GetObject(, "Outlook.Application")
    Err.Clear 'Outlook закрыт, очищаем ошибку
    If objOutlookApp Is Nothing Then
        Set objOutlookApp = CreateObject("Outlook.Application")
    End If
    'произошла ошибка создания объекта - выход
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
    'objOutlookApp.Session.Logon "user","1234",False, True
 
    lLastR = Cells(Rows.Count, 1).End(xlUp).Row
    'цикл от второй строки(начало данных с адресами) до последней ячейки таблицы
    For lr = 2 To lLastR
        Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
        'создаем сообщение
        With objMail
            .to = Cells(lr, 1).Value 'адрес получателя
            .Subject = Cells(lr, 2).Value 'тема сообщения
            .Body = Cells(lr, 3).Value 'текст сообщения
            'вложение(если ячейка не пустая и путь к файлу указан правильно)
            If Cells(lr, 4).Value <> "" Then   
                If Dir(Cells(lr, 4).Value, 16) <> "" Then
                    .Attachments.Add Cells(lr, 4).Value
                End If
            End If
            .Send 'Display, если необходимо просмотреть сообщение, а не отправлять без просмотра
        End With
    Next lr
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub

Скачать пример массовой рассылки:

  Массовая рассылка писем через Outlook.xls (60,0 KiB, 6 986 скачиваний)

При использовании этих кодов есть один недостаток: очень часто при программной отправке писем Outlook выдает окно с запросом подтверждения отправки. Сообщение может быть трех видов:

  • Программа пытается получить доступ к адресам электронной почты, хранящимся в Outlook. Если вы этого не ожидаете, нажмите кнопку «Запретить» и проверьте наличие последних обновлений для антивирусной программы.
  • Программа пытается отправить сообщение от вашего имени. Если вы этого не ожидаете, нажмите кнопку «Запретить» и проверьте наличие последних обновлений для антивирусной программы.
  • Программа пытается выполнить действие, которое может привести к отправке сообщения от вашего имени. Если вы этого не ожидаете, нажмите кнопку «Запретить» и проверьте наличие последних обновлений для антивирусной программы

Чтобы при программной отправке данных сообщений не появлялось, в версиях Outlook, начиная с 2007 можно отключить его настройками безопасности:

  • Outlook 2007: МенюПараметрыЦентр управления безопасностьюПрограммный доступ-установить Никогда не предупреждать о подозрительной активности (не рекомендуется)
  • Outlook 2010 и выше: ФайлПараметрыЦентр управления безопасностьюПрограммный доступ-установить Никогда не предупреждать о подозрительной активности (не рекомендуется)

ВАЖНО: Если компьютер управляется администратором Microsoft Exchange или Microsoft Windows Active Directory Domain Services и администратором в качестве параметров по умолчанию установлен запрет на внесение изменений в параметры безопасности пользователями, возможность изменения данных настроек безопасности программного доступа будет недоступна.

Важно: сам код рассылки не имеет никаких ограничений по числу отправляемых сообщений. Но различные почтовые серверы могут устанавливать свои лимиты. Например, Gmail и Yandex могут заблокировать email, с которого ведется рассылка, если общее количество отправленных сообщений превышает 100 штук в день. Поэтому производить важные массовые рассылки рекомендуется с собственного SMTP-сервера.


 

Но так же при отправке файлов и писем часто необходимо не привязываться к конкретной почтовой программе. Ведь далеко не все ставят Outlook. Многие используют иные почтовые программы, например TheBat.

Отправка сообщения без использования Outlook — используем CDO

Option Explicit
 
Sub Send_Mail()
    Const CDO_Cnf = "http://schemas.microsoft.com/cdo/configuration/"
    Dim oCDOCnf As Object, oCDOMsg As Object
    Dim SMTPserver As String, sUsername As String, sPass As String, sMsg As String
    Dim sTo As String, sFrom As String, sSubject As String, sBody As String, sAttachment As String
    On Error Resume Next
    'sFrom – как правило совпадает с sUsername
    SMTPserver = "smtp.yandex.ru"    ' SMTPServer: для Mail.ru "smtp.mail.ru"; для Яндекса "smtp.yandex.ru"; для Рамблера "mail.rambler.ru"
    sUsername = "YourMail@mail.ru"    ' Учетная запись на сервере
    sPass = "1234"    ' Пароль к почтовому аккаунту
 
    If Len(SMTPserver) = 0 Then MsgBox "Не указан SMTP сервер", vbInformation, "www.Excel-VBA.ru": Exit Sub
    If Len(sUsername) = 0 Then MsgBox "Не указана учетная запись", vbInformation, "www.Excel-VBA.ru": Exit Sub
    If Len(sPass) = 0 Then MsgBox "Не указан пароль", vbInformation, "www.Excel-VBA.ru": Exit Sub
 
    sTo = "AddressTo@mail.ru"    'Кому
    sFrom = "YourMail@yandex.ru"    'От кого
    sSubject = "Автоотправка"    'Тема письма
    sBody = "Привет от Excel-VBA"    'Текст письма
    sAttachment = "C:/Temp/Книга1.xls"    'Вложение(полный путь к файлу)
 
    'Назначаем конфигурацию CDO
    Set oCDOCnf = CreateObject("CDO.Configuration")
    With oCDOCnf.Fields
        .Item(CDO_Cnf & "sendusing") = 2
        .Item(CDO_Cnf & "smtpauthenticate") = 1
        .Item(CDO_Cnf & "smtpserver") = SMTPserver
        'если необходимо указать SSL
        '.Item(CDO_Cnf & "smtpserverport") = 465 'для Яндекса и Gmail 465
        '.Item(CDO_Cnf & "smtpusessl") = True
        '=====================================
        .Item(CDO_Cnf & "sendusername") = sUsername
        .Item(CDO_Cnf & "sendpassword") = sPass
        .Update
    End With
    'Создаем сообщение
    Set oCDOMsg = CreateObject("CDO.Message")
    With oCDOMsg
        Set .Configuration = oCDOCnf
        .BodyPart.Charset = "koi8-r"
        .From = sFrom
        .To = sTo
        .Subject = sSubject
        .TextBody = sBody
        'Проверка наличия файла по указанному пути
        If Len(sAttachment) > 0 Then
            If Dir(sAttachment, 16) <> "" Then
                .AddAttachment sAttachment
            End If
        End If
        .Send
    End With
 
    Select Case Err.Number
    Case -2147220973: sMsg = "Нет доступа к Интернет"
    Case -2147220975: sMsg = "Отказ сервера SMTP"
    Case 0: sMsg = "Письмо отправлено"
    Case Else: sMsg = "Ошибка номер: " & Err.Number & vbNewline & "Описание ошибки: " & Err.Description
    End Select
    MsgBox sMsg, vbInformation, "www.Excel-VBA.ru"
    Set oCDOMsg = Nothing: Set oCDOCnf = Nothing
End Sub

Данный код отправляет письмо, используя объект CDO(Collaboration Data Objects — присутствует во всех версиях Windows) и от имени Вашей учетной записи(либо Яндекс, либо Мэйл, либо Рамблер либо др.).

  • SMTPserver — Каждый из приведенных выше сервисов имеет свой сервер для отправки сообщений(его можно посмотреть на сайте сервиса). В комментариях к коду я написал три самых распространенных, но если Вы используете какой-то другой, то просто посмотрите на его сайте настройки для Outlook и отыщите тот параметр, который отвечает за SMTPserver.
  • sUsername — это Ваш логин для входа в почтовый сервис. Думаю тут все понятно. Единственный момент — обязательно указывать e-mail именно в полном виде — YourMail@mail.ru, даже если для входа на сервис через браузер Вы используете только первую часть записи(YourMail). Если необходимо подставить в качестве отправителя псевдоним(чтобы получатель видел не просто адрес, а ассоциированное имя учетной записи), то указывать надо именно в формате псевдонима:
    sFrom = "Excel-vba <YourMail@yandex.ru>"

    Excel-vba — и есть псевдоним. А сам адрес должен указываться между знаками <>

  • sPass — пароль доступа к Вашей учетной записи, который Вы используете для входа в почту.

Это основные моменты. Поля Кому(sTo), От кого(sFrom),Тема письма(sSubject), Текст письма(sBody) и Вложение(sAttachment) думаю не нуждаются в расшифровке.
Так же стоит учесть пару важных моментов: если на почтовом сервере используется шифрование, то необходимо раскомментировать(убрать знак апострофа) эти строки:

.Item(CDO_Cnf & "smtpserverport") = 465
.Item(CDO_Cnf & "smtpusessl")

Иначе вместо отправки письма получим ошибку «Отказ сервера SMTP». Серверы Яндекс и Gmail требуют шифрования, а значит для них указанные выше строки должны быть активированы(т.е. раскомментированы). Номер порта указывается в описании настроек сервера и для каждого сервера может быть своим, поэтому если с указанием приведенного в коде порта(«smtpserverport») письмо не отправляется — необходимо зайти в настройки почтового сервера и убедиться в правильности указания номера порта.

Чтобы использовать данный код вы можете либо просто скопировать его прямо со страницы, либо скачать файл. В файле программа немного упрощена к использованию — в ячейки листа вам необходимо будет внести поля: Кому(sTo), От кого(sFrom),Тема письма(sSubject), Текст письма(sBody) и Вложение(sAttachment) и выбрать SMTPserver. SMTPserver выбирается из выпадающего списка. Сам список является динамическим и расположен на листе «Settinngs«. Там же расположены поля Учетной записи и Пароль, которые автоматически подставляются в необходимые поля на листе «Отправка«. Т.к. список динамический Вы можете просто добавлять к уже имеющимся новые сервисы и потом просто выбирать их из списка. Так же в файле есть еще одна возможность — выбрать файл. Для этого надо просто нажать на кнопку и выбрать файл.

Скачать пример:

  Массовая рассылка писем через CDO — без Outlook.xls (64,0 KiB, 7 544 скачиваний)


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

With oCDOMsg
    Set .Configuration = oCDOCnf
    .From = sFrom
    .BodyPart.Charset = "windows-1251"
    .To = sTo
    .Subject = sSubject
    Set objbp = oCDOMsg.AddRelatedBodyPart("C:ДокументыИзображения11.jpg", "11.jpg", 1)
    objbp.Fields.Item("urn:schemas:mailheader:Content-ID") = "<11.jpg>"
    objbp.Fields.Update
    If Len(sAttachment) > 0 Then
        If Dir(sAttachment, 16) <> "" Then
            .AddAttachment sAttachment
        End If
    End If
    'для вложения картинки письмо лучше формировать в формате HTML
    .HTMLBody = "<img src=""11.jpg""><br />" & sBody
    .Send
End With

Самый главный момент:
AddRelatedBodyPart

    C:ДокументыИзображения11.jpg — указывается полный путь к файлу картинки на компьютере, включая расширение файла.
    11.jpg — указывается имя картинки с расширением. Это имя будет использовано внутри письма и именно его необходимо будет указать дальше в «urn:schemas:mailheader:Content-ID». И указывать обязательно в треугольных скобках: «<11.jpg>»
    внутри же самого письма в том месте, где должна отображаться картинки надо записать:

    в приведенном выше коде картинка вставляется в самом начале письма и после неё так же добавляется перенос на новую строку при помощи тэга

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


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

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


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



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

  • На главную
  • Категории
  • Программы
  • Microsoft Excel
  • Работа с текстом в Excel

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

2020-09-20 08:34:0551

Работа с текстом в Excel

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

Функция ТЕКСТ в Excel

Преобразовывает числовые значения в текстовые и задает формат отображения посредством специальных строк форматирования. Удобна в тех случаях, когда нужно показать числа в определенном формате или объединить их с текстом, символами.

=ТЕКСТ(числовое_значение_или_формула_в_результате_вычисления_которой_получается_число;формат_ который_требуется_применить_к_указанному_значению)

Для определения формата следует предварительно клацнуть по значению правой кнопкой мышки – и в выпадающем меню выбрать одноименную опцию, либо нажать сочетание клавиш Ctrl+1. Перейти в раздел «Все…». Скопировать нужный формат из списка «Тип».

Чтобы понять, как работает функция, необходимо открыть книгу и создать таблицу с данными.

  1. Кликнуть по любому свободному месту, например, G Ввести знак «=» и ссылку на адрес ячейки – B2. Активировать Мастер функций, нажав на кнопку fx (слева) во вкладке «Формулы», или с помощью комбинации клавиш Shift+F3.
  2. На экране отобразится окно Мастера. В строке поиска ввести название функции и нажать «Найти».
  3. В списке нужное название будет выделено синим цветом. Нажать «Ок».
  4. Указать аргументы: ссылку на число и скопированное значение формата. В строке формулы после B2 вписать знак «&».
  5. В результате появится сумма в денежном формате вместе с наименованием товара. Протянуть формулу вниз.

Еще один пример.

Необходимо объединить текстовые и числовые значения с помощью формулы =A14&» «&»составляет»&» «&B14&»,»&» «&A15&» «&ТЕКСТ(B15;»ДД.ММ.ГГ;@»).

Таким образом любые данные преобразовываются в удобный формат.

Объединение ячеек в Excel

Чтобы объединить ячейки в одну строку без потери данных, можно использовать или знак «&», или функцию СЦЕПИТЬ (в новых версиях – ОБЪЕДИНИТЬ).

=СЦЕПИТЬ(ячейка_1;» «;ячейка_2;» «;ячейка_3;» «)

Пустые кавычки (» «) – это пробел. Без пробелов слова будут отображаться слитно. С помощью кавычек в формулу добавляется любой знак («.» или «,») и текст.

  1. Следует установить курсор в месте, где будет отображаться готовое значение.
  2. Написать формулу.
  3. Нажать «Enter».

Второй вариант формулы тоже простой: =ячейка1&» «&ячейка2&» «&ячейка3.

Если в результате строка будет содержать 32767 символов и более, появится ошибка #ЗНАЧ!.

Перенос текста в ячейке в Excel

Перенести текст внутри одной ячейки на следующую строку можно несколькими способами:

  1. Выделить ячейку и кликнуть по опции «Перенос…», которая расположена во вкладке «Главная».
  2. Щелкнуть правой кнопкой мышки по выделенной ячейке, в выпадающем меню выбрать «Формат…». В появившемся на экране окне перейти на вкладку «Выравнивание», поставить галочку в поле «Переносить по словам». Сохранить изменения, нажав «Ок».
  3. При наборе текста перед конкретным словом зажать комбинацию клавиш Alt+Enter – курсор переместится на новую строку.
  4. С помощью функции СИМВОЛ(10). При этом нужно объединить текст во всех ячейках, а поможет сделать это амперсанд «&»: =A1&B1&СИМВОЛ(10)&A2&B2&СИМВОЛ(10).
  5. Также вместо оператора «&» можно использовать функцию СЦЕПИТЬ. Формула будет иметь вид: =СЦЕПИТЬ(A2;» «;СИМВОЛ(10);B2;» «;C2;» «;D2;СИМВОЛ(10);E2;СИМВОЛ(10);F2).

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

Какой бы метод не был выбран, текст распределяется по ширине столбца. При изменении ширины данные автоматически перестраиваются.

Количество символов в ячейке в Excel

При работе с данными иногда требуется посчитать количество символов в определенной ячейке. Вручную делать это неудобно, особенно когда значений много или содержимое меняется в зависимости от заданного условия. Для таких случаев используется функция ДЛСТР.

=ДЛСТР(ячейка_1)

Функция работает только с одним значением.

  1. Выделить ту ячейку, где будет показан подсчет.
  2. Вписать формулу, указывая ссылку на адрес определенной ячейки.
  3. Нажать «Enter».
  4. Растянуть результат на другие строки или столбцы.

Можно посчитать общее количество символов:

  1. Выделить все значения, во вкладке «Главная» на панели справа найти инструмент «Сумма».
  2. Кликнуть по одноименной опции. Рядом (под или с боковой стороны от выделенного диапазона) отобразится результат.

В разбросанных ячейках

В этом случае необходимо воспользоваться ДЛСТР и суммированием:

  1. Установить курсор в желаемом месте.
  2. Ввести формулу =ДЛСТР(значение1)+ДЛСТР(значение2)+ДЛСТР(значение3) и т.д.
  3. Нажать «Enter».

Как преобразовать текст в число

Часто при добавлении новых числовых данных в таблицу они по умолчанию преобразовываются в текст. В итоге не работают вычисления и формулы. В Excel есть возможность сразу узнать, как отформатированы значения: числа выравниваются по правому краю, текст  – по левому.

Когда возле значения (в левом углу сверху) есть зеленый треугольник, значит, где-то допущена ошибка. Существует несколько легких способов преобразования:

  1. Через меню «Ошибка». Если кликнуть по значению, слева появится значок с восклицательным знаком. Нужно навести на него курсор, клацнуть правой кнопкой мышки. В раскрывшемся меню выбрать вариант «Преобразовать в число».
  2. Используя простое математическое действие – прибавление / отнимание нуля, умножение / деление на единицу и т.п. Но необходимо создать дополнительный столбец.
  3. Добавив специальную вставку. В пустой ячейке написать цифру 1 и скопировать ее. Выделить диапазон с ошибками. Кликнуть по нему правой кнопкой мышки, из выпадающего меню выбрать «Специальную вставку». В открывшемся окне поставить галочку возле «Умножить». Нажать «Ок».
  4. При помощи функций ЗНАЧЕН (преобразовывает текстовый формат в числовой), СЖПРОБЕЛЫ (удаляет лишние пробелы), ПЕЧСИМВ (удаляет непечатаемые знаки).
  5. Применив инструмент «Текст по столбцам» к значениям, которые расположены в одном столбце. Нужно выделить все числовые элементы, во вкладке «Данные» найти указанную опцию. В открывшемся окне Мастера нажимать далее до 3-го шага – проверить, какой указан формат, при необходимости – изменить его. Нажать «Готово».

Как преобразовать дату в текст

Функция ТЕКСТ позволяет определить день недели по дате:

  1. Кликнуть по ячейке.
  2. Написать формулу =ТЕКСТ(значение;»ДДДД»).
  3. Нажать «Enter».
  4. Протянуть формулу вниз до последней даты.

Для представления даты в текстовом виде используется формула =ТЕКСТ(значение;»ДД МММ ГГГГ»).

Для отображения даты в аргументе формулы в качестве формата используются следующие коды:

Максим Орлов

Ваш покорный слуга — компьютерщик широкого профиля: системный администратор, вебмастер, интернет-маркетолог и много чего кто. Вместе с Вами, если Вы конечно не против, разовьем из обычного блога крутой технический комплекс.

Обновлено: 14.04.2023

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

  • сообщить пользователю о выполнении кода;
  • получить от пользователя подтверждение на выполнение того или иного действия;
  • запросить какие-то данные(число, текст для поиска, диапазон поиска и т.п.).

Простейшие запросы и подтверждения можно сделать при помощи уже встроенных диалоговых окон.

Из основных можно выделить три типа:
MsgBox — окно информирования пользователя с возможностью запроса действия (Да, Нет, Отмена и т.п.);
InputBox — окно запроса текстовой информации от пользователя (текст для поиска, дата, число и т.п.);
Application.InputBox — чуть более расширенная версия InputBox с возможностью указания не только текста и чисел, но и выделения диапазона ячеек (например для указания ячеек, в которых осуществлять поиск значения или которые необходимо закрасить).

MsgBox «Обработка завершена»

Все остальные параметры указывать не обязательно, но их использование несколько расширяет возможности данного диалогового окна.
Buttons — указывается тип выводимых кнопок и стиль окна. По умолчанию применяется vbOKOnly — одна только кнопка Ок:

Константы Buttons могут быть объединены между собой. Ниже приведен код, который показывает диалоговое окно с возможностью выбора одного из трех вариантов — Прервать, Повтор, Пропустить:

‘————————————————————————————— ‘ Procedure : test ‘ DateTime : 19.10.2014 19:24 ‘ Author : The_Prist(Щербаков Дмитрий) ‘ WebMoney — R298726502453; Яндекс.Деньги — 41001332272872 ‘ http://www.excel-vba.ru ‘ Purpose : Процедура показывает диалоговое окно с возможностью выбора одного из трех вариантов: ‘ Прервать, Повтор, Пропустить ‘ По умолчанию выделена кнопка Прервать, т.к. иное не указано ‘————————————————————————————— Sub test() Dim lRetVal As Long ‘для получения выбранного значения Retry_: lRetVal = MsgBox(«Обработка завершена», vbAbortRetryIgnore + vbQuestion) Select Case lRetVal Case vbAbort ‘3/Прервать/Abort Exit Sub ‘выходим из процедуры Case vbRetry ‘4/Повтор/Retry GoTo Retry_ ‘переход на метку Retry_ Case vbIgnore ‘5/Пропустить/Ignore End Select End Sub

Следующий код показывает то же окно, но по умолчанию выделяет кнопку Пропустить

‘————————————————————————————— ‘ Procedure : test ‘ DateTime : 19.10.2014 19:24 ‘ Author : The_Prist(Щербаков Дмитрий) ‘ WebMoney — R298726502453; Яндекс.Деньги — 41001332272872 ‘ http://www.excel-vba.ru ‘ Purpose : Процедура показывает диалоговое окно с возможностью выбора одного из трех вариантов: ‘ Прервать, Повтор, Пропустить ‘ По умолчанию выделена кнопка Пропустить(3-я по счету — значит vbDefaultButton3) ‘————————————————————————————— Sub test() Dim lRetVal As Long ‘для получения выбранного значения Retry_: lRetVal = MsgBox(«Обработка завершена», vbAbortRetryIgnore + vbQuestion + vbDefaultButton3) Select Case lRetVal Case vbAbort ‘3/Прервать/Abort Exit Sub ‘выходим из процедуры Case vbRetry ‘4/Повтор/Retry GoTo Retry_ ‘переход на метку Retry_ Case vbIgnore ‘5/Пропустить/Ignore End Select End Sub

Вместо текстового представления констант можно применить их числовые значения:

Sub test() Dim lRetVal As Long ‘для получения выбранного значения Retry_: lRetVal = MsgBox(«Обработка завершена», 2 + 32 + 512) Select Case lRetVal Case 3 ‘vbAbort Exit Sub ‘выходим из процедуры Case 4 ‘vbRetry GoTo Retry_ ‘переход на метку Retry_ Case 5 ‘vbIgnore End Select End Sub

Нетрудно после этого предположить, что можно указать просто сумму данных чисел:

MsgBox «Обработка завершена», 546

Доступные константы значений возврата:

Константа Значение Нажатая кнопка
vboK 1 ОК
vbCancel 2 Отмена
vbAbort 3 Прервать
vbRetry 4 Повтор
vblgnore 5 Пропустить
vbYes 6 Да
vbNo 7 Нет

Title — указывается текст заголовка окна. Например, можно указать либо что это ошибка, либо имя своего приложения:

MsgBox «Обработка завершена», vbOKOnly, «Мое приложение»

HelpFile — указывается имя файла-справки в формате .HLP. Применяется, если параметр Buttons указан как vbMsgBoxHelpButton. Файл справки должен существовать.
Context — целое число. Указывается индекс страницы файла-справки, которую необходимо открыть. Указывается только если указан параметр HelpFile.

Небольшой практический пример применения простого диалогового окна MsgBox.
Цель процедуры(макроса): очистить все ячейки листа.
Согласитесь, что неплохо бы перед этим запросить у пользователя решение — он согласен с этим и это является обдуманным решением или случайностью?

‘————————————————————————————— ‘ Procedure : ClearRange ‘ DateTime : 19.10.2014 20:06 ‘ Author : The_Prist(Щербаков Дмитрий) ‘ WebMoney — R298726502453; Яндекс.Деньги — 41001332272872 ‘ http://www.excel-vba.ru ‘ Purpose : ‘————————————————————————————— Sub ClearRange() Dim lRetVal As Long ‘для получения выбранного значения lRetVal = MsgBox(«Все данные выделенных ячеек будут удалены.» & _ Chr(10) & «Действительно хотите продолжить?», _ vbYesNo + vbQuestion, «Запрос на выполнение») If lRetVal = vbNo Then Exit Sub ‘выходим из процедуры без выполнения End If Selection.Clear End Sub

Так же на странице Полезные программы для Excel и VBA можно найти программу MsgBox Generator, которая просто и наглядно формирует коды показа MsgBox.

MsgBox, автоматически закрываемый по истечении указанного времени
Диалог MsgBox удобен, если надо проинформировать пользователя о каких-то событиях или предоставить ему выбор Да или Нет. Но в тоже время есть один недостаток: этот диалог не закроется, пока пользователь не нажмет хоть какую-то кнопку. Но бывает необходимо просто проинформировать и закрыть окно независимо от реакции пользователя. Показали окно, подождали секунд 5-7 и даже если пользователь ничего не нажал — закрыли окно и продолжили выполнение кода. Стандартно такой опции в MsgBox нет. Однако можно использовать функции API(это встроенные в ОС Windows функции, которые можно вызывать из любого языка программирования).
Код такого диалога:

Declare Function MessageBoxTimeOut Lib «User32» Alias «MessageBoxTimeoutA» (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As VbMsgBoxStyle, ByVal wLanguageId As Long, ByVal dwMilliseconds As Long) As Long Sub AutoCloseMsgBox() Const lSeconds As Long = 5 MessageBoxTimeOut 0, «Отчет сформирован. Это окно закроется автоматически через 5 секунд», «www.excel-vba.ru», _ vbInformation + vbOKOnly, 0&, lSeconds * 1000 End Sub

Основную роль здесь играет строка:

Declare Function MessageBoxTimeOut Lib «User32» Alias «MessageBoxTimeoutA» (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As VbMsgBoxStyle, ByVal wLanguageId As Long, ByVal dwMilliseconds As Long) As Long

Sub AutoCloseMsgBox() Const lSeconds As Long = 10 Dim retval retval = MessageBoxTimeOut(0, «Файлы обработаны. Вывести список?» & vbNewLine & _ «Если действие не будет выбрано окно закроется через 10 секунд», «www.excel-vba.ru», _ vbInformation + vbYesNo, 0&, lSeconds * 1000) If retval = 6 Then ‘была нажата кнопка Да(Yes) ‘выводим отчет Else ‘была нажата кнопка Нет(No) или окно закрылось само ‘другое действие End If End Sub

ДИАЛОГ ВВОДА ИНФОРМАЦИИ ПОЛЬЗОВАТЕЛЕМ — INPUTBOX
InputBox позволяет запросить от пользователя любую текстовую информацию.

InputBox Promt, [Title], [DefaultValue], [XPos], [YPos], [HelpFile], [Context]
Так же как и с MsgBox обязательным аргументом для указания является только Promt — это тот текст, который будет расположен непосредственно на самой форме диалога. Как правило это пояснение, что должен ввести пользователь.

Dim vRetVal ‘для получения выбранного значения vRetVal = InputBox(«Укажите значение для поиска:», «Запрос данных», «») If vRetVal = «» Then Exit Sub ‘завершаем процедуру, если строка пуста

Title — текст, отображаемый в заголовке окна. В приведенном выше примере это «Запрос данных».
DefaultValue — значение, которое будет показано в поле ввода до указания значения пользователем. Как правило оно указывается в случаях, когда требуемое значение изменяется редко по запросу пользователя, но возможность такую оставить все же требуется. Пример: необходимо по нажатию кнопки удалять всегда столбец 5. Но иногда столбец в отчете смещается и требуется запрашивать у пользователя реальный номер столбца:

Sub DelCols() Dim vRetVal ‘для получения выбранного значения vRetVal = InputBox(«Укажите номер столбца для удаления(целое число):», «Запрос данных», 5) ‘используем Val для преобразования текста vRetVal в число ‘Val() преобразует число как текст в число. ‘Если указан текст(например «третий») — он будет преобразован в 0 vRetVal = Val(vRetVal) If Val(vRetVal) = 0 Then MsgBox «Номер столбца должен быть целым числом больше нуля!», vbCritical, «DelCols» Exit Sub End If Columns(vRetVal).Delete End Sub

Важно знать: InputBox всегда возвращает только текст. Даже если указать — 5 — он вернет «5». В некоторых случаях это может привести к ошибке типов данных, поэтому я привел выше один из примеров преобразования типов данных к нужному.
Так же по прошествии какого-то времени появится вопрос, как отследить нажатие кнопки Отмена. Ведь ориентир на vRetVal = «» не всегда верен, иногда надо принять пустое значение(в случаях, скажем, замены значений) и отследить именно нажатие Отмена. Сделать это можно так:

vRetVal = InputBox(«Укажите номер столбца для удаления(целое число):», «Запрос данных», «») If StrPtr(vRetVal) = 0 Then MsgBox «Нажата кнопка Отмена. Процедура прервана», vbCritical, «DelCols» Exit Sub End If

Больше всего вопросов здесь явно вызовет StrPtr . Эта специальная функция VBA, которая указывает, что переданы некие строковые данные. Если никаких данных не передавалось(а в случае с нажатием кнопки Отмена так и есть) указатель вернет 0. Если какие-то данные были переданы или нажата кнопка Ок(автоматом будет передана строка нулевой длины) — указатель StrPtr вернет значение отличное от нуля.

XPos — положение окна InputBox в твипах по горизонтали относительно левого края экрана. Следует учитывать, что именно относительно экрана, а не окна Excel.
YPos — положение окна InputBox в твипах по вертикали относительно верхнего края экрана.
HelpFile — указывается имя файла-справки в формате .HLP. В отличие от MsgBox указание файла допускается при любых значениях. При этом к уже имеющимся в InputBox кнопкам добавляется еще одна — Help, которая и отвечает за вызов справки.
Context — целое число. Указывается индекс страницы файла-справки, которую необходимо открыть при нажатии кнопки Help. Указывается только если указан параметр HelpFile.

В дополнение приведу классический пример применения InputBox — выполнение процедуры только после введения пароля:

Sub ClearAllCells() Dim vRetVal vRetVal = InputBox(«Введите пароль:», «Авторизация», «») If StrPtr(vRetVal) = 0 Then ‘Нажата кнопка Отмена Exit Sub End If ‘если пароль неверный — завершаем процедуру без выполнения действий If vRetVal <> «1234» Then MsgBox «Введенный пароль неверный», vbCritical, «ClearAllCells» Exit Sub End If ‘будет выполнено только если введен правильный пароль — 1234 ‘полная очистка всех ячеек активного листа ActiveSheet.Cells.Clear End Sub

Private Sub Workbook_Open() ‘ThisWorkbook — Обращение к книге с кодом ‘Но из модуля самой книги можно обращаться и проще — Me ThisWorkbook.Visible = False Dim user As String, lastrow As Long ‘цикл, пока не будут указаны данные пользователя Do While user = «» user = InputBox(«Введите имя пользователя:», «Авторизация», «») If StrPtr(user) = 0 Then MsgBox «Приложение будет закрыто», vbCritical, «Авторизация» ThisWorkbook.Close Exit Sub End If If user = «» Then MsgBox «Не указано имя пользователя!», vbCritical, «Авторизация» End If Loop With ThisWorkbook.Worksheets(«LOG») ‘получаем последнюю заполненную ячейку на листе «LOG» lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row ‘записываем имя пользователя .Cells(lastrow + 1, 1) = user ‘записываем время входа .Cells(lastrow + 1, 2) = Now End With End Sub

Что важно: этот код записывается в модуль ЭтаКнига(ThisWorkbook) и тогда при любом открытии книги будет появляться запрос на имя пользователя.

Так же некоторые примеры применения InputBox можно найти в статьях на сайте. Например:
Как удалить строки по условию?
Как массово изменить гиперссылки?

ДИАЛОГ ВВОДА ИНФОРМАЦИИ ПОЛЬЗОВАТЕЛЕМ — APPLICATION.INPUTBOX

В общем-то данный диалог мало отличается от обычного InputBox, за исключением типов возвращаемых данных. У данного диалога намного богаче функционал определения типов данных.

InputBox Promt, [Title], [DefaultValue], [Left], [Top], [HelpFile], [HelpContextID], [Type]
почти все параметры аналогичны таким же параметрам в InputBox.
Promt — текст, отображаемый на самой форме. Иначе говоря — сама суть показа диалога.
Title — текст, отображаемый в заголовке окна. В приведенном выше примере это «Запрос данных».
DefaultValue — значение, которое будет показано в поле ввода до указания значения пользователем.
Left — положение окна InputBox в поинтах по горизонтали относительно левого края экрана. В отличие от простого InputBox положение определяется на основании расположения самого окна Excel, а не экрана.
Top — положение окна InputBox в твипах по вертикали относительно верхнего края экрана.
HelpFile — указывается имя файла-справки в формате .HLP. В отличие от MsgBox указание файла допускается при любых значениях. При этом к уже имеющимся в InputBox кнопкам добавляется еще одна — Help, которая и отвечает за вызов справки. Сам вызов справки осуществляется путем нажатия на иконку со знаком вопроса в заголовке диалога.
HelpContextID — целое число. Указывается индекс страницы файла-справки, которую необходимо открыть при нажатии кнопки Help. Указывается только если указан параметр HelpFile.
Type — целое число. Указывается одно из предустановленных значений, указывающих диалогу Application.InputBox тип данных, которые предполагается получить от пользователя. Ниже приведен листинг кода, демонстрирующий запрос данных всех типов с описанием ограничений и нюансов.

Конечно, чаще всего используют Type:=8 , т.к. это избавляет от необходимости рисования своих форм и прочих заморочек для запроса указания диапазона от пользователя. Еще раз обращаю внимание, что для Type:=8 необходим ключевой оператор присвоения Set , т.к. в результате необходимо получить именно диапазон(т.е. объект). Ниже приведена процедура, которая запрашивает диапазон для очистки и корректно обрабатывает ситуацию при нажатии кнопки Отмена(т.е. не показывает никаких ошибок пользователю, а просто не выполняется). Стандартно при нажатии Отмена процедура завершается с ошибкой VBA вида Type Mismatch , что не очень грамотно с точки зрения взаимодействия с пользователем — он не должен видеть внутренние ошибки:

‘————————————————————————————— ‘ Procedure : ClearCells ‘ DateTime : 19.10.2014 22:53 ‘ Author : The_Prist(Щербаков Дмитрий) ‘ WebMoney — R298726502453; Яндекс.Деньги — 41001332272872 ‘ http://www.excel-vba.ru ‘ Purpose : ‘ Запрашиваем диапазон ячеек для очистки. ‘ По умолчанию заносится диапазон выделенных на момент запуска ячеек ‘————————————————————————————— Sub ClearCells() Dim vRetVal ‘для получения выбранного значения On Error Resume Next Set vRetVal = Application.InputBox(«Укажите диапазон для очистки ячеек:», «Запрос данных», Selection.Address, Type:=8) If vRetVal Is Nothing Then ‘нажата кнопка Отмена — диапазон не выбран MsgBox «Отмена выполнения», vbCritical, «Нет данных» Exit Sub ‘завершаем процедуру, т.к. ячейки не выбраны End If ‘диапазон выбран — очищаем ячейки vRetVal.Clear End Sub

Конечно, можно еще много чего, наверное, рассказать — но я на данном этапе завершу. Если будут еще мысли — обязательно дополню статью.


Войти через uID

Войти через uID

Как появляется число, если его кто-то вводит, то можно выводить окошко информации при проверке ввода.

Вариант на VBA рассматривается ?

Как появляется число, если его кто-то вводит, то можно выводить окошко информации при проверке ввода.

Вариант на VBA рассматривается ? x_hunter_x

Как появляется число, если его кто-то вводит, то можно выводить окошко информации при проверке ввода.

Вариант на VBA рассматривается ? Автор — x_hunter_x
Дата добавления — 13.12.2019 в 18:56

x_hunter_x,
Большое спасибо.
Отвечаю: 1. Число образуется в результате разности Дат, ячейка в формате: Общий .
2.

x_hunter_x,
Большое спасибо.
Отвечаю: 1. Число образуется в результате разности Дат, ячейка в формате: Общий .
2.

01

На примере посмотрим, как установить ограничение на количество вводимых символов в ячейку.

02

03

04

05

06

01

Подобно многим языкам программирования Visual Basic for Application (VBA) позволяет создать три типа процедур: Sub, Function, Property.

Процедура – это набор описаний и инструкций, сгруппированных для выполнения.

Процедура Sub – набор команд, с помощью которого можно решить определенную задачу. При ее запуске выполняются команды процедуры, а затем управление передается в приложение или процедуру, которая вызвала процедуру Sub. Записываемые макросы автоматически описываются как процедуры Sub, любой макрос или другой код VBA, который просто выполняет определенный набор действий, используя приложения Office, и обычно является процедурой Sub.

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

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

Структура процедуры

При записи процедуры требуется соблюдать правила ее описания. Упрощенный синтаксис для процедур Sub является следующим:

Синтаксис описания функций очень похож на синтаксис описания процедуры Sub, однако, имеются некоторые отличия:

Использование операторов

Процедуры состоят из операторов – наименьших единиц программного кода. Как правило, операторы занимают по одной строке программного кода, и в каждой строке обычно содержится только один оператор, но это не обязательно. В VBA имеется четыре типа операторов: объявления, операторы присваивания, выполняемые операторы и параметры компилятора.

Объявления

Объявление – это оператор, сообщающий компилятору VBA о намерениях по по­воду использования в программе именованного объекта (переменной, константы, поль­зовательского типа данных или процедуры). Кроме того, объявление задает тип объекта и обеспечивает компилятору дополнительную информацию о том, как ис­поль­зовать данный объект. Объявив объект, можно использовать его в любом месте программы.

Переменные – это именованные значения, которые могут изменяться во время выполнения программы.

Рассмотрим пример объявления переменной.

С помощью оператора Dim объявляется переменная с именем МоеЛюбимоеЧисло и объявляется, что значение, которое она будет содержать, должно быть целым:

Константы представляют собой именованные значения, которые не меняются.

Оператор Constant создает строковую константу (текст) с именем НеизменныйТекст, представляющую собой набор символов Вечность:

Оператором Type объявляется пользовательский тип данных с именем Самоделкин, определяя его как структуру, включающую строковую переменную с именем Имя и переменную типа Date с именем ДеньРождения. В данном случае объявление займет несколько строк:

Объявление Private создает процедуру типа Sub с именем СкрытаяПроцедура, говоря о том, что эта процедура является локальной в смысле об­ласти видимости. Завершающий процедуру оператор End Sub считается частью объ­явления.

Оператор присваивания

Оператор присваивания = приписывают переменным или свойствам объектов конкретные значения. Такой оператор всегда состоят из трех частей: имени переменной, или свойства, знака равенства и выражения, задающего нужное значение.

Оператор = присваивает переменной МоеЛюбимоеЧисло значение суммы переменной ДругоеЧисло и числа 12.

В следующей строке кода, записывается, что свойству Color (Цвет) объекта AGraphicShape присваивается значение Blue (Синий) в предположении, что Blue является именованной константой:

В следующеей строке, чтобы задать значение переменной КвадратныйКорень, для текущего значения переменной МоеЛюбимоеЧисло вызывается функция Sqr — встроенная функция VBA вычисления квадратного корня:

В VBA выражением называется любой фрагмент программного кода, задающий некоторое числовое значение, строку текста или объект. Выражение может содержать любую комбинацию чисел или символов, констант, переменных, свойств объектов, встроенных функций и процедур типа Function, связанных между собой знаками операции (например, + или *). Несколько примеров выражений:

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

      

  • Мне вчера пришло сообщение
  •   

  • Композиционно речевая форма сообщение
  •   

  • Поэтическая деятельность ломоносова сообщение
  •   

  • Сообщение о озере аргази
  •   

  • Сообщение об исторической личности 6 класс

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

Ввод текста

Ввод текста (числа или формулы) осуществляется довольно просто.

  1. Выделите ячейку, в которую нужно ввести текст.
  2. Введите нужный текст.
  3. Нажмите клавишу Enter. Текст зафиксируется в ячейке, а фокус выделения перейдет на ячейку, расположенную ниже (рис. 5.6).

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

Рис. 5.6. Ячейка с текстом

Если выделить ячейку с текстом и начать вводить новый, предыдущий текст из ячейки будет удален. Чтобы освоить навыки ввода текста в ячейки, создайте таблицу, приведенную на рис. 5.7. Также измените ширину столбцов, чтобы текст полностью помещался в ячейках.

Рис. 5.7. Пример таблицы

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

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

  1. Выделите одну или несколько ячеек, для которых нужно включить режим переноса текста. Также вы можете выделить сразу всю строку или весь столбец листа.
  2. Щелкните правой кнопкой мыши внутри выделенной ячейки или диапазона.
  3. В появившемся контекстном меню выберите команду Формат ячеек. Появится одноименное диалоговое окно.
  4. В диалоговом окне Формат ячеек перейдите на вкладку Выравнивание.
  5. Установите флажок Переносить по словам.
  6. Нажмите кнопку ОК, чтобы применить изменения.

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

Редактирование текста в ячейке

Текст в ячейке можно отредактировать (изменить) двумя способами: непосредственно в ячейке или в строке формул.

Способ первый

  1. Дважды щелкните мышью по ячейке, в которой нужно отредактировать текст. В ней появится текстовый курсор.
  2. Используя те же методы редактирования, что и в программе Word, измените текст (можно использовать методы выделения текста, клавиши Delete и BackSpace).
  3. Нажмите клавишу Enter или щелкните по любой другой ячейке, чтобы применить изменения.

Способ второй

  1. Щелкните мышью по ячейке с текстом. Текст, содержащийся в ячейке, отобразится в строке формул.
  2. Используя обычные методы редактирования, измените текст в строке формул.
  3. Нажмите клавишу Enter или щелкните по любой другой ячейке, чтобы применить изменения.

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

Автозаполнение ячеек

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

  1. Введите в ячейку A1 слово Понедельник.
  2. Нажмите клавишу Enter, чтобы завершить ввод. Фокус выделения перейдет на ячейку A2.
  3. Выделите ячейку A1.
  4. Установите указатель мыши на маркер в правом нижнем углу рамки выделения так, чтобы указатель принял вид значка «плюс».
  5. Нажав и удерживая кнопку мыши, перетащите указатель вниз, пока в рамку выделения не попадет диапазон, включающий ячейку A7, после чего отпустите кнопку мыши. Ячейки A1:A7 автоматически будут заполнены названиями дней недели в правильном порядке (рис. 5.8).

Рис. 5.8. Автозаполнение ячеек

Если распространить автозаполнение на нижележащие ячейки, то есть, на ячейки A8, A9, A10 и т. д., начнется формирование новой недели, то есть, в ячейке A8 появится текст Понедельник, в ячейке A9 — Вторник и т. д. Автозаполнение выполняется с указанного в первой ячейке значения. Так, например, если в первой ячейке мы укажем не Понедельник, а Суббота, то в следующих ячейках автоматически появятся дни, идущие по порядку (Воскресенье, Понедельник, Вторник и т. д.).

Вы можете самостоятельно попробовать выполнить вышеописанный пример, указав в первой ячейке не день недели, а название месяца, например Март. В результате автоматического заполнения в остальных ячейках появятся названия следующих месяцев (Апрель, Май, Июнь…). Также автоматическое заполнение работает с указанными в ячейках датами и числами.

  1. Очистите ячейки на листе. Напомним, для этого нужно выделить ячейки и нажать клавишу Delete.
  2. Введите в ячейку A1 цифру 1.
  3. Введите в ячейку A2 цифру 2.
  4. Выделите ячейки A1 и A2.
  5. Установите указатель мыши на маркер в правом нижнем углу рамки выделения так, чтобы указатель принял вид значка «плюс».
  6. Нажав и удерживая кнопку мыши, перетащите указатель вниз, выделив несколько расположенных ниже ячеек.
  7. В выделенных ячейках появятся числовые значения, следующие по порядку (рис. 5.9).

Рис. 5.9. Автозаполнение порядковыми числами

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

  1. Очистите ячейки на листе. Напомним, для этого нужно выделить ячейки и нажать клавишу Delete.
  2. Введите в ячейку A1 цифру 3.
  3. Введите в ячейку A2 цифру 9.
  4. Выделите ячейки A1 и A2.
  5. Установите указатель мыши на маркер в правом нижнем углу рамки выделения так, чтобы указатель принял вид значка «плюс».
  6. Нажав и удерживая кнопку мыши, перетащите указатель вниз, выделив несколько расположенных ниже ячеек.
  7. В выделенных ячейках появятся числовые значения (рис. 5.10).

В данном случае на основе первых двух чисел программа распознала арифметическую прогрессию, где каждое следующее число больше предыдущего на 6, и продолжила рад чисел (15, 21, 27, 33…).

Рис. 5.10. Автозаполнение прогрессией

Программа Excel способна распознавать зависимость также в датах, днях недели и месяцах. Попробуйте сами ввести в первые ячейки дни Понедельник и Среда, а затем выполнить операцию автозаполнения. Вы увидите, что ряд будет продолжен «через день» (Пятница, Воскресенье, Вторник, Четверг, Суббота, Понедельник…).

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

Почтовая рассылка

Постановка задачи

Имеем таблицу в Microsoft Excel, в которой хранится информация о ключевых клиентах нашей компании (адреса эл.почты, имена, названия компаний и т.д.), которых мы хотим поздравить с очередным праздником.

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

В конце все созданные сообщения надо:

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

В терминах Microsoft Office такая процедура называется Слиянием (Mail Merge). Поехали…

Подготовка списка клиентов в Excel

mailmerge1.gif

Таблица со списком клиентов для рассылки должна удовлетворять нескольким простым условиям:

  • Шапка таблицы должна быть простой — одна строка с уникальными названиями столбцов (без повторений и пустых ячеек).
  • В таблице не должно быть объединенных ячеек.
  • В таблице не должно быть пустых строк или столбцов (отдельные пустые ячейки допускаются).

Если планируется отправка по электронной почте, то, само-собой, в таблице должен быть столбец с адресами получателей.

Поскольку Excel и Word не смогу сами определить пол клиента по имени, то имеет смысл сделать отдельный столбец с обращением (господин, госпожа и т.п.) или с родовым окончанием (-ый или -ая) для обращения «Уважаемый(ая)…» Как вариант, возможно полуавтоматическое определение пола в зависимости от окончания отчества («а» или «ч»), реализованное функцией ПРАВСИМВ (RIGHT).

В новых версиях Microsoft Excel 2007/2010 для таких таблиц очень удобно использовать инструмент Форматировать как таблицу (Format as Table) с вкладки Главная (Home). Подробнее про такие «умные таблицы» можно почитать тут.

Создаем сообщение в Word и подключаем Excel

Открываем новый пустой документ в Microsoft Word и набираем туда текст нашего сообщения, оставляя в нем пустые места для будущей вставки имени клиента и его компании.  

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

mailmerge3.gif

В Word 2003 и старше эта команда была доступна в меню Сервис — Письма и рассылки — Мастер слияния (Tools — Letters and Mailings — Mail Merge).

Далее следует процесс из 6 этапов (переключение между ними — с помощью кнопок Вперед (Next) и Назад (Back) в правом нижнем углу в области задач).

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

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

mailmerge4.gif

Этап 2. Выбор документа

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

mailmerge5.gif

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

На этом шаге мы подключаем список клиентов в Excel к документу Word. Выбираем Использование списка и жмем на Обзор (Browse), после чего в диалоговом окне открытия файла указываем где лежит наш файл со списком клиентов.

mailmerge6.gif

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

mailmerge7.gif

Этап 4. Создание письма

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

mailmerge10.gif

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

mailmerge12.gif

Если в исходной таблице не было специального столбца для окончания «ый»/»ая» к слову «уважаем» (как в нашем примере), но был обычный столбец «Пол» с классическими «муж» и «жен», то можно воспользоваться кнопкой Правила (Rules) на вкладке Рассылки (Mailings):

mail-merge-rules.png

Эта кнопка открывает список правил (функций и полей), доступных для вставки в документ при создании рассылки. Для подстановки нужного окончания к слову «уважаемый/ая» выберем третий пункт IF…THEN…ELSE. В открывшемся затем окне зададим правило подстановки правильного окончания в зависимости от пола:

mail-merge-if.png

Этап 5. Просмотр писем

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

mailmerge2.gif

Этап 6. Завершение слияния

На завершающем этапе возможны несколько вариантов:

mailmerge9.gif

Нажатие ссылки Печать (Print) приведет к немедленной отправке всех результатов слияния на принтер без вывода на экран.

Если необходимо сохранить созданные в результате слияния документы для дальнейшего использования или требуется внести ручную правку в некоторые из документов, то лучше использовать ссылку Изменить часть писем (Edit individual letters), которая выведет результаты слияния в отдельный файл:

mailmerge13.gif

Если вы на Шаге 1 выбирали опцию Электронные сообщения (E-mail), то на Шаге 6 вам предложат ввести тему для отправляемых сообщений и выбрать столбец таблицы, содержащий адреса электронной почты для рассылки. Затем все созданные сообщения будут помещены в папку Исходящие (Outbox) вашего почтового клиента Outlook.

Для проверки правильности созданных сообщений можно заранее временно отключить Outlook от сервера, чтобы письма сразу не ушли и вы могли их посмотреть и убедиться, что с ними все в порядке. Для этого в меню Microsoft Outlook можно выбрать команду Файл — Автономный режим или даже временно отключить сетевое подключение к вашему компьютеру. Письма временно «застрянут» в папке Исходящие (Outbox) и вы сможете их открыть и проверить перед отправкой.

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

  • Отправка книги или листа Excel по электронной почте
  • Создание электронных писем с помощью функции ГИПЕРССЫЛКА (HYPERLINK)
  • Инструмент для массовой рассылки сообщений (в т.ч. с вложениями) по списку из надстройки PLEX

письмо excel

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

Данная статья описывает три способа отправки писем с помощью VBA в Excel. Вы можете скачать файл с примером отправки email с помощью VBA в Excel.

Отправить письмо в Excel с помощью VBA

Один из самых простых способов для автоматизации отправки почты с Excel заключается в вызове функции Create («ObjectOutlook.Application»). Данная функция возвращающает ссылку на ActiveX объект (в данном случает приложение Outlook), которое затем используется для создания и отправки электронной почты.

Чтобы проверить данный способ в работе, скопируйте и вставьте код ниже в VB редактор.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

Sub Send_Email_Using_VBA()
Dim Email_Subject, Email_Send_From, Email_Send_To, _
Email_Cc, Email_Bcc, Email_Body As String
Dim Mail_Object, Mail_Single As Variant
Email_Subject = «Попытка отправить письмо с помощью VBA»
Email_Send_From = «exceltipmail@gmail.com»
Email_Send_To = » exceltipmail@gmail.com «
Email_Cc = » exceltipmail@gmail.com «
Email_Bcc = » exceltipmail@gmail.com «
Email_Body = «Поздравляем!!!! Ваше письмо успешно отправлено !!!!»
On Error GoTo debugs
Set Mail_Object = CreateObject(«Outlook.Application»)
Set Mail_Single = Mail_Object.CreateItem(0)
With Mail_Single
.Subject = Email_Subject
.To = Email_Send_To
.cc = Email_Cc
.BCC = Email_Bcc
.Body = Email_Body
.send
End With
debugs:
If Err.Description &lt;&gt; «» Then MsgBox Err.Description
End Sub

В качестве напоминания: Когда вы пытаетесь отправить письмо вышеуказанным способом, система безопасности будет выдавать каждый раз предупреждающее окно, в котором будет говориться о том, что Программа пытается отправить сообщение от вашего имени… и возможности обойти этот шаг нет.

предупреждение об отправке письма

К счастью, существует еще два способа, с помощью которых данный вопрос может быть решен: первый – через использование CDO, второй – имитирующий использование событий нажатий клавиш клавиатуры.

Отправить письмо в Excel с помощью CDO

Что такое CDO? CDO является библиотекой объектов, которая предоставляет интерфейс Messaging Application Programming Interface (MAPI). CDO позволяет манипулировать обменом данных, и отправлять и получать сообщения.

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

В нашем примере мы используем функцию CreateObject («CDO.Message»). Важно отметить, что необходимо правильно установить конфигурацию SMTP сервера, чтобы не допустить появления ошибок Run-time error 2147220973(80040213) или sendUsing configuration value is invalid. Пример ниже настроен на отправку сообщений через почту Google (Gmail). Для других почтовых серверов, вам потребуется ввести свои значения SMTP-сервера и SMTP-порта.

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

Sub CDO_Mail_Small_Text_2()
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
Dim Flds As Variant
Set iMsg = CreateObject(«CDO.Message»)
Set iConf = CreateObject(«CDO.Configuration»)
iConf.Load -1
Set Flds = iConf.Fields
With Flds
.Item(«https://schemas.microsoft.com/cdo/configuration/smtpusessl») = True
.Item(«https://schemas.microsoft.com/cdo/configuration/smtpauthenticate») = 1
.Item(«https://schemas.microsoft.com/cdo/configuration/sendusername») = «Полный адрес вашего GMail ящика»
.Item(«https://schemas.microsoft.com/cdo/configuration/sendpassword») = «GMail пароль»
.Item(«https://schemas.microsoft.com/cdo/configuration/smtpserver») = «smtp.gmail.com»
.Item(«https://schemas.microsoft.com/cdo/configuration/sendusing») = 2
.Item(«https://schemas.microsoft.com/cdo/configuration/smtpserverport») = 465
.Update
End With
strbody = «Поздравляем!!!! Ваше письмо успешно отправлено !!!!»
With iMsg
Set .Configuration = iConf
.To = «Почтовый адрес получателя»
.CC = «»
.BCC = «»
.From = «»«ВашеИмя»» &lt;Reply@something.nl&gt;»
.Subject = «Попытка отправить письмо с помощью CDO»
.TextBody = strbody
.Send
End With
End Sub

Обратите внимание, чтобы воспользоваться данным методом вам необходимо подключить библиотеку CDO в редакторе макросов Tool –> References.

Отправить письмо с помощью CDO

Отправить письмо в Excel с помощью Send Keys

Другой способ отправки email с помощью Excel – использование команды ShellExecute, которая выполняет любую программу в VBA. Команда ShellExecute используется для загрузки документа с соответствующей программой. По сути, вы создаете объект String (текстовые данные) и передаете его в качестве параметра для функции ShellExecute. Остальная часть операций выполняется в окнах. Автоматически определяется, какая программа связана с данным типом документа и используется для загрузки документа. Вы можете использовать функцию ShellExecute, чтобы открыть Internet Explorer, Word, Paint и множество других приложений. В коде ниже используется задержка в три секунды, чтобы убедиться, что отправляемое письмо корректно и для возможности предотвратить отправку, если вы вдруг нашли какие-нибудь недочеты.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Sub Send_Email_Using_Keys()
Dim Mail_Object As String
Dim Email_Subject, Email_Send_To, Email_Cc, Email_Bcc, Email_Body As String
Email_Subject = «Попытка отправить письмо с помощью SendKeys»
Email_Send_To = «exceltipmail@gmail.com «
Email_Cc = «exceltipmail@gmail.com «
Email_Bcc = «exceltipmail@gmail.com «
Email_Body = «Поздравляем!!!! Ваше письмо успешно отправлено !!!!»
Mail_Object = «mailto:» & Email_Send_To & «?subject=» & Email_Subject & «&body=» & Email_Body & «&cc=» & Email_Cc & «&bcc=» & Email_Bcc
On Error GoTo debugs
ShellExecute 0&, vbNullString, Mail_Object, vbNullString, vbNullString, vbNormalFocus
Application.Wait (Now + TimeValue(«0:00:03»))
Application.SendKeys «^({ENTER})»
Application.SendKeys («{ENTER}»)
debugs:
If Err.Description <> «» Then MsgBox Err.Description
End Sub

Cкачать файл с примером отправки email с помощью VBA в Excel

Обычно мы используем почтовые клиенты, такие как Outlook, Gmail и т. д., для отправки электронных писем. Но многие люди хранят данные в книгах Excel, и им необходимо отправлять некоторые данные другим, пока они работают с ними. Поэтому им необходимо отправлять электронные письма прямо из книги Excel, что экономит время на работу с почтовым клиентом. Это пошаговое руководство покажет вам, как отправлять электронные письма из Excel в различных условиях.

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

Содержание: [ Скрывать ]

(Щелкните любой заголовок в оглавлении ниже или справа, чтобы перейти к соответствующей главе.)


1. Основы отправки писем из Excel

В этом разделе представлены основы отправки электронных писем из Excel.

1.1 Отправка электронных писем из Excel с помощью встроенных функций Excel

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


1.1.1 Отправка электронной почты из Excel с помощью формулы

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

Примечание: Если в полях «Кому» или «Копия» указано несколько получателей, разделите их точкой с запятой.

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

Синтаксис и аргументы HYPERLINK функции следующие.

Синтаксис

HYPERLINK(link_location, [friendly_name])

аргументы

Link_location (обязательно): Путь и имя файла открываемого документа;

Советы. В этом руководстве все поля, которые нам нужны для электронного письма, такие как адрес электронной почты получателя, получатели копий, строка темы и основной текст, должны быть помещены в первый аргумент «link_location».

Дружественное имя (необязательно): значение перехода, отображаемое в ячейке.


1.1.1.1 Добавить адрес электронной почты в формулу гиперссылки

Здесь мы используем «почта:» как часть формулы для добавления получателя электронной почты. В этом примере адрес электронной почты первого получателя находится в ячейке B2, поэтому нам нужно добавить «mailto:» и сослаться на ячейку B2.

«почта:»&B2

1. Выберите ячейку для отображения гиперссылки. В этом случае я выбираю ячейку F2.

2. Затем введите в него следующую формулу.

=HYPERLINK(«mailto:»&B2)

Внимание: Если вы нажмете кнопку Enter ключ, будет создана гиперссылка, как показано на снимке экрана ниже. Когда вы нажмете на ссылку, будет создано электронное письмо Outlook, и адрес электронной почты получателя будет автоматически заполнен в поле «Кому».

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


1.1.1.2 Добавить получателей копии в формулу гиперссылки

Чтобы добавить получателей копий к функции гиперссылки, добавьте «?cc=» как часть формулы следующим образом.

«?cc=» & C2

где C2 содержит адрес электронной почты получателя копии.

Формула в ячейке F2 должна быть следующей:

=HYPERLINK(«mailto:» & B2 & «?cc=» & C2)


1.1.1.3 Добавить строку темы в формулу гиперссылки

Чтобы добавить строку темы к функции гиперссылки, добавьте «&тема=» как часть формулы следующим образом.

«&тема=»& D2

где C2 содержит тему электронной почты.

Формула в ячейке F2 теперь должна выглядеть следующим образом:

=HYPERLINK(«mailto:» & B2 & «?cc=» & C2 & «&subject=»& D2)


1.1.1.4 Добавление основного текста с разрывами строк в формулу гиперссылки

Последний шаг — добавить основной текст в формулу гиперссылки. Как вы можете видеть в примере, две строки текста в E2 разделены разрывом строки, и вы хотите сохранить разрыв строки в теле письма. Распознает ли Outlook разрыв строки в этом случае? Давайте проверим это.

Чтобы добавить основной текст в формулу гиперссылки, вам нужно добавить «&тело=» как часть формулы следующим образом.

«&тело=»& E2

где E2 содержит основной текст сообщения электронной почты.

Формула в ячейке F2 теперь отображается следующим образом:

=HYPERLINK(«mailto:» & B2 & «?cc=» & C2 & «&subject=»& D2 & «&body=»& E2)

Примечание: Если вы нажмете Enter ключ и нажмите на ссылку. Вы можете видеть в новом электронном письме, что содержимое в теле письма отображается в той же строке.

Чтобы отобразить тело электронной почты в отдельных строках, вам необходимо изменить содержимое ячейки, добавив код символа возврата каретки. % 0A к тексту, где нужно вставить разрыв строки. Смотрите скриншот:


1.1.1.5 Укажите текст для отображения гиперссылки

На предыдущих шагах мы завершили аргумент Link_location с полями электронной почты. Здесь, в этом разделе, мы собираемся закончить следующий аргумент [friendly_name].

В этом случае я хочу, чтобы ячейка гиперссылки отображала текст как «Электронная почта для хх”, где xx — имя получателя в формате A2. Таким образом, формулу в F2 следует изменить на:

=HYPERLINK(«mailto:» & B2 & «?cc=» & C2 & «&subject=»& D2 & «&body=»& E2, «Email to «&A2)

Нажмите Enter ключ для получения результата.

Выберите эту ячейку формулы и перетащите ее Ручка автозаполнения вниз, чтобы создать другие гиперссылки электронной почты. Смотрите скриншот:


1.1.2 Отправка электронной почты из Excel с помощью функции гиперссылки

За исключением использования приведенной выше формулы гиперссылки, вы можете вручную создать гиперссылку электронной почты с Вставить Гиперссылка функция в Экселе. Этот раздел покажет вам шаги.

1. Щелкните правой кнопкой мыши письмо, в которое вы хотите вставить гиперссылку, выберите Ссылка из контекстного меню.

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

2.1) Выбрать лектронная почта в левой панели.

2.2). Текст для отображения текстовое поле, введите текст, который вы хотите отобразить в ячейке;

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

2.3). Адрес электронной почты текстовое поле, вам нужно ввести следующие адреса электронной почты.

mailto: адрес электронной почты

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

2.4). Тема текстовое поле, вы можете указать тему и тело письма прямо здесь. Пожалуйста, настройте следующим образом:

Email subject&body=Тело письма

В этом случае я набираю Ежемесячная продажа&body=Привет,%0AEписьмо получено.

> где предметом Ежемесячная распродажа;

и

> тело письма:

Здравствуйте,

Электронная почта получена. (% 0A это код символа возврата каретки, который может быть распознан Outlook)

2.5) Нажмите OK кнопку для сохранения гиперссылки. Смотрите скриншот:

При нажатии на гиперссылку будет создано электронное письмо Outlook с указанными полями «Кому», «Тема» и «Тело», как показано на снимке экрана ниже.

Заметки:

1) С помощью этого метода вам приходилось создавать каждую гиперссылку электронной почты вручную.

2) Вы не можете добавить поле «Копия» в электронные письма с помощью этого метода. Итак, если вам нужно поле «Копия», добавьте его из нового открывающегося окна электронной почты.


1.2 Отправка электронной почты нескольким получателям в ячейках с помощью сценария VBA

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


1.2.1 Отправить электронное письмо нескольким получателям в ячейках с помощью сценария VBA

1. На листе, который содержит все адреса электронной почты, на которые вы хотите отправить электронное письмо. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль, а затем вставьте следующий код в Модуль (код) окно.

Код VBA: отправить электронное письмо на список адресов электронной почты

Sub sendmultiple()
'updateby Extendoffice 20220802
    Dim xOTApp As Object
    Dim xMItem As Object
    Dim xCell As Range
    Dim xRg As Range
    Dim xEmailAddr As String
    Dim xTxt As String
    On Error Resume Next
    xTxt = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Set xOTApp = CreateObject("Outlook.Application")
    For Each xCell In xRg
        If xCell.Value Like "*@*" Then
            If xEmailAddr = "" Then
                xEmailAddr = xCell.Value
            Else
                xEmailAddr = xEmailAddr & ";" & xCell.Value
            End If
        End If
    Next
    Set xMItem = xOTApp.CreateItem(0)
    With xMItem
        .To = xEmailAddr
        .Subject = "Test"
        .Body = "Dear " _
                & vbNewLine & vbNewLine & _
                "This is a test email " & _
                "sending in Excel"
        .Display
    End With
End Sub

3. нажмите F5 ключ для запуска кода и Kutools for Excel всплывает диалоговое окно. Выберите список адресов электронной почты и нажмите OK.

Ноты:

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

Установите xRg = Application.InputBox(«Пожалуйста, выберите список адресов:», «Kutools for Excel», xTxt, , , , , 8)

с

Установить xRg = диапазон («A2: A7»)

2) Вы можете указать свою тему и тело письма в следующих строках:

.Тема = «Тест»

.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"

3) Чтобы напрямую отправить электронное письмо, не открывая следующее окно нового сообщения, вам необходимо заменить эту строку:

.Отображать

с

.Послать

После запуска кода все адреса электронной почты в выбранном диапазоне отображаются в поле «Кому» окна сообщения. Смотрите скриншот:


1.2.2 Отдельно отправлять электронные письма каждому получателю, указанному в ячейках, с помощью сценария VBA

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

1. На листе, который содержит все адреса электронной почты, на которые вы хотите отправлять электронные письма. нажмите другой + F11 ключи к откройте окно Microsoft Visual Basic для приложений.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули, а затем вставьте следующий код в окно модуля (код).

Код VBA: отправлять электронные письма на каждый адрес электронной почты, указанный в ячейках отдельно

Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
    Dim xRg As Range
    Dim xRgEach As Range
    Dim xRgVal As String
    Dim xAddress As String
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    On Error Resume Next
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
    For Each xRgEach In xRg
        xRgVal = xRgEach.Value
        If xRgVal Like "?*@?*.?*" Then
            Set xMailOut = xOutApp.CreateItem(olMailItem)
            With xMailOut
                .To = xRgVal
                .Subject = "Test"
                .Body = "Dear " _
                      & vbNewLine & vbNewLine & _
                        "This is a test email " & _
                        "sending in Excel"
                .Display
                '.Send
            End With
        End If
    Next
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

3. Затем нажмите Tools
> Рекомендации. В разделе Ссылки — VBAProject диалоговое окно, найдите и отметьте Библиотека объектов Microsoft Outlook 16.0 и нажмите OK чтобы сохранить изменения.

4. нажмите F5 ключ для запуска кода и Kutools for Excel всплывает диалоговое окно. Выберите список адресов электронной почты и нажмите ОК.

Ноты:

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

Установите xRg = Application.InputBox(«Пожалуйста, выберите список адресов:», «Kutools for Excel», xTxt, , , , , 8)

с

Установить xRg = диапазон («A2: A7»)

2) Вы можете указать свою тему и тело письма в следующих строках:

.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"

3) Чтобы напрямую отправить электронное письмо, не открывая следующие окна сообщений, вам необходимо заменить эту строку:

.Отображать

с

.Послать

В этом примере в выбранном диапазоне шесть адресов электронной почты, поэтому автоматически будет создано шесть окон сообщений Outlook с отдельным адресом электронной почты, указанным в поле «Кому», как показано на снимке экрана ниже.

5. Наконец, нажмите Отправить кнопку, чтобы отправить письмо по одному.


2. Вставьте вложения или подпись Outlook в электронные письма, отправленные из Excel (с помощью сценариев VBA).

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

2.1 Вставляйте вложения в электронные письма, отправленные из Excel

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


2.1.1 Отправить по электронной почте определенный файл в качестве вложения

Вы можете применить следующий код VBA для отправки по электронной почте одного или нескольких файлов в папке в виде вложений из Excel.

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем вставьте следующий код VBA в окно модуля (код).

Код VBA: файлы электронной почты в папке в виде вложений из Excel

Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
    Dim xStrFile As String
    Dim xFilePath As String
    Dim xFileDlg As FileDialog
    Dim xFileDlgItem As Variant
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
    If xFileDlg.Show = -1 Then
        With xMailOut
            .BodyFormat = olFormatRichText
            .To = "xxx@aaa.com"
            .Subject = "test"
            .HTMLBody = "test"
            For Each xFileDlgItem In xFileDlg.SelectedItems
                .Attachments.Add xFileDlgItem
            Next xFileDlgItem
            .Display
        End With
    End If
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

Заметки:

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с адресом электронной почты вашего собственного получателя;

2) Изменить тему письма и тело письма отдельно в строке .Subject = «тест» и .HTMLBody = «тест»;

3) Вы можете добавить получателей копии и скрытой копии по мере необходимости. Просто добавьте следующие две строки ниже строки .Кому = xxx@aaa.com.

.CC = «адрес электронной почты»

.BCC = «адрес электронной почты»

3. Затем нажмите Tools
> Рекомендации. В разделе Ссылки — VBAProject диалоговое окно, найдите и отметьте Библиотека объектов Microsoft Outlook 16.0 и нажмите OK чтобы сохранить изменения.

4. нажмите F5 ключ для запуска кода, затем Приложения появится всплывающее окно, выберите файлы, которые необходимо прикрепить к электронному письму, а затем нажмите OK.

Затем всплывает окно сообщения. Вы можете видеть, что выбранные файлы отображаются в виде вложений в поле «Прикрепленные».


2.1.2 Отправьте текущий рабочий лист по электронной почте в виде вложения

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

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите вставить > Модули. Затем вставьте следующий код VBA в Модуль (код) окно.

Код VBA: отправьте текущий рабочий лист по электронной почте в виде вложения

Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & ""
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte features"
    .Body = "Please check and read this document."
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub

Ноты:

1) В линейке.Кому = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему письма и тело письма отдельно в строке .Subject = «особенности kte» и .Body = «Пожалуйста, проверьте и прочитайте этот документ.»;

3) В следующих двух строках:

.CC = «адрес электронной почты»

.BCC = «адрес электронной почты»

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

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф  перед каждой строкой.

3. нажмите F5 для запуска кода, то текущий рабочий лист сохраняется как рабочая книга Excel и автоматически вставляется в окно сообщения в виде вложения. Смотрите скриншот:

Примечание: Прикрепленная рабочая книга, содержащая только текущий рабочий лист, имеет то же имя, что и исходная рабочая книга. И время запуска кода также добавляется к имени книги.


2.1.3 Отправить текущую книгу по электронной почте в виде вложения

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

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль. Затем вставьте следующий код VBA в окно модуля (код).

Код VBA: отправьте текущую книгу по электронной почте в виде вложения из Excel

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Ноты:

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему письма и тело письма отдельно в строке .Subject = «особенности kte» и .Body = «Пожалуйста, проверьте и прочитайте этот документ.»;

3) В следующих двух строках:

.CC = «адрес электронной почты»

.BCC = «адрес электронной почты»

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

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

3. нажмите F5 ключ для запуска кода, то текущая книга автоматически вставляется в окно сообщения в качестве вложения. Смотрите скриншот:


2.1.4 Электронная почта всей книги в виде вложения PDF

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

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль. Затем вставьте следующий код VBA в окно модуля (код).

Код VBA: отправьте всю книгу по электронной почте в виде вложения PDF

Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next

Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "" & FileName

Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
    FilePath, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False

Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
       .To = "xxx@aaa.com"
       .CC = "Email Address"
       .BCC = "Email Address"
       .Subject = "test"
       .Body = "test"
       .Attachments.Add FilePath
       .Display   'or use .Send
   End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub

Ноты:

1) В строке .To = xxx@aaa.com, замените xxx@aaa.com реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему письма и тело письма отдельно в строке .Subject = «тест» и .Body = «тест»;

3) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

4) Имя файла PDF будет таким же, как имя исходной книги. И время запуска кода также будет добавлено к имени книги. Если вам не нужно добавлять метку времени к имени файла, удалите & Формат (Теперь «дд-ммм-гг ч-мм-сс») со следующей строки.

FileName = Left(Wb.Name, (InStrRev(Wb.Name, «.», -1, vbTextCompare) — 1)) & Format(Now, «dd-mmm-yy h-mm-ss») & «.pdf «

3. нажмите F5 ключ для запуска кода. Затем текущая книга автоматически вставляется в новое окно сообщения в виде вложенного файла PDF. Смотрите скриншот:


2.1.5 Отправьте текущий рабочий лист по электронной почте в виде вложения PDF

Например, есть рабочая книга с названием «Ежемесячные продажи», и вы завершили таблицу отчета о продажах на листе с названием «Отчет о продажах» и хотите отправить эту таблицу в виде файла PDF своим коллегам. Следующий код VBA может оказать вам услугу.

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите вставить > Модуль. Затем вставьте следующий код VBA в окно модуля (код).

Код VBA: отправьте текущий рабочий лист по электронной почте в виде вложения PDF

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Ноты:

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему письма и тело письма отдельно в строке .Subject = «тест» и .Body = «тест»;

3) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

4) Имя файла PDF будет: имя исходной книги_имя исходного листа. В этом случае имя файла PDF будет Ежемесячный отчет о продажах_продажи.

3. нажмите F5 ключ для запуска кода. Затем текущий рабочий лист автоматически вставляется в новое окно сообщения в виде вложения файла PDF. Смотрите скриншот:


2.2 Вставьте подпись Outlook в электронные письма, отправленные из Excel

Возьмем приведенный выше случай в качестве примера: вы применяете приведенный выше код VBA для отправки текущего рабочего листа в виде вложения PDF-файла из Excel, но подпись Outlook не может быть добавлена ​​в окно сообщения. Чтобы сохранить подпись Outlook по умолчанию в электронном письме, отправленном из Excel, поможет следующий метод.

Два кода VBA перечислены ниже.

Код VBA 1: код помогает сохранить подпись Outlook.

Код VBA 2: код помогает отправить текущий рабочий лист по электронной почте в виде вложения PDF.

Код VBA 1: сохранить подпись Outlook

.HTMLBody = "Email body" & "
" & .HTMLBody

Код VBA 2: отправить текущий рабочий лист по электронной почте в виде вложения PDF

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

1. Обычно вам нужно нажать кнопку другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем вставьте указанный выше код VBA 2 в окно «Модуль (код)».

3. Чтобы сохранить подпись Outlook по умолчанию в электронном письме, отправленном из Excel, вам необходимо изменить код VBA 2 следующим образом:

1) Заменить .Тело линия с Код VBA 1;

2) Переместить линию .Отображать под линией С OutlookMail (или с xMailOut в других кодах). Смотрите скриншот:

Вот полный код после модификации.

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .Display
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .HTMLBody = "Email body" & "
" & .HTMLBody .Attachments.Add FileName '.Send End With Kill FileName Set OutlookMail = Nothing Set OutlookApp = Nothing End Sub

4. нажмите F5 ключ для запуска кода. Затем вы получите новое окно сообщения с текущим рабочим листом, прикрепленным в виде файла PDF, а подпись Outlook по умолчанию будет автоматически вставлена ​​в конец тела электронной почты.


3. Автоматически отправлять электронные письма из Excel при выполнении условия (с помощью сценариев VBA)

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

3.1 Автоматически отправлять электронное письмо, когда ячейка достигает определенного значения

Как показано на снимке экрана ниже, предположим, что у вас есть таблица продаж с ячейкой D6, содержащей общую сумму продаж. Вы хотите автоматически отправлять электронное письмо своему начальнику на основе общего объема продаж, например, создать или отправить электронное письмо автоматически, когда общий объем продаж превышает 10000 10000, но если общий объем продаж равен или меньше XNUMX XNUMX, никаких действий не предпринимается.

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

2. В дебюте Microsoft Visual Basic для приложений окно, вставьте следующий код VBA в Лист (Код) окно.

Код VBA: автоматически отправлять электронное письмо, когда ячейка достигает определенного значения в Excel

Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub

Заметки:

1) D6 это ячейка, значение которой вы будете отправлять по электронной почте на основе.

2) > 10000 это условие, которое означает, что электронное письмо будет отправлено, когда значение в D6 больше 10000.

3) Диапазон («D6») в следующей строке означает, что тело электронной почты будет ссылаться на значение в D6.

xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")

4) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

5) Изменить тему письма в строке .Subject = «тест».

6) В следующих двух строках:

.CC = «Адрес электронной почты»

.СК = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

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


3.2 Автоматически отправлять электронное письмо при изменении значения ячейки

Как показано на снимке экрана ниже, предположим, что вы получили книгу, содержащую ежемесячные продажи на разных листах и ​​общую сумму продаж на листе. Вам необходимо проверить общий объем продаж и, если общий объем продаж изменен, отправить книгу обратно отправителю и сообщить отправителю, что ячейка была изменена.

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

2. В дебюте Microsoft Visual Basic для приложений вставьте следующий код VBA в окно Sheet (Code).

Код VBA: автоматически отправлять электронное письмо при изменении указанного значения ячейки

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If

ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address

Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."

With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Заметки: В коде

1) B14 в коде означает, что при изменении значения ячейки B14 вы отправите электронное письмо.

2) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

3) Изменить тему письма в строке .Subject = «Рабочий лист изменен».

4) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

Отныне при изменении значения в ячейке B14 сообщение Outlook будет создаваться автоматически, как показано на снимке экрана ниже.


3.3 Автоматически отправлять электронное письмо при сохранении книги

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

1. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. В этом окне дважды щелкните Эта рабочая тетрадь в Проекты под застройку панели, затем вставьте следующий код VBA в ThisWorkbook (Код) окно.

Код VBA: автоматически отправлять электронное письмо при сохранении книги

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xName As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailItem = xOutApp.CreateItem(0)
    xName = ActiveWorkbook.FullName
    With xMailItem
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .Subject = "The workbook has been updated"
        .Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
        .Attachments.Add xName
        .Display
       '.send
    End With
    Set xMailItem = Nothing
    Set xOutApp = Nothing
End Sub

Заметки: В коде

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему и тело письма отдельно в строках .Subject = «Книга обновлена» и .Body = «Привет,» & Chr(13) & Chr(13) & «Файл обновлен»..

3) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

3. Отныне при сохранении книги нажатием кнопки Ctrl + S клавиши или нажав кнопку Сохраните кнопка, электронная почта Outlook будет создана автоматически. Вы можете видеть, что текущая рабочая книга прикреплена как вложение, а поля заполнены указанным содержимым. Смотрите скриншот:

Tips: Если вы часто используете эту книгу, здесь рекомендуется сохранить книгу как Excel Macro-Enabled Workbook чтобы сохранить сценарий VBA для использования в будущем. Шаги следующие.

1) Нажмите Файл > Сохранить как, а затем выберите папку для сохранения файла.

2). Сохранить как диалоговое окно, переименуйте файл, как вам нужно в Имя файла текстовое поле, выберите Excel Macro-Enabled Workbook в Сохранить как раскрывающийся список и, наконец, щелкните Сохраните кнопка. Смотрите скриншот:


3.4 Автоматически отправлять электронное письмо в определенное время

Допустим, вам нужно отправить кому-то электронное письмо с рабочей тетрадью назначения задач. каждую пятницу в 9 утраи хотите сделать это автоматически в Excel без необходимости вручную управлять почтовым клиентом. Этот раздел покажет вам, как это сделать.

1. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль. Затем вставьте следующий код VBA в окно модуля.

VBA code1: отправить текущую книгу по электронной почте в виде вложения из Excel

Sub Timer()
    If Weekday(Date) = vbFriday Then
        SendWorkBook
        Application.OnTime TimeValue("09:00:00"), "Timer"
    Else
        Application.OnTime TimeValue("09:00:00"), "Timer"
    End If
End Sub

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. В этом окне дважды щелкните Эта рабочая тетрадь в Проекты под застройку панели, затем вставьте следующий код VBA в ThisWorkbook (Код) окно.

Код VBA 2: автоматически отправлять электронное письмо в определенное время

Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub

Заметки:

1) В коде VBA 1, пятница в следующей строке означает, что письмо будет отправляться автоматически каждую пятницу;

Если День(Дата) = vbFriday Тогда

2) В коде VBA 1 и коде VBA 2 время 09: 00: 00 означает, что письмо будет отправлено в 9 утра в определенный день.

Вы можете изменить день и время, как вам нужно.

3) Когда код запустится, будет создано электронное письмо. Если вы не хотите, чтобы всплывающее окно сообщения было отправлено напрямую, удалите строку .Отображать из кода VBA 1 и удалите апостроф перед линией ‘.Отправлять.

4. Сохраните коды, а затем сохраните книгу как книгу Excel с поддержкой макросов следующим образом.

4.1) Нажмите Файл > Сохранить как, а затем выберите папку для сохранения файла.

4.2). Сохранить как диалоговое окно, переименуйте файл, как вам нужно в Имя файла текстовое поле, выберите Excel Macro-Enabled Workbook в Сохранить как раскрывающийся список и, наконец, щелкните Сохраните кнопка. Смотрите скриншот:

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


4. Дополнительные темы

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

4.1 Электронная почта диапазона ячеек из Excel (с помощью скрипта VBA)

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

4.1.1 Электронная почта диапазона как часть основного содержимого из Excel

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

1. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Tools
> Рекомендации. А затем проверьте Библиотека объектов Microsoft Outlook 16.0 поле и нажмите OK в Ссылки — VBAProject диалоговое окно.

3. Нажмите Вставить > Модули, затем вставьте следующий код VBA в Модуль (код) окно.

Код VBA: отправьте диапазон ячеек как часть содержимого тела электронной почты из Excel.

Sub SendARangeofCells()
'Updated by Extendoffice 20220809
    Dim xRg As Range
    Dim I, J As Long
    Dim xAddress As String
    Dim xMailOut As Object
    Dim xOutApp As Object
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    With xMailOut
        .Subject = "test"
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .HTMLBody = RangetoHTML(xRg)
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

 ' The following VBA script is cited from this page:
 ' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    'Copy the range and create a new workbook to past the data in
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    'Publish the sheet to a htm file
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With

    'Read all data from the htm file into RangetoHTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")

    'Close TempWB
    TempWB.Close savechanges:=False

    'Delete the htm file we used in this function
    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function

Заметки: В коде

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

4. нажмите F5 ключ для запуска кода. Во всплывающем окне Kutools for Excel диалоговое окно, выберите диапазон ячеек, которые необходимо отправить как часть содержимого сообщения электронной почты, затем щелкните OK. Смотрите скриншот:

Затем электронная почта Outlook будет создана автоматически. Вы можете видеть, что диапазон, выбранный вами на листе, вставлен в тело электронной почты. Смотрите скриншот:


4.1.2 Электронная почта диапазона в виде вложения из Excel

Если вам нужно отправить по электронной почте диапазон ячеек на листе в виде вложения из Excel. Вы можете попробовать следующий код VBA.

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем вставьте следующий код VBA в Модуль (код) окно.

Код VBA: диапазон по электронной почте в виде вложения из Excel

Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & ""
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email address"
    .BCC = "Email address"
    .Subject = "Monthly sales for 2021"
    .Body = "Hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Заметки:

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему письма и тело письма отдельно в строке .Subject = «Ежемесячные продажи на 2021 год» и .Body = «Здравствуйте, проверьте и прочитайте этот документ.»;

3) В следующих двух строках:

.CC = «адрес электронной почты»

.BCC = «адрес электронной почты»

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

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

3. нажмите F5 ключ для запуска кода. Во всплывающем окне Kutools for Excel диалоговое окно, выберите диапазон ячеек, который необходимо отправить в качестве вложения в сообщение электронной почты, затем щелкните OK. Смотрите скриншот:

Затем электронная почта Outlook будет создана автоматически. И диапазон ячеек, выбранных вами на листе, сохраняется как книга Excel и прикрепляется к окну сообщения. Смотрите скриншот:


4.2 Отправка электронных писем при нажатии кнопки в Excel

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

1. Нажмите Застройщик > Вставить > Командная кнопка (элемент управления ActiveX). Затем нарисуйте командную кнопку на листе.

Tips: если у вас уже есть командная кнопка, пропустите этот шаг.

2. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно. В окне нажмите Вставить > Модуль, затем вставьте код VBA (код, используемый для отправки текущей книги по электронной почте в виде вложения из Excel) в окно модуля (код).

Нажмите сюда чтобы получить код.

Внимание: здесь имя макроса, созданного на шаге 2, ОтправитьКнигу.

3. нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно.

4. Теперь нужно назначить макрос на командную кнопку. Щелкните правой кнопкой мыши командную кнопку, выберите Просмотреть код из контекстного меню.

5. Затем Microsoft Visual Basic для приложений всплывающее окно, вы можете увидеть следующие две строки, перечисленные в Лист (Код) окно.

Private Sub CommandButton1_Click()
End Sub

6. Введите имя существующего макроса внутри подпроцедуры для командной кнопки.

7. нажмите другой + Q ключи, чтобы закрыть Редактор Visual Basicи нажмите Застройщик > Режим проектирования чтобы выключить режим дизайна.

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


4.3 Отправка писем с указанной учетной записи электронной почты

Обычно при запуске электронной почты из Excel с кодом VBA учетная запись электронной почты отправителя является учетной записью по умолчанию в Outlook. Предположим, вы настроили несколько учетных записей электронной почты в своем Outlook и хотите использовать определенную учетную запись для отправки электронных писем из Excel вместо использования учетной записи по умолчанию. Следующий код VBA может помочь.

В этом случае необходимы следующие коды.

Код VBA 1:

Dim OutlookMail As Outlook.MailItem

Код VBA 2:

For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next

Как использовать приведенный выше код VBA?

1) В собственном коде нужно заменить строку типа «Dim OutlookMail как объект” с кодом VBA 1;

2) Добавьте код VBA 2 под строкой «On Error Resume Next” в вашем коде. Затем укажите адрес электронной почты, который вы будете использовать для отправки электронной почты в коде VBA 2.

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

1. нажмите другой + F11 ключи. в Microsoft Visual Basic для приложений окна, нажмите Tools
> Рекомендации. А затем проверьте Библиотека объектов Microsoft Outlook 16.0 поле и нажмите OK в Ссылки — VBAProject диалоговое окно.

2. Нажмите Вставить > Модули. Затем вставьте следующий код VBA в Модуль (код) окно.

Код VBA: отправить текущую книгу в виде вложения электронной почты из Excel через указанную учетную запись Outlook.

Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next
'End
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. нажмите F5 ключ для запуска кода. Затем появляется сообщение электронной почты Outlook, вы можете видеть, что от Поле заполняется учетной записью электронной почты, которую вы указали в коде.


4.4 Отправить электронное письмо, когда наступит дата

Если вам нужно отправить электронное письмо на основе определенной даты выполнения, например, как показано на снимке экрана ниже, есть таблица проекта, когда срок выполнения в диапазоне E2:E7 равен или меньше 7 дней от сегодняшнего дня (при условии, что текущая дата — 2022/8/4), руководителям соответствующих проектов будет автоматически отправлено электронное письмо с уведомлением о скором истечении срока действия проекта.

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

2. В дебюте Microsoft Visual Basic для приложений окно, вставьте следующий код VBA в Лист (Код) окно.

Код VBA: автоматически отправлять электронное письмо при наступлении срока

Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

" xMailBody = "" xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf xMailBody = xMailBody & "" Set xMailItem = xOutApp.CreateItem(0) With xMailItem .Subject = xMailSubject .To = xRgSendVal .CC = "Email address" .BCC = "Email address" .HTMLBody = xMailBody .Display '.Send End With Set xMailItem = Nothing End If End If Next Set xOutApp = Nothing End Sub

Заметки: В коде

1) В следующих строках E2: E7 содержит сроки выполнения, на основе которых вы будете отправлять электронные письма. C2: C7 содержит адреса электронной почты, на которые вы будете отправлять электронные письма. А также D2: D7 содержит примечания, которые вы добавите в тело электронного письма, чтобы уведомить получателей о том, что срок действия проекта истекает. Вы можете изменить диапазоны по мере необходимости.

Установить xRgDate = диапазон («E2: E7»)

Установите xRgSend = Диапазон («C2: C7»)

Установите xRgText = Диапазон («D2: D7»)

2) Следующая строка означает, что срок выполнения должен быть больше 1 дня и равен или меньше 7 дней от сегодняшнего дня. Вы можете изменить его по мере необходимости.

Если CDate(xRgDateVal) — Дата <= 7 И CDate(xRgDateVal) — Дата > 0 Тогда

3) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

4) Изменить тему письма в строке .Subject = «Рабочий лист изменен».

5) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

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


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

Если вы новичок в VBA, описанные выше методы могут оказаться для вас непростыми. Здесь мы рекомендуем Kutools for ExcelАвтора Отправить письма функция, с помощью которой вы можете легко отправлять электронные письма из Excel всего несколькими щелчками мыши. Пожалуйста, сделайте следующее.

5.1 Легко создавайте список рассылки, включающий нужные поля электронной почты

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

1. Нажмите Кутулс Плюс > Создать список рассылки.

2. В дебюте Создать список рассылки окно необходимо настроить следующим образом.

2.1). Столбцы для списка рассылки раздел, отметьте нужные поля в письме;

2.2). Прикрепить файлы раздел, отметьте одно или несколько вложений, которые могут вам понадобиться;

2.3) Указать место для размещения списка рассылки;

2.4) Нажмите Создавай кнопка. Смотрите скриншот:

Затем создается образец таблицы списка рассылки, как показано на снимке экрана ниже.

3. Теперь вам нужно заменить исходные данные в образце своими полевыми данными.

Теперь вы создали таблицу списка рассылки. Пожалуйста, продолжайте применять Отправить письма возможность отправлять электронные письма из Excel на основе созданных вами полей.

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


5.2 Легко отправлять электронные письма, включая поля, которые вы создали в списке рассылки

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

1. Выберите весь список рассылки, нажмите Кутулс Плюс > Отправить письма.

2. в Отправить письма диалоговое окно, выполните следующую настройку.

2.1) Поля заполняются в диалоговое окно каждого поля автоматически полями, указанными вами в списке рассылки;

Tips: если вам не нужно определенное поле в данный момент, выберите пустой вариант в раскрывающемся списке.

2.2) Вставить заполнитель (необязательно): если вам нужно вставить переменную информацию в тело письма.

Например, вам может потребоваться отправить электронное письмо нескольким получателям с персонализированным именем для каждого из них, вам нужно поместить курсор в тело электронного письма, где вам нужно вставить заполнитель, выберите поле «Э: Имя” (или другое поле имени в списке рассылки), а затем нажмите кнопку Вставить Заполнитель кнопка;

Когда получатели получают электронное письмо, тело письма остается прежним, но имена уникальны для каждого.

2.3) Составьте тело письма по своему усмотрению;

2.4) Убедитесь, что Отправлять электронные письма через Outlook флажок установлен;

2.5) Нажмите Отправить кнопка. Смотрите скриншот:

3. Затем Kutools for Excel диалоговое окно всплывает, чтобы сообщить вам, сколько писем отправлено, нажмите OK кнопку, чтобы закрыть это диалоговое окно.

Tips: Вы можете перейти в Отправленные вещи папку в Outlook, чтобы проверить отправленные вами электронные письма.


5.3 Легко отправлять электронные письма с телом HTML (включая гиперссылку, изображение и т. д.)

Эта функция отправки электронных писем позволяет вам создавать электронные письма в формате html, которые включают гиперссылки, изображения, различные размеры и цвета шрифтов и т. д.

После создание списка рассылки, который включает в себя поля электронной почты, которые вам нужны,

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

Смотрите скриншот ниже:


5.4 Простая вставка подписи Outlook по умолчанию при отправке электронных писем

В приведенном выше методе мы продемонстрировали код VBA, который поможет вам отправлять электронные письма с подписью Outlook по умолчанию. Здесь с функцией «Отправить электронные письма» вам просто нужно отметить параметр, после чего подпись Outlook по умолчанию будет вставлена ​​в электронные письма, отправленные вами из Excel.

После создание списка рассылки, который включает в себя поля электронной почты, которые вам нужны,

После появления настроить диалоговое окно отправки писем, вам нужно нажать Опции > Использовать настройки подписи Outlook.

Внимание: убедитесь, что перед параметром «Использовать настройки подписи Outlook» стоит галочка.

Когда получатели получают электронное письмо, они могут видеть подпись Outlook по умолчанию, отображаемую в конце тела электронного письма.


5.5 Легко отправлять электронные письма с указанной учетной записи электронной почты

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

После создание списка рассылки, который включает в себя поля электронной почты, которые вам нужны,

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

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

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

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

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


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Понравилась статья? Поделить с друзьями:
  • Как написать тире в word
  • Как написать тему в документе word
  • Как написать тест на excel
  • Как написать температуру в excel
  • Как написать текстом дату в excel