Отправка электронных писем из Microsoft Excel требует всего несколько простых скриптов. Добавьте эту функциональность в свои электронные таблицы, и вы действительно сможете расширить свои возможности в Excel.
Мы рассмотрели множество отличных макросов Excel, которые могут выполнять те же функции, что и сценарии VBA, но без необходимости знания программирования. Но есть много продвинутых вещей, которые вы можете делать только с VBA, например, создание отчета в виде электронной таблицы со всей информацией о вашем ПК.
Предпочитаете смотреть этот урок как видео? Мы вас покроем!
Зачем отправлять электронную почту из Excel?
Существует множество причин, по которым вы можете отправить электронное письмо из Microsoft Excel.
Возможно, у вас есть персонал, который обновляет документы или таблицы еженедельно, и вы хотите получать по электронной почте уведомление о том, когда эти обновления будут выполнены. Или у вас может быть таблица контактов, и вы хотите отправить всем им по электронной почте по одному.
Вы, вероятно, думаете, что составление сценария трансляции электронной почты из Excel будет сложным. Это совсем не так.
В этой статье будет использована функция, которая долгое время была доступна в Excel VBA, объекты данных совместной работы (CDO).
CDO — это компонент обмена сообщениями, используемый в Windows с самых ранних поколений ОС. Раньше его называли CDONTS, а затем с появлением Windows 2000 и XP его заменили на «CDO для Windows 2000». Этот компонент уже включен в вашу установку VBA в Microsoft Word или Excel и готов к использованию.
Использование компонента делает отправку электронной почты из продуктов Windows с VBA чрезвычайно простой. В этом примере вы будете использовать компонент CDO в Excel, чтобы отправить электронное письмо, которое будет доставлять результаты из определенной ячейки Excel.
Шаг 1. Создание макроса VBA
Первый шаг — перейти на вкладку Excel Developer .
На вкладке «Разработчик» нажмите « Вставить» в поле «Элементы управления» и выберите командную кнопку.
Нарисуйте его на листе, а затем создайте для него новый макрос, нажав Макросы на ленте разработчика.
Когда вы нажмете кнопку « Создать» , откроется редактор VBA.
Добавьте ссылку на библиотеку CDO, перейдя в Инструменты > Ссылки в редакторе.
Прокрутите список вниз, пока не найдете Microsoft CDO для библиотеки Windows 2000 . Установите флажок и нажмите ОК .
Когда вы нажимаете OK , запишите имя функции, в которую вы вставляете скрипт. Вам это понадобится позже.
Шаг 2: Настройте поля «От» и «Кому» CDO
Для этого сначала нужно создать почтовые объекты и настроить все поля, необходимые для отправки электронного письма.
Имейте в виду, что хотя многие поля являются необязательными, поля От и До являются обязательными.
Dim CDO_Mail As Object Dim CDO_Config As Object Dim SMTP_Config As Variant Dim strSubject As String Dim strFrom As String Dim strTo As String Dim strCc As String Dim strBcc As String Dim strBody As String strSubject = "Results from Excel Spreadsheet" strFrom = "rdube02@gmail.com" strTo = "rdube02@gmail.com" strCc = "" strBcc = "" strBody = "The total results for this quarter are: " & Str(Sheet1.Cells(2, 1))
Крутая вещь в этом заключается в том, что вы можете создать любую строку, которую хотите настроить, для полного сообщения электронной почты и присвоить ее переменной strBody .
Соберите компоненты сообщения, используя строку &, чтобы вставить данные из любого листа Microsoft Excel прямо в сообщение электронной почты, как показано выше.
Шаг 3. Настройте CDO для использования внешнего SMTP
В следующем разделе кода вы сконфигурируете CDO для использования любого внешнего SMTP-сервера для отправки электронной почты.
Этот пример — не-SSL-настройка через Gmail. CDO поддерживает SSL, но это выходит за рамки этой статьи. Если вам нужно использовать SSL, этот расширенный код в Github может помочь.
Set CDO_Mail = CreateObject("CDO.Message") On Error GoTo Error_Handling Set CDO_Config = CreateObject("CDO.Configuration") CDO_Config.Load -1 Set SMTP_Config = CDO_Config.Fields With SMTP_Config .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "email@website.com" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True .Update End With With CDO_Mail Set .Configuration = CDO_Config End With
Шаг 4: Завершите настройку CDO
Теперь, когда вы настроили соединение с SMTP-сервером для отправки электронной почты, все, что вам нужно сделать, это заполнить соответствующие поля для объекта CDO_Mail и выполнить команду Send .
Вот как вы это делаете:
CDO_Mail.Subject = strSubject CDO_Mail.From = strFrom CDO_Mail.To = strTo CDO_Mail.TextBody = strBody CDO_Mail.CC = strCc CDO_Mail.BCC = strBcc CDO_Mail.Send Error_Handling: If Err.Description <> "" Then MsgBox Err.Description
Там не будет никаких всплывающих окон или предупреждений безопасности, что может произойти, если вы прибегаете к использованию почтового объекта Outlook.
CDO просто собирает электронную почту и использует информацию о соединении вашего SMTP-сервера для запуска сообщения. Это самый простой способ включить электронную почту в сценарии Microsoft Word или Excel VBA.
Чтобы подключить вашу командную кнопку к этому сценарию, перейдите в редактор кода и нажмите « Лист1», чтобы просмотреть код VBA для этого листа.
Введите имя функции, куда вы вставили скрипт выше.
Вот как выглядело сообщение, которое я получил в своем почтовом ящике:
Примечание . Если вы получили сообщение об ошибке «Транспорт не смог подключиться к серверу , убедитесь, что вы ввели правильное имя пользователя, пароль, SMTP-сервер и номер порта в строках кода, указанных в разделе« SMTP_Config » .
Продолжайте и автоматизируйте весь процесс
Это все хорошо, чтобы иметь возможность отправлять электронную почту из Excel одним нажатием кнопки. Однако вы можете использовать эту функцию на регулярной основе, и в этом случае имеет смысл автоматизировать процесс.
Для этого вам нужно внести изменения в макрос. Перейдите в редактор Visual Basic, скопируйте и вставьте весь код, который мы собрали.
Затем выберите ThisWorkbook из иерархии проекта .
В двух раскрывающихся полях вверху окна кода выберите « Рабочая книга» и выберите « Открыть» в раскрывающемся списке «Методы».
Вставьте скрипт электронной почты выше в Private Sub Workbook_Open () .
Это будет запускать макрос всякий раз, когда вы открываете файл Excel.
Затем откройте планировщик задач .
Вы собираетесь использовать этот инструмент, чтобы попросить Windows автоматически открывать электронную таблицу через регулярные промежутки времени, после чего ваш макрос будет инициирован, отправив электронное письмо.
Выберите « Создать базовую задачу» из меню « Действие» и работайте в мастере, пока не дойдете до экрана « Действие» .
Выберите « Запустить программу» и нажмите « Далее» .
Используйте кнопку « Обзор» , чтобы найти местоположение Microsoft Excel на вашем компьютере, или скопируйте и вставьте путь в поле « Программа / скрипт» .
Затем введите путь к документу Microsoft Excel в поле « Добавить аргументы» .
Завершите работу мастера, и ваше расписание будет на месте.
Стоит провести тест, запланировав действие пару минут в будущем, затем внесите поправки в задачу, как только вы подтвердите, что она работает.
Примечание . Возможно, вам придется настроить параметры центра управления безопасностью, чтобы обеспечить правильную работу макроса.
Для этого откройте электронную таблицу и выберите « Файл» > « Параметры» > « Центр управления безопасностью» .
Отсюда нажмите « Настройки центра управления безопасностью» , и на следующем экране установите переключатель « Никогда не показывать информацию о заблокированном контенте» .
Заставьте Microsoft Excel работать на вас
Microsoft Excel — невероятно мощный инструмент, но изучение того, как извлечь из него максимальную пользу, может быть немного пугающим. Если вы хотите по-настоящему освоить программное обеспечение, вам должно быть удобно с VBA , и это не маленькая задача.
Тем не менее, результаты говорят сами за себя. Имея небольшой опыт работы с VBA, вы скоро сможете заставить Microsoft Excel автоматически выполнять базовые задачи, предоставляя вам больше времени, чтобы сосредоточиться на более насущных вопросах.
Требуется время, чтобы приобрести опыт работы с VBA, но вы скоро увидите плоды своих трудов, если сможете их использовать.
Отличное место для начала — наш авторитетный учебник по использованию VBA в Excel Когда вы закончите с этим, этот простой скрипт для отправки электронных писем из Excel будет выглядеть как детская игра.