Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2017, 18:11   #1
Dimitriusik
Пользователь
 
Регистрация: 02.06.2017
Сообщений: 29
По умолчанию массовая рассылка через outlook

Добрый день!
В листе в первой колонке присутсвуют e-mail. Во второй колонке тема сообщения, в третьей колонке текст сообщения и в четвертой колонке прикрепление файла.
Нужно изменить данный макрос так чтоб отправляло только тем адресатам, у которых будет вложение к письму (то есть если найдется файл по адресу в колонке 4. Сам я плохо понимаю программирование, помогите кто может


Код:
Sub Рассылка()

    Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody As String, sAttachment As String
    Dim lr As Long, lLastR As Long
 
    Application.ScreenUpdating = False
    On Error Resume Next
    
    Set objOutlookApp = GetObject(, "Outlook.Application")
    Err.Clear
    If objOutlookApp Is Nothing Then
        Set objOutlookApp = CreateObject("Outlook.Application")
    End If
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
    objOutlookApp.Session.Logon
 
    lLastR = Cells(Rows.Count, 1).End(xlUp).Row
   
    For lr = 2 To lLastR
        Set objMail = objOutlookApp.CreateItem(0)
       
        With objMail
            .to = Cells(lr, 1).Value
            .Subject = Cells(lr, 2).Value
            .Body = Cells(lr, 3).Value
            .Attachments.Add Cells(lr, 4).Value
            .Send
        End With
    Next lr
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True

End Sub
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 14.06.2017 в 11:01.
Dimitriusik вне форума Ответить с цитированием
Старый 13.06.2017, 18:57   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Постате условие после начала цикла If cells(lr,4)<>"" then
......
End if
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 13.06.2017 в 19:00.
Aleksandr H. вне форума Ответить с цитированием
Старый 14.06.2017, 10:36   #3
Dimitriusik
Пользователь
 
Регистрация: 02.06.2017
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Постате условие после начала цикла If cells(lr,4)<>"" then
......
End if
Все равно отправляет сообщение без вложения.
Dimitriusik вне форума Ответить с цитированием
Старый 14.06.2017, 11:48   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

На 97% уверен что не там условие стоит, но раз Вам сложно привести код который
Цитата:
Сообщение от Dimitriusik Посмотреть сообщение
Все равно отправляет сообщение без вложения
...
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 14.06.2017, 11:56   #5
vefer
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 134
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
На 97% уверен что не там условие стоит, но раз Вам сложно привести код который
Думаю проще написать
Код:
Sub Рассылка()

    Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody As String, sAttachment As String
    Dim lr As Long, lLastR As Long
 
    Application.ScreenUpdating = False
    On Error Resume Next
    
    Set objOutlookApp = GetObject(, "Outlook.Application")
    Err.Clear
    If objOutlookApp Is Nothing Then
        Set objOutlookApp = CreateObject("Outlook.Application")
    End If
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
    objOutlookApp.Session.Logon
 
    lLastR = Cells(Rows.Count, 1).End(xlUp).Row
   
    For lr = 2 To lLastR
      if Cells(lr, 4)<>"" then
        Set objMail = objOutlookApp.CreateItem(0)
       
        With objMail
            .to = Cells(lr, 1).Value
            .Subject = Cells(lr, 2).Value
            .Body = Cells(lr, 3).Value
            .Attachments.Add Cells(lr, 4).Value
            .Send
        End With
     end if
    Next lr
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True

End Sub
vefer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массовая рассылка email AniGeek C# (си шарп) 9 05.07.2017 12:59
Массовая рассылка hoperkrot Windows 0 31.05.2013 06:53
Массовая рассылка писем Denis3 Работа с сетью в Delphi 5 01.04.2013 22:32
массовая рассылка RUSlan48 Работа с сетью в Delphi 2 24.03.2011 23:10