Прошу прощения - вчера не успел сделать (поздно пришёл, пятница - все таки
)
Готово, вот код:
Теперь по примеру:
1. Будет формироваться всегда 1 сообщение всегда одному получателю, которого мы указываем в диапазоне G2;
2. Если нужна другая логика (1 письмо = 1 строка таблицы, то предлагаю использовать цикл For Each или Do while) - если надо так, то могу сделать;
3. А что собираетесь сохранять в приложение к письму? Это всегда один и тот-же файл или подразумевается возможность выбора? Если вы сталкиваетесь с необходимостью менять приложенный файл, то предлагаю использовать метод GetOpenFIlename.
Пример по П.3 (с маской для файлов Excel):
Готово, вот код:
| Код |
|---|
Dim adressTo$, fname$, theme$, Disclaimer$
Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim rng As Range
Set sh = ThisWorkbook.Sheets("Для исполнения")
With Application
.DisplayAlerts = False
.EnableEvents = False
.ScreenUpdating = False
End With
With sh
.AutoFilterMode = False
.Range("$A$1:$B$1").AutoFilter Field:=2, Criteria1:="<>"
End With
Set rng = sh.Range("A1").CurrentRegion
With sh
adressTo = .Range("G2").Value
theme = .Range("H2").Value
Disclaimer = .Range("J2").Value
End With
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = adressTo
.cc = ""
.BCC = ""
.Subject = theme
.HTMLBody = "<p style=font-size:10pt;font-family:Calibri;>" & Disclaimer & _
RangetoHTML(rng)
.Display 'или Send - чтобы отправить сразу, без предварительного просмотра сформированного сообщения Outlook
End With
Set OutMail = Nothing
Set OutApp = Nothing
sh.AutoFilterMode = False
ThisWorkbook.Save
MsgBox "Письмо успешно сформировано и направлено! ", vbInformation, "Подтверждение отправки сообщения"
With Application
.EnableEvents = True
.ScreenUpdating = True
.DisplayAlerts = True
End With
|
Теперь по примеру:
1. Будет формироваться всегда 1 сообщение всегда одному получателю, которого мы указываем в диапазоне G2;
2. Если нужна другая логика (1 письмо = 1 строка таблицы, то предлагаю использовать цикл For Each или Do while) - если надо так, то могу сделать;
3. А что собираетесь сохранять в приложение к письму? Это всегда один и тот-же файл или подразумевается возможность выбора? Если вы сталкиваетесь с необходимостью менять приложенный файл, то предлагаю использовать метод GetOpenFIlename.
Пример по П.3 (с маской для файлов Excel):
| Код |
|---|
Fname = Application.GetOpenFilename( _ FileFilter:="XLS Files (*.xls),*.xls,CSV Files (*.csv),*.csv", _ Title:="Пожалуйста, выберите файл для вложения", _ MultiSelect:=True) |
Изменено: - 17.04.2017 11:27:31