Как отправить Excel файл почтой

Что делает макрос: Самую основную задачу можно выполнить с помощью автоматической отправки по электронной почте. В примере кода показано, активная рабочая книга отправляется двум
получателям электронной почты в качестве вложения.
С помощью команды Sendmail, вы можете отправлять простые сообщения электронной почты непосредственно из Excel. Тем не менее, команда SendMail не столь надежна, как автоматизация Outlook. SendMail не позволяет прикреплять файлы или использовать CC и BCC поля в электронной почте.

Как макрос работает

Так как этот код будет работать с Excel, необходимо установить ссылку на объект Microsoft Outlook. Мы можем установить ссылку, открыв редактор Visual Basic в Excel и выбрав Tools➜ References. Прокрутите вниз, пока не найдёте запись Microsoft Outlook XX библиотеки объектов, где XX это ваша версия Outlook. Установите флажок рядом с записью.

Код макроса

Sub OtpravilFailPoEmail()
'Шаг 1: Объявляем переменные
Dim OLApp As Outlook.Application
Dim OLMail As Object

'Шаг 2: Откройте Outlook, чтобы создать новое сообщение
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(0)
OLApp.Session.Logon

'Шаг 3: Постройте сообщение и отправьте
With OLMail
    .To = "admin@datapigtechnologies.com; mike@datapigtechnologies.com"
    .CC = ""  'получатель/и копии
    .BCC = "" 'получатель/и скрытой копии
    .Subject = "Тема письма"
    .Body = "Образец файла прилагается"
    .Attachments.Add ActiveWorkbook.FullName
    .Display 'Замените на Send, если нужно сразу отправить
End With

'Шаг 4: Очистка памяти
Set OLMail = Nothing
Set OLApp = Nothing
End Sub

Как этот код работает

  1. Шаг 1 сначала объявляет две переменные. OLApp — это объектная переменная, которая предоставляет Application Outlook . OLMail — это объектная переменная, которая содержит почтовый элемент.
  2. Шаг 2 активирует Outlook и начинает новый сеанс. Обратите внимание, что мы используем OLApp.Session. Войдите в систему, чтобы войти в текущий сеанс MAPI (Messaging Programming Interface Application) с учетными данными по умолчанию. Он также создает почтовое сообщение. Это эквивалентно выбору кнопки «Новое сообщение» в Outlook.
  3. Шаг 3 строит профиль нашего почтового отправления. Это включает в себя CC, BCC получателей, предмет, тему и вложения. Этот шаг отмечает, что получатели вводятся в кавычки, и отделяются точкой с запятой. Стандартный синтаксис для вложения является Attachments.Add «Путь к файлу». Вот в этом коде, мы указываем путь к файлу текущей рабочей книги с синтаксиса ActiveWorkbook.Fullname. Это устанавливает текущую рабочую книгу как вложение для сообщения электронной почты. Когда сообщение было построено, мы используем метод .Display для просмотра электронной почты. Мы можем заменить .Display с .Send автоматически отправлять по электронной почте без просмотра.
  4. Высвобождение объектов, присвоенных нашим переменным, как правило, хорошая практика. Это снижает вероятность каких-либо проблем, вызванных объектами, которые могут остаться открытыми в памяти.

Как использовать

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

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.
Оцените статью
Добавить комментарий

  1. Олег

    Добрый день!
    Как прописать код для отправки несохранённого файла?
    Например, часть листов книги копируются в новую книгу и эту книгу необходимо отправить по почте.

    Ответить
    1. Дмитрий Якушев автор

      Добрый день, Олег.
      Файл нужно сохранить, а потом уже отправлять.
      Добавьте команды по сохранению
      ActiveWorkbook.SaveAs Filename:=»C:\VashaPapka\ИмяФайла.xlsx», _
      FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
      и вот в этом месте
      .Attachments.Add ActiveWorkbook.FullName
      вместо ActiveWorkbook.FullName вставьте «C:\VashaPapka\ИмяФайла.xlsx»

      Ответить