Откройте почтовый клиент по умолчанию, используя файл.Vbs

Возможный дубликат:
Отправить электронную почту через VBA
Отправить письмо из Excel в среде Exchange

До сих пор

Dim objOutl
Set objOutl = CreateObject("Outlook.Application")
Set objMailItem = objOutl.CreateItem(olMailItem)
objMailItem.Display
strEmailAddr  = "me.me@you.com"
objMailItem.Recipients.Add strEmailAddr
objMailItem.Body = "Hi"
objMailItem.Attachments.Add "access.xml"
Set objMailItem = nothing
Set objOutl = nothing

Оно работает! Но только на компьютерах с Outlook. Как я могу заставить это работать на компьютерах с Windows Live?

2 ответа

Почта Windows Live (WLM) не поддерживает автоматизацию через VBA, поэтому она не так проста, как в Outlook.

Для других вариантов попробуйте набрать [vba] e-mail в поле поиска. Вы получите немало хитов; Вот соответствующий образец: Хит, Хит, Хит. Некоторые из них дают вам рабочий код для отправки почты с использованием CDO. Это то, что я бы сделал на твоем месте.

Если вы должны использовать WLM, взгляните на эти почтовые надстройки для Excel, которые поддерживают WLM.

В противном случае вы застряли с помощью VBA SendMail метод, который очень ограничен:

  • Можно отправлять только объекты Excel, такие как лист, рабочая книга, диаграмма, диапазон и т. Д.
  • Не могу написать текст в теле письма
  • Не могу использовать поля CC или BCC
  • Невозможно прикрепить файлы (кроме объекта Excel, вызывающего метод)

Пример кода:

Dim wb As Workbook
Set wb = ActiveWorkbook
wb.SendMail "me.me@you.com", _
            "Insert subject here"

Дополнительные примеры смотрите здесь: http://www.rondebruin.nl/sendmail.htm

Следующие предположим, чтобы работать на доступ (VBA) (код не мой):

Public Function send_email()

Set cdomsg = CreateObject("CDO.message")
With cdomsg.Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'NTLM method
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smptserverport") = 587
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") =   "mygmail@gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mypassword"
.Update
End With
' build email parts With cdomsg
.To = "somebody@somedomain.com"
.From = "mygmail@gmail.com"
.Subject = "the email subject"
.TextBody = "the full message body goes here. you may want to create a variable to hold  the text"
.Send
End With
Set cdomsg = Nothing
End Function

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

некоторые другие варианты здесь - ссылка MSDN

Надеюсь, поможет.

Другие вопросы по тегам