2016-03-04 6 views
-4

Я очень новичок в VBA. У меня уже разработали рабочий лист Excel, где у меня есть дополнительные задачи, как следует:Отправка почты в EXCEL с помощью VBA

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

+0

Пожалуйста, разместите код, который у вас есть, или мы не можем вам помочь – TylerDurden

+0

Я предлагаю вам этот сайт: http://www.rondebruin.nl/win/section1.htm есть много примеров, как отправить с помощью vba письмо с excel внутри. –

+0

https://stackoverflow.com/search?q=[vba]+send+mail –

ответ

0

Здравствуйте Aakash Сегал,

Sendmail() 
     Dim OutApp As Object 
     Dim OutMail As Object 
     Dim cell As Range 
     Application.ScreenUpdating = False 
     Set OutApp = CreateObject("Outlook.Application") 

     On Error GoTo cleanup 
     For Each cell In Columns("B").Cells.SpecialCells(xlCellTypeConstants) 
      If cell.Value Like "?*@?*.?*" And _ 
       LCase(Cells(cell.Row, "C").Value) = "yes" Then 

       Set OutMail = OutApp.CreateItem(0) 
       On Error Resume Next 
       With OutMail 
        .To = cell.Value 
        .Subject = "Aakash Sehgal" 
        .Body = "Dear " & Cells(cell.Row, "A").Value _ 
          & vbNewLine & vbNewLine & _ 
          "Please contact us to discuss bringing " & _ 
          "your account up to date" 
        'You can add files also by use: 
        '.Attachments.Add ("C:\test.txt") 
        .Send 'Or use Display 
       End With 
       On Error GoTo 0 
       Set OutMail = Nothing 
      End If 
     Next cell 

    cleanup: 
     Set OutApp = Nothing 
     Application.ScreenUpdating = True 
    End Sub 

Составьте список из следующих столбцов в ActiveSheet:
В колонке А: имена людей
В столбце B: адреса электронной почты
В колонке C: да или нет (если значение да, это создаст почту)

Если у вас есть повторяющиеся адреса в столбце, ознакомьтесь с этим примером.

это один пример того, как вы можете это сделать, но если вместо этого вы хотите добавить вручную SMTP, что тоже возможно, посмотрите здесь:

Sub SMTP_Mail_SEND() 
    Dim iMsg As Object 
    Dim iConf As Object 
    Dim strbody As String 
    ' Dim Flds As Variant 

    Set iMsg = CreateObject("CDO.Message") 
    Set iConf = CreateObject("CDO.Configuration") 

    ' iConf.Load -1 ' CDO Source Defaults 
    ' Set Flds = iConf.Fields 
    ' With Flds 
    '  .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
    '  .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _ 
    '      = "Fill in your SMTP server here" 
    '  .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
    '  .Update 
    ' End With 

    strbody = "Hi there" & vbNewLine & vbNewLine & _ 
       "This is line 1" & vbNewLine & _ 
       "This is line 2" & vbNewLine & _ 
       "This is line 3" & vbNewLine & _ 
       "This is line 4" 

    With iMsg 
     Set .Configuration = iConf 
     .To = "[email protected]" 
     .CC = "" 
     .BCC = "" 
     .From = """daniel"" <[email protected]>" 
     .Subject = "This is a mail generated by use manually smtp mail" 
     .TextBody = strbody 
     .Send 
    End With 

End Sub 

Источник: http://www.rondebruin.nl/win/s1/cdo.htm

Приветствия

Daniel Elmnäs

Смежные вопросы