Картинка из Excel в Outlook - VB

Узнай цену своей работы

Формулировка задачи:

Уважаемы, доброго времени суток! Пробую написать макрос, который через Excel, отправляет электронное сообщение через Outlook. В качестве подписи используется

картинка

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

htmlBody

тэги. В итоге, вроде и текст пишется и картинка вставляется. Но есть одна проблема, если письмо отправлять используя методо

DISPLAY

, то все хорошо (отправляется и текст и картинка), если использовать

SEND

, то уходит только текст, а самой картинки нет. Пробовал ставить пере отправкой письма и после очистки сообщения

таймаут

на отправку, думая, что возможно при отправке не успевает подгрузиться картинка. Если отправить 2 письма,то можно и через DISPLAY, а если это 1000 писем!!.Вот код:
Листинг программы
  1. Sub SendMail()
  2. Dim OutApp As Object
  3. Dim OutMail As Object
  4. Dim htmlBody As String
  5. picfile$ = "C:\Users\image002.gif"
  6. htmlBody = "<body><font face=Arial color=#000080 size=2></font>" & _
  7. "<br>" & "1. çëГ*ГІГ*" & "<br>" & "<br><br><img width=290 height=150 alt='' hspace=0 src='" & picfile$ & " ' align=baseline order=0>&nbsp;</body>"
  8. Application.ScreenUpdating = False
  9. Set OutApp = CreateObject("Outlook.Application") 'Г§Г*ГЇГіГ±ГЄГ*ГҐГ¬ Outlook Гў ñêðûòîì ðåæèìå
  10. OutApp.Session.Logon ("removed@mail.ru")
  11. On Error GoTo cleanup 'åñëè Г*ГҐ Г§Г*ïóñòèëñÿ - âûõîäèì
  12. Set OutMail = OutApp.CreateItem(0) 'ñîçäГ*ГҐГ¬ Г*îâîå ñîîáùåГ*ГЁГҐ
  13. On Error Resume Next 'Г§Г*ïîëГ*ГїГҐГ¬ ïîëÿ ñîîáùåГ*ГЁГї
  14. With OutMail
  15. .To = E_mail 'Count
  16. .Subject = "ГІГҐГ±ГІ"
  17. .BodyFormat = 2
  18. .htmlBody = htmlBody
  19. .Send
  20. End With
  21. On Error GoTo 0
  22. Application.Wait (Now + TimeValue("0:00:01")) 'Г*Г* 1 Г±ГҐГЄ
  23. Set OutMail = Nothing
  24. cleanup:
  25. Set OutApp = Nothing
  26. Application.ScreenUpdating = True
  27. End Sub

Решение задачи: «Картинка из Excel в Outlook»

textual
Листинг программы
  1. dim cdoMessage, cdoConfig, sch
  2.  
  3. sch = "http://schemas.microsoft.com/cdo/configuration/"
  4. Set cdoConfig = Server.CreateObject("CDO.Configuration")
  5. set cdoMessage = Server.CreateObject("CDO.Message")
  6.  
  7. With cdoConfig.Fields
  8.   .Item(sch & "sendusing") = 2 ' cdoSendUsingPort
  9.  .Item(sch & "smtpserver") = "<your SMTP server>"
  10.   .Item(sch & "sendusername") = "<SMTP username>"
  11.   .Item(sch & "sendpassword") = "<SMTP password>"
  12.   .update
  13. End With
  14.  
  15. Set cdoMessage.Configuration = cdoConfig
  16. cdoMessage.From = "test@test.com"
  17. cdoMessage.ReplyTo = "test@test.com"
  18. cdoMessage.To = "<your test email address>"
  19. cdoMessage.Subject = "Test subject"
  20. cdoMessage.HtmlBody = "<html><body><img src=""cid:myimage.gif""/></body></html>" & vbCrLf
  21.  
  22. Set objBP = cdoMessage.AddRelatedBodyPart("c:\head-logo.gif", "myimage.gif", CdoReferenceTypeName)
  23. objBP.Fields.Item("urn:schemas:mailheader:Content-ID") = "<myimage.gif>"
  24. objBP.Fields.Update
  25.  
  26. cdoMessage.Send

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы