Что делает макрос: Этот пример демонстрирует, как можно отправить вложением один конкретный рабочий лист данных, а не всю книгу.
Как макрос работает
Поскольку этот код запускается из Excel, нам нужно установить ссылку на объект Microsoft Outlook Library.. Мы можем установить ссылку, открыв редактор Visual Basic в Excel и выбрав Tools➜References. Прокрутите вниз, пока мы не найдете запись Microsoft Outlook XX Object Library, где XX — это ваша версия Outlook. Поставьте флажок в поле рядом с записью.
Код макроса
Sub OtpravitOdinListVlojeniem()
'Шаг 1: Объявляем переменные
Dim OLApp As Outlook.Application
Dim OLMail As Object
'Шаг 2: Скопируйте рабочую таблицу, вставьте ее в новую книгу и 'сохраните ее
Sheets("Таблица доходов").Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\TempRangeForEmail.xlsx"
'Шаг 3: Откройте Outlook, запустите новое сообщение
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(0)
OLApp.Session.Logon
'Шаг 4: Строим наше сообщение и отправляем
With OLMail
.To = "admin@datapigtechnologies.com; mike@datapigtechnologies.com"
.CC = ""
.BCC = "
.Subject = "Тема письма"
.Body = "Образец файла прилагается"
.Attachments.Add (ThisWorkbook.Path & "\TempRangeForEmail.xlsx")
.Display
End With
'Шаг 5: Удалить временный файл Excel
ActiveWorkbook.Close SaveChanges:=True
Kill ThisWorkbook.Path & "\TempRangeForEmail.xlsx"
'Шаг 6: Очистка памяти
Set OLMail = Nothing
Set OLApp = Nothing
End Sub
Как это код работает
- Шаг 1 сначала объявляет две переменные. OLApp — это объектная переменная, которая предоставляет Application Outlook . OLMail — это объектная переменная, которая содержит почтовый элемент.
- Шаг 2 копирует указанный диапазон и вставляет значения и форматы во временный файл Excel. Затем мы сохраняем этот временный файл, указывая ему путь к файлу и имя файла.
- Шаг 3 активирует Outlook и начинает новый сеанс. Обратите внимание, что мы используем OLApp.Session. Войдите в систему, чтобы войти в текущий сеанс MAPI (Messaging Programming Interface Application) с учетными данными по умолчанию. Он также создает почтовое сообщение. Это эквивалентно выбору кнопки «Новое сообщение» в Outlook.
- Шаг 4 создает профиль почтового сообщения. Включает в себя получателей, получателей CC, получателей BCC, тему, тело и вложения. Получатели вводятся в кавычки и разделяются точкой с запятой. В этом коде мы указываем наш недавно созданный путь к временному файлу Excel в качестве вложения
для электронной почты. Когда сообщение построено, мы используем метод .Display для просмотра электронной почты. Мы можем заменить .Display на .Send для автоматического запуска электронной почты без просмотра. - Мы не хотим оставлять там временные файлы, поэтому после отправки электронного письма мы удаляем временный файл Excel, который мы создали.
- Как правило, рекомендуется освобождать объекты, назначенные нашим переменным. Это уменьшает вероятность любых проблем, вызванных объектами, которые могут оставаться открытыми в памяти. В коде мы просто устанавливаем переменную Nothing.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.