Статьи из блога
Как отправить письмо из Word при помощи VBA
1. Использование метода Routing Slip
Самый простой способ отправки документа по электронной почте - это использование встроенного в Word метода RoutingSlip. Используя его, можно отправлять сообщение как одному, так и нескольким адресатам, задавать заголовок и определять отправлять ли сообщение всем адресатам одновременно или пересылать сообщение по цепочке от одного к другому.
Преимущества использования метода RoutingSlip:
- Код будет работать со всеми почтовыми программами, нет необходимости заранее выяснять что именно установлено в системе.
- Даже не сохраненный документ может быть отправлен.
- Код будет работать быстрее, чем при автоматизации Outlook (конечно, если при запуске Вашего кода Outlook не запущен).
Недостатки использования RoutingSlip:
- В теле письма содержится текст по умолчанию, который не возможно изменить из кода.
- Текст самого документа не представляется возможным использовать как текст сообщения. Вы можете только приложить документ к письму.
- Вы не можете установить адреса для поля bcc (скрытой копии).
Вот пример кода для использования RoutingSlip
Activedocument.HasRoutingSlip = True With Activedocument.RoutingSlip .Subject = "Новый заголовок" .AddRecipient "Firstaddress@Mail.com" .AddRecipient "Secondaddress@Mail.com" .Delivery = wdAllAtOnce End With Activedocument.Route
2. Автоматизация Outlook
Другая опция - это автоматизация Outlook для отсылки документа. Серьезным недостатком этой опции - является то, что Вы должны быть абсолютно уверены в том, что в системе запускающей код установлен Outlook.
Другим недостатком является то, что при отсылке документа в приложении к письму, документ должен быть хотя бы один раз сохранен. Это связанно с тем, что Вам необходим путь к документу и имя файла для кода.
Если при запуске кода Outlook не загружен, это способ будет медленнее.
И наконец, код несколько сложнее, чем при использовании метода Route. Установите ссылку на библиотеку Outlook (Tools-References в Visual Basic Editor) для правильной работы следующего кода:
Sub SendDocumentInMail() Dim bStarted As Boolean Dim oOutlookApp As Outlook.Application Dim oItem As Outlook.MailItem On Error Resume Next 'Получить объект Outlook, если он загружен Set oOutlookApp = GetObject(, "Outlook.Application") If Err <> 0 Then 'Outlook не загружен, запускаем его из кода Set oOutlookApp = CreateObject("Outlook.Application") bStarted = True End If 'Создаем новый объект mailitem Set oItem = oOutlookApp.CreateItem(olMailItem) With oItem 'Устанавливаем адрес для нового письма .To = "recipient@mail.com" 'Устанавливаем адрес для копии письма .CC = "recipient2@mail.com" 'Устанавливаем заголовок .Subject = "Новый заголовок" 'Текст документа используем как тело письма. .Body = ActiveDocument.Content .Send End With If bStarted Then 'Если запустили Outlook из кода, то закрываем его oOutlookApp.Quit End If 'Все очищаем Set oItem = Nothing Set oOutlookApp = Nothing End Sub
Этот код отправляет текст документа как содержимое письма ( то есть не прилагает его) и отправляет его чистым текстом, так что все его форматирование пропадет.
Вы можете отправить документ в приложении к письму, предусматривая, что документ был сохранен хотя бы один раз:
Sub SendDocumentAsAttachment() Dim bStarted As Boolean Dim oOutlookApp As Outlook.Application Dim oItem As Outlook.MailItem On Error Resume Next If Len(ActiveDocument.Path) = 0 Then MsgBox "Документ должен быть вначале сохранен" Exit Sub End If Set oOutlookApp = GetObject(, "Outlook.Application") If Err <> 0 Then Set oOutlookApp = CreateObject("Outlook.Application") bStarted = True End If Set oItem = oOutlookApp.CreateItem(olMailItem) With oItem .To = "recipient@mail.com" .Subject = "Новый заголовок" 'Добавляя документ как приложение к письму, Вы можете использовать 'свойство .displayname для установки описания используемого в сообщении .Attachments.Add Source:=ActiveDocument.FullName, Type:=olByValue, _ DisplayName:="Документ в приложении" .Send End With If bStarted Then oOutlookApp.Quit End If Set oItem = Nothing Set oOutlookApp = Nothing End Sub
Метки: макросы | настройка word | почта
Просмотров: 29758
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 полезных заметок о колонтитулах
- 3 способа очистки списка недавно открытых документов
- Microsoft Office: популярные команды на одной вкладке
- Ribbon XML Editor — программа редактирования интерфейса Word 2007, 2010
- SQL для начинающих: изучите SQL онлайн за 9 часов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение всех открытых документов
- Автоматическое сохранение документа при его закрытии
- Автотекст и Word 2007
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Белый текст на синем фоне: ностальгия по DOS
- Быстрая смена ориентации страниц документа
- Быстрая смена регистра букв (слов) или их размеров
Комментариев: 6
А как сделать, стоб Word Не выводила сообщение "Вы действительно хотите отправить это сообщение?"
А тихо его отправляла...
А Кто знает, как показать подпись в этом письме?
А для Аутлука Экспресс можно такое настроить?
Я так понял, это работает только с запущенным аутлуком. При выключенном аутлуке письма по адресу не приходят.
За что я ненавижу Word так это за тупость . -Зачем вываливать информацию о которой не просят? Должен действовать принцип : от простого к сложному , а вы давите их нагромождениями .