Отправка писем из Excel при помощи почтовой программы TheBAT!

Отправка почты из Excel при помощи TheBAT!

Если вам нужно рассылать письма из Excel,
воспользуйтесь готовым решением в виде надстройки FillDocuments

Ознакомьтесь с возможностями и способами рассылки писем из Excel,
а также с инструкцией по настройке рассылки через TheBAT

Макроc предназначен для автоматизированной рассылки почты из Excel.

Для рассылки используется почтовая программа TheBAT!

(подразумевается, что эта программа на компьютере установлена и настроена, т.е. без проблем удаётся вручную создать в TheBAT письмо, и отправить его на произвольный адрес)

В качестве исходных данных выступает таблица Excel, в которой в первом столбце указаны адреса получателей рассылки, а в остальных столбцах - данные для формирования писем (тема, текст и т.д.)

В прикреплённом примере макрос формирует тему письма из значения ячейки второго столбца

' формируем тему письма из 2-й ячейки строки
            Тема = "Информация для " & ro.Cells(2) & " от EducatedFool"

а текст писем составляется из значений других ячеек (столбцы с 3 по 9)

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

Эти файлы создаются в папке C:\WINDOWS\Temp (используется системная папка для временных файлов),
файлам присваиваются имена типа mail.207561135292053, где 207561135292053 - случайное число:

Отправка письма производится вызовом специальной функции ОтправитьПисьмоЧерезTheBat:

ОтправитьПисьмоЧерезTheBat Адрес, Текст, Тема

Код функции для отправки письма:

Function ОтправитьПисьмоЧерезTheBat(ByVal Email As String, _
                                    ByVal Текст As String, Optional ByVal Тема As String = "", _
                                    Optional ByVal AttachFilename As String = "") As Boolean
    ' функция производит отправку письма с заданной темой и текстом на адрес Email
    ' с почтового ящика, настроенного в TheBAT для отправки писем "по-умолчанию"
    ' Если задан параметр AttachFilename, к отправляемому письму прикрепляется файл

    strTO = "TO=" & Chr(34) & Email & Chr(34)    ' адрес получателя (можно указать список адресов)
    strSUBJECT = "SUBJECT=" & Chr(34) & Replace(Тема, """", "`") & Chr(34)   ' тема сообщения

    Filename$ = Environ("temp") & "\mail." & Fix(Rnd() * 1E+15)
    ff = FreeFile: Open Filename$ For Output As #ff
    Print #ff, Текст: Close #ff    ' пишем текст в файл

    ' текст сообщения (или путь к текстовому файлу с сообщением)
    strTEXT = "TEXT=" & Chr(34) & Filename$ & Chr(34)    ' Chr(34) - это кавычка

    ' путь к прикреплённому файлу (можно прикрепить несколько файлов)
    If AttachFilename <> "" Then strATTACH = "ATTACH=" & Chr(34) & AttachFilename & Chr(34)
 
    TheBatPath = ПутьКФайлуПрограммыTheBAT: DoEvents
    Cmd$ = Chr(34) & TheBatPath & Chr(34) & " /MAIL;" & strTO & ";" & strSUBJECT & ";" & _
           strTEXT & ";" & strATTACH & " /SENDALL; /MINIMIZE;"    ' формируем командную строку
           
    CreateObject("WScript.Shell").Exec Cmd$    ' выполняем команду
End Function

Ознакомьтесь также со способом отправки почты из Excel
без использования почтовых программ

Ранние версии программы TheBAT! почему-то не отправляли письма сразу же.

Если вы используете древнюю версию этой почтовой программы (я заметил этот эффект на версии 1.54),
то по окончании формирования всех писем запустите такой макрос:

Function Send_Mail_with_TheBAT_from_Excel_VBA()
    ' теперь и без этого всё работает :) видимо, раньше у меня была глючная версия TheBAT
    For i = 1 To 30000: DoEvents: Next    ' пауза - без неё почему-то не происходит отправки
    Cmd2 = TheBatPath & " /SENDALL;": wsh.Exec Cmd2    ' команда ОТПРАВИТЬ ВСЮ ПОЧТУ
End Function

 

Если вы хотите узнать, с какого из настроенных почтовых ящиков TheBAT! будет отправлять почту,
есть возможность загрузить эти данные из настроек программы в реестре Windows:

Function DefaultMailAccount() As String
    ' читает из реестра настройки почтового ящика,
    ' установленного в TheBAT! как "ящик по-умолчанию"
    ' возвращает адрес почты, или пустую строку, если TheBAT! не настроен
    On Error Resume Next: Err.Clear
    key$ = "HKEY_CURRENT_USER\Software\RIT\The Bat!\Users depot\Default"
    DefaultMailAccount = CreateObject("WScript.Shell").RegRead(key$)
End Function
 
Sub УзнатьАдресПочты()
    MsgBox DefaultMailAccount, vbInformation
End Sub

Вложения:
TheBAT.xls40.5 КБ

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Извините за некропост :-)

Спасибо за макрос. У меня для отправки писем из командной строки нескольких файлов прокатывает прикрепление по маске файлов. Но мне нужно отправлять, обычно, одинаковые файлы - pdf, xls*:
"C:\Program Files (x86)\the bat 3.99\thebat.exe" /MAILU=info@yourdomain.net;TO=address@yourdomain.net;S="для бухгалтера";A="%~dp0\*.pdf%";QUEUE

Если бы возникла необходимость отправки различных типов файлов, думаю прокатила бы маска *.* из какой-нибудь временной папки с последующей очисткой.

Такого макроса нет. Вряд ли это вообще возможно (но утверждать не могу)

Здравствуйте! Вы не подскажете, можно ли считать Excel-ем данные из The Bat? Например, отправителя, получателя, тему письма? Есть ли у Вас пример работы такого макроса?

В общем, разобрался. Надеюсь кому-то это поможет. Потому что нигде ответа не смог найти в сети. Я поменял код под себя. Во-первых поставил английские значения переменных (сорян, мне так всегда комфортнее). Во вторых убрал цикличность. Мне это не нужно. У меня другая задача.
Суть в том, что мы
1. Задаём формат шаблона, который нужен. В моём случае это iTempl = "%TO=" & iTo & "%CC=" & iCC.
Так как мне нужно обязательно разделять адресатов на TO and CC.
2. Прописываем дополнительное создание временного файла, из которого шаблон подтянется

Filename2$ = Environ("temp") & "\mail." & Fix(Rnd() * 1E+15)
    bb = FreeFile: Open Filename2$ For Output As #bb
    Print #bb, iTempl: Close #bb    ' пишем шаблон в файл

3. Прописываем параметр для того, чтобы этот шаблон применился при создании имейла
strPattern = "TEMPLATE=" & Chr(34) & Filename2$ & Chr(34)

4. Собственно добавляем этот параметр в командную строку
Cmd$ = Chr(34) & TheBatPath & Chr(34) & " /MAIL;" & strPattern & ";" & strTO & ";" & strSUBJECT & ";" & _
           strTEXT & ";" & strATTACH & " /FOCUSF=Outbox"

Sub SendInsurance()
    Dim ro As Range, ra As Range: On Error Resume Next
    If ПутьКФайлуПрограммыTheBAT = "" Then MsgBox "Программа TheBAT! не установлена!", _
       vbCritical, "Отправка почты невозможна": Exit Sub
 
    ' таблица с заполненными ячейками в первом столбце
    'Set ra = Range([A2], Range("A" & Rows.Count).End(xlUp))

    'For Each ro In ra.EntireRow  ' перебираем все заполненные строки
        iTo = Range("A2")
        iCC = "xplayner@gmail.com"
        If iTo Like "*?@?*.?*" Then    ' если в первой ячейке указан корректный адрес почты

            ' формируем текст письма
            iBody = Range("C2")
 
            ' формируем тему письма из 2-й ячейки строки
            iSubject = Range("B2")
 
            ОтправитьПисьмоЧерезTheBat2 iTo, iCC, iBody, iSubject
        End If
    'Next ro
End Sub
 
 
Function ОтправитьПисьмоЧерезTheBat2(ByVal iTo As String, ByVal iCC As String, _
                                    ByVal iBody As String, Optional ByVal iSubject As String = "", _
                                    Optional ByVal AttachFilename As String = "") As Boolean
    ' функция производит отправку письма с заданной темой и текстом на адрес Email
    ' с почтового ящика, настроенного в TheBAT для отправки писем "по-умолчанию"
    ' Если задан параметр AttachFilename, к отправляемому письму прикрепляется файл

    strSUBJECT = "SUBJECT=" & Chr(34) & Replace(iSubject, """", "`") & Chr(34)  ' тема сообщения

    iTempl = "%TO=" & iTo & "%CC=" & iCC
 
    Filename$ = Environ("temp") & "\mail." & Fix(Rnd() * 1E+15)
    ff = FreeFile: Open Filename$ For Output As #ff
    Print #ff, iBody: Close #ff    ' пишем текст в файл
    
    Filename2$ = Environ("temp") & "\mail." & Fix(Rnd() * 1E+15)
    bb = FreeFile: Open Filename2$ For Output As #bb
    Print #bb, iTempl: Close #bb    ' пишем шаблон в файл

    ' текст сообщения (или путь к текстовому файлу с сообщением)
    strTEXT = "TEXT=" & Chr(34) & Filename$ & Chr(34)  ' Chr(34) - это кавычка
    strPattern = "TEMPLATE=" & Chr(34) & Filename2$ & Chr(34)  ' Chr(34) - это кавычка
    
    ' путь к прикреплённому файлу (можно прикрепить несколько файлов)
    If AttachFilename <> "" Then strATTACH = "ATTACH=" & Chr(34) & AttachFilename & Chr(34)
    TheBatPath = ПутьКФайлуПрограммыTheBAT: DoEvents
    Tpl = "Test;"
    Cmd$ = Chr(34) & TheBatPath & Chr(34) & " /MAIL;" & strPattern & ";" & strTO & ";" & strSUBJECT & ";" & _
           strTEXT & ";" & strATTACH & " /FOCUSF=Outbox"    ' формируем командную строку
    CreateObject("WScript.Shell").Exec Cmd$    ' выполняем команду
End Function

Спасибо за совет. Изменил код немного по другому. В принципе стало чуть удобнее. Последнюю команду добавил так, чтобы переключалось на папку исходящие автоматически. Если поковыряться, то можно установить другую папку, в которую письма будут помещаться, и сделать фокус на ней собственно. Но этим уже не стал заморачиваться.

Cmd$ = Chr(34) & TheBatPath & Chr(34) & " /MAIL;" & "T=" & Test & ";" & strTO & ";" & strSUBJECT & ";" & _
strTEXT & ";" & strATTACH & " /FOCUSF=Outbox

Но появился другой вопрос. Мучаюсь с ним уже целый день. Никак не могу добавить поле СС через макрос в экселе. Ниже есть рекомендация от вас, но не могу разобрать связь между макрокомандами шаблона %TO, %CC, %BCC и строкой

strTO = "TO=" & Chr(34) & Email & Chr(34) & ";" & "CC=" & Chr(34) & "address@mail.ru" & Chr(34)
' адрес получателя (можно указать список адресов)

Если просто вставить СС в эту строку, как указано выше, то ничего не добавляется. А что конкретно делать с макрокомандами шаблона не совсем понятно.

Простите за недалёкость в этом вопросе и заранее спасибо, если сможете подсказать.

Дмитрий, так просто уберите команду SENDALL, и проверяйте письма в исходящих

Добрый день. Подскажите, а есть ли команда, аналогичная .Display для Outlook, чтобы при выполнении кода письма не отправлялись, а отображались. Чтобы перед отправкой можно было проверить, что там получилось, и руками нажать кнопу "отправить". Сейчас настраиваю рассылку для разных отделов в компании. Поэтому перед уверенной командой SENDALL хотелось бы отработать процесс, проверяя автоматически созданные письма перед отправкой.

Народ!!!! Подскажите!!!! Хочу в письмо вставить текст. В макросе пишу
strText = "Сообщение готово к отправке со следующим вложенным файлом или ссылкой: " & " " & Filename & ""
strText = "TEXT=" & Chr(34) & strText & Chr(34). Но в теле письма программа пишет < Не удается найти указанный файл (C:\Windows\system32\Сообщение готово к отправке со следующим вложенным файлом или ссылкой: Сведения ТРБ Новороссийск на 01.07.19.pdf) >. Я хочу чтобы в письмо встал текст, а не ссылка на файл. Что я делаю не так? Подскажите или тыкните где посмотреть. Спасибо заранее.

Спасибо за макрос.
А чтобы старый Бат отправлял и не закрывался, нужен параметр /SEND*.
После паузы, да.

Извините, все дело было в кавычках (Chr(34))

Прекрасный макрос!
Одна проблема - если либо в теме, либо в пути к файлу есть пробел, то строки отсекаются до него. Соответственно, тема из одного слова, а файл не находится.
Скажите, пожалуйста, как решить проблему? Bat 5.0.36.2, Win7, Office 2010

Вряд ли под Portable-версию получится, - там может не быть (и, скорее всего, нет) возможностей для программного управления рассылкой.
Так что пока только Outlook и стандартный TheBAT из вариантов отправки писем макросом (еще на сайте есть макрос для отправки писем без почтовых программ, средствами CDO)

А есть возможность настроить макрос под voyager(это портбл бат)? Дело в том, что он не устанавливается на комп., и найти его в реестре не получается, может есть какая-то хитрая переадресация.

Здравствуйте, Ярослав.
Совсем как при ручной вставке, - сложно очень, т.к. к функциям вставки из буфера обмена в тело письма, в TheBAT никак не добраться (а писать макрос, имитирующий действия пользователя - щелканье по кнопкам интерфейса TheBAT - не лучшая идея)

Но можно сделать что-то очень похожее.
Для этого, надо создать шаблон письма в формате HTML, и в середину шаблона вставить HTML код таблицы [a1:b10]
У меня на сайте есть парочка макросов, которые по диапазону ячеек сгенерирует HTML код (выберите любой из 2 вариантов, и подружите с макросом отправки письма)
http://excelvba.ru/code/ExportHTML
http://excelvba.ru/programmes/ExportHTML

Спасибо за замечательный макрос.
Работает хорошо - вот только вопрос как можно вставить в тело письма не просто обычный текст а табличку из Excel (не прикрепить файл а именно небольшую табличку) например из диапазона [a1:b10]. пока додумался просто сцеплять текст, как у Вас в примере, но хотелось бы именно таблицу с сохранением форматирования, как при ручной вставке.

Спасибо за код. Интересный и очень полезный. Единственно, что надо поменять в коде, что бы после отправки МЫШЬ остался активным (закрывается)

Print #ff, Текст: Close #ff ' пишем текст в файл

функция оставляет в txt файле пустую строку в конце
т.е. если записали в файл "123", при загрузке получим "123 " или "123"&vbNewLine

Влад, либо в настройках программы включите опцию «сворачивать программу вместо закрытия»,
либо в коде уберите параметр /MINIMIZE;
PS: не проверял. но у меня все отправляется, и ничего не закрывается.

Помогите! =)) Отличная функция! долго искал. Но вот вроде настроил. прикреплят то что нужно. НО после того как отправляет письма БАТ закрывается - что абсолютно не удобно. Помогите советом! Открывать постоянно программу после этого не удобно.

Шаблон присоединил, но он отображается в тексте, только в формате (.txt), все html и все подобные текстовые и иные файлы с языками разметки отображаются своим кодом и естественно без вложений с изображениями итд. Да шаблон вылезает сверху письма, да вещь совершенно бесполезная, проще руками прописать или ссылками на ячейки Excel.
Attach нескольких файлов реализовал так:
--- --- ---
If AttachFilename <> "" Then strATTACH = "ATTACH=" & Chr(34) & AttachFilename & Chr(34)
If AttachFilename1 <> "" Then strATTACH1 = "ATTACH=" & Chr(34) & AttachFilename1 & Chr(34)

TheBatPath = ПутьКФайлуПрограммыTheBAT: DoEvents
Cmd$ = Chr(34) & TheBatPath & Chr(34) & " /MAIL;TEMPLATE=""C:\Users\WWW\Desktop\123.txt"";" & strTO & ";" & strSUBJECT & ";" & _
strTEXT & ";" & strATTACH & ";" & strATTACH1 & " /MINIMIZE;"
--- --- ---
Осталось только собственно то, для чего и нужен был шаблон,- научиться пристегивать картинку с отображением в тесте письма. Есть мысли у кого-нибудь как это можно реализовать?

Очень большая просьба, положите пожалуйста пример с шаблоном (как не прописываю,- результат тот же, пустой шаблон в исходящих) и с отправкой нескольких файлов (прикрепляется только последний, где бы не прописал весь список), может гранаты не той системы? (office 2007 standart) или дело в прокладке между монитором и клавиатурой...

C шаблонами пробовал - не получилось.
TheBAT ждёт в качестве значения параметра TEMPLATE полный путь к файлу шаблона
Т.е. можно создать в отдельном текстовом файле шаблон письма - он будет вставлен перед текстом письма (т.е. сам текст письма добавится ПОСЛЕ всего текста шаблона - т.е. результат совсем не тот, какой мы ожидаем)

Одно не понимаю, - зачем вам колдовать с этими шаблонами?
В макросе можно дописать пару строк, добавив перед текстом письма шапку, а после - подвал письма:

            ' формируем текст письма
            Текст = Текст & "Здравствуйте, " & ro.Cells(2) & vbNewLine & vbNewLine
 
            Текст = Текст & "Предоставленный документ: " & ro.Cells(3) & vbNewLine & vbNewLine
            Текст = Текст & "Формат документа: " & ro.Cells(4) & " на " & ro.Cells(5) & " стр." & vbNewLine
            Текст = Текст & "Срок выполнения: " & ro.Cells(6) & vbNewLine
            Текст = Текст & "Стоимость: " & ro.Cells(7) & " " & ro.Cells(8) & vbNewLine
            Текст = Текст & "Дата выполнения: " & ro.Cells(9) & vbNewLine
 
            Текст = Текст & vbNewLine & vbNewLine & "С уважением," & vbNewLine & _
                    "администратор сайта ExcelVBA.ru" & vbNewLine & "Игорь    mailto:info@excelvba.ru"

Насчет ATTACH с несколькими файлами, - ниже в комментах было предложено решение (хотя я делал как-то иначе, - и тоже работало):

Делается очень просто: ;ATTACH=D:\Файл1.mhtml;ATTACH=D:\Файл2.mhtml
это присоединять к письму несколько файлов (EvgeniuXP).

Короче, для каждого файла надо добавлять в командную строку отдельный ATTACH

Но, поскольку длина командной строки ограничена, можно (и рекомендуется) поступить как с текстом письма:
записываем список прикрепляемых файлов в текстовый файл (по одному полному пути к файлу на строку), и в параметре ATTACH задаем путь к этому текстовому файлу.

И так же не могу понять где прописывать адреса нескольких прикрепленных файлов, если это делать в тексте письма, то прикрепляется только последний файл из всего списка перечисленных. Если это сделать в процедуре "strATTACH", то компилятор ругается на неправильный синтаксис.

Добрый день, огромное спасибо автору за функцию, и присоединяюсь к вопросу Кирилла, команда TEMPLATE не зависимо от дальнейшего адреса, в любом случае добавляет шаблон нового письма по умолчанию, даже с таким синтаксисом:
--- --- ---
Cmd$ = Chr(34) & TheBatPath & Chr(34) & " /MAIL; TEMPLATE=""Мой шаблон""; " & strTO & ";" & strSUBJECT & ";" & _
strTEXT & ";" & strATTACH & " /SENDALL; /MINIMIZE;" ' формируем командную строку
--- --- ---
игнорируя все дальнейшие манипуляции, причем конкретного адреса шаблона вообще не существует, есть только файл для каждого ящика со всеми шаблонами сразу "ACCOUNT.QTB", адрес которого прописывать бессмысленно. Может единственный способ, это прописать в коде "руками" все настройки из шаблона?

Могу сделать - но только под заказ (не бесплатно)
Оформляйте заказ, прикрепляйте примеры файлов, и описывайте, что и как должно работать.

Большое спасибо за макрос, давно пытался создать что-то подобное, а подскажите пожалуйста как можно реализовать рассылку с условием при повторяющихся подряд в первой колонке адресах почты, чтоб он не создавал отдельное письмо, а дополнял самое первое ниже, указывая весь текст соответствующий каждому повтору email?

Кирилл, скорее всего, вы неверно указали название или путь к шаблону.
Название шаблона надо заключать в кавычки. В коде, кавычки надо дублировать.
Например, если шаблон называется Мой шаблон,
то в коде должно быть что-то типа такого:

Cmd$ = Chr(34) & TheBatPath & Chr(34) & " /MAIL; TEMPLATE=""Мой шаблон""; " & strTO & ";" & strSUBJECT & ";" & _
           strTEXT & ";" & strATTACH & " /SENDALL; /MINIMIZE;"    ' формируем командную строку

Спасибо за идею, но при таком подходе (добавление TEMPLATE=...всеравночто... - при любом варианте шаблон "Новое письмо") действительно формируется письмо с шаблоном "Новое письмо" (только) , а дальнейшая строка изнорируется. Т.е. в папке исходящих писем создается новое письмо с шаблоном по умолчанию, но без адресата, темы, текста и аттача. Попробовал через переменную - по аналогии с параметрами адрес, тема, текст ( strTEMPLATE = "TEMPLATE=" & Chr(34) & TEMPLATE & Chr(34) ) - отправляет письмо как раньше , добавляя текст, что не найден файл в папке System32

Здравствуйте, Кирилл.
По идее, TheBAT должен использовать настроенный шаблон из настроек почтового ящика.
Но, по факту, создается «голое» письмо.

По параметрам командной строки TheBAT, информация есть здесь: http://www.nobat.ru/cmd_intro.html

Синтаксис команды /MAIL:
/MAIL:[parameter1[;parameter2[;parameter3 [...]]]

Возможные параметры:

USER=значение или U=значение.
Значение - название ящика, из которого должно быть отправлено сообщение. Если параметр FOLDER не определен, будет отправлено сообщение из папки Inbox данного ящика.
PASSWORD=значение или P=значение.
Значение - пароль. Используется в том случае, если ящик защищен паролем.
FOLDER=значение или F=значение.
Значение - путь к папке в ящике, из которой следует оправить сообщение. Если путь не включает имя ящика, The Bat! будет просматривать все ящики в поисках папки с таким именем; использоваться будет первая найденная папка. Если заданная папка не найдена, будет использоваться папка Inbox указанного ящика.
TEMPLATE=значение или T=значение.
Значение - путь к файлу, содержащему шаблон, который должен использоваться для создания сообщения. По умолчанию это - шаблон используемой папки или ящика.
TO=значение.
Значение определяет первичного адресата сообщения. Вы можете добавлять дополнительных адресатов с помощью макрокоманд шаблона %TO, %CC, %BCC.
SUBJECT=значение или S=значение. Значение определяет тему сообщения. Также возможно определить тему сообщения в шаблоне, используя макрос %SUBJECT.
TEXT=значение или CONTENTS=значение или C=значение.
Значение - путь к текстовому файлу, который содержит текст сообщения. Также возможно включить текстовый файл в сообщение, используя в шаблоне макрос %PUT.
ATTACH=значение или FILE=значение или A=значение.
Значение - путь к файлу,  который должен быть присоединен к сообщению. Также возможно использовать макрос %ATTACHFILE в шаблоне.

 

Вывод: надо в команду добавить что-то вроде TEMPLATE=НазваниеШаблона;

Я не пробовал, - потому готового решения дать не могу. Проверьте - должно получиться.

Т.е. надо заменить

Cmd$ = Chr(34) & TheBatPath & Chr(34) & " /MAIL;" & strTO & ";" & strSUBJECT & ";" & _
           strTEXT & ";" & strATTACH & " /SENDALL; /MINIMIZE;"    ' формируем командную строку

на

Cmd$ = Chr(34) & TheBatPath & Chr(34) & " /MAIL; TEMPLATE=НазваниеВашегоШаблона; " & strTO & ";" & strSUBJECT & ";" & _
           strTEXT & ";" & strATTACH & " /SENDALL; /MINIMIZE;"    ' формируем командную строку

Хочу поблагодарить за показанный способ отправки файлов через The_Bat! Использую для рассылки документов PDF - всё работает великолепно. Мне "Мыша" всегда больше оутлука нравился - еще раз СПАСИБО, Мастер! Единственный оставшийся вопрос - при создании нового письма в The_Bat применяется шаблон с настроенными шрифтами, подписью, логотипом компании и т.д., а при отправке писем макросом, с того же почтового ящика, уходит "голое" письмо с текстом , прописанном мною в коде. Есть ли возможность задействовать шаблон "мыша"? Подскажите, пожалуйста, как это решается. Спасибо!

Тоже не смог разобраться, как прикрепить два (три) файла! Получаю такойже результат!

Спасибо! Ответ не нужен! Ошибку нашел-разобрался!

Добрый день! Огромное спасибо за такой необходимый макрос! Однако возникла сложность с оператором:
TheBatPath = ПутьКФайлуПрограммыTheBAT: DoEvents
Передает в командную строку пустое значение (Empty)
TheBat - запущен. Ящик определяется (функцией, Вами подсказанной) по умолчанию верный....
Буду благодарен за разъяснение!

Делается очень просто: ;ATTACH=D:\Файл1.mhtml; ATTACH=D:\Файл2.mhtml
Написал - потому что нигде в инете информацию не нашел, может кому тоже пригодится :)

это присоединять к письму несколько файлов (EvgeniuXP).

Здравствуйте, Петр.
Уберите везде в коде параметр /SENDALL, - и письма будут оставаться в папке «Исходящие»

Можете также использовать готовую программу для рассылки почты (через Outlook или TheBAT),
- там, в настройках. есть опция немежденной или отложенной отправки писем.

Как сделать чтобы письма не отправлялись, а помещались в черновики например?

Спасибо, за ответ.
Скорректируйте, пожалуйста,
прописываю пути к файлам через запятую:
AttachFilename = Chr(34) & "d:\1.jpg" & Chr(34) & "," & Chr(34) & "d:\2.jpg" & Chr(34)
получаю "Файл d:\1.jpg,d:\2.jpg не найден", т.е. воспринимает как один файл с именем d:\1.jpg,d:\2.jpg

Заранее, благодарю

Чтобы прикрепить несколько файлов, - надо в переменной strATTACH перечислить полные пути к ним (не помню только, с каким разделителем, - вроде запятую можно использовать), заключая каждый путь в двойные кавычки

Я обычно формирую текстовый файл, в который прописываю все команды и список вложений, - а потом задаю этот файл в качестве параметра к TheBAT (это если надо указать много файлов)

Здравствуйте, подскажите, пожалуйста, как отправить несколько вложений в одном письме?
Количество вложений должно зависеть от данных введенных в ячейку.
Например, если в ячейке стоит текст "1,2,3", то должно отправиться три файла с указанным расширением, к примеру, 1.jpg, 2.jpg, 3.jpg Заранее, спасибо.

Надо в TheBAT! в свойствах почтового ящика поставить галочку «использовать по умолчанию»

Office тут ни при чем. В windows - да, может быть что-то не так настроено.
Но тут я ничего подсказать не могу - я ничего специально не настраивал,
просто запустил ваш макрос - письмо отправилось (WinXP, Office 2010)

Я конечно же проверил изначально. Не работает.
Run-time 1004: Method 'sendMail' of object'_Workbook' failed.
Я упустил большой нюанс - кроме все это все на ОС Windows 7 и Oficce '07. Может в этом дело???
Может в настройках панели управления необходимо что-то изменить??
В настройках The Bat почтовый клиент по умолчанию.

Код не надо менять - с TheBAT все будет работать точно также.
Что спрашивать-то... проверили бы, и увидели, что все работает.

(возможно, в TheBAT потребуется назначить один из почтовых ящиков «по-умолчанию».
У меня TheBAT без всяких паролей, я назначенным по-умолчанию ящиком, - ваш код сработал)

Добрый день. Подскажите, раньше отправлял письма через Outlook Express вызываемый макросом Эксель. Теперь вынужден был перейти к The Bat.
Процесс происходит приблизительно так:
есть базовый файл Эксель, с ним происходят определенные изменения, которые сохраняются уже под др именем (имя все время разное). Именно его и надо автоматически отправлять на один определенный адрес.
Раньше код выглядел так:
With ActiveWorkbook
.SendMail Recipients:="k@ukr.net", _
Subject:="..."
.Close SaveChanges:=False
End With
Подскажите пожалуйста, как должен выглядеть код??

Ни один ящик не настроен в качестве ящика по умолчанию. Хотя в программе все настроено, почта одна

Читаем справку по параметрам командной строки TheBAT:

TO=значение. Значение определяет первичного адресата сообщения.
Вы можете добавлять дополнительных адресатов с помощью макрокоманд шаблона %TO, %CC, %BCC.

и делаем по аналогии:

strTO = "TO=" & Chr(34) & Email & Chr(34) & ";" & "CC=" & Chr(34) & "address@mail.ru" & Chr(34)   
 ' адрес получателя (можно указать список адресов)

CC - копии письма, BCC - скрытые копии письма.

Да и вообще, можно просто указать список email в параметре TO=
не изменяя код.
Все подробности, как это делать - в справке по TheBAT!

Спасибо за функцию Но есть один вопрос- как указать ещё и адреса для рассылки копии письма?

СПасибо!

Здравствуйте.
Файл может быть расположен где угодно, имя его может быть любым.
Вам надо иметь в переменной полный путь к этому файлу, и передать в функцию создания письма переменную, содержащую полный путь к отправляемому файлу, в качестве параметра AttachFilename.

ВАЖНО! Файл не должен быть открыть в какой-либо программе.
Например, если это файл XLS, он не должен быть открыт в Excel, иначе макрос не сможет прикрепить файл к сообщению
(если честно, не проверял, но обычно это так и бывает)

Пример кода отправки письма с файлом:

Sub ПримерОтправкиФайлаПоПочте()
    Получатель$ = "vasya@mail.ru"
    Текст$ = "Здравствуй, Вася. Лови файл."
    Тема$ = "Пример отправки файла во вложении к письму"
    ПутьКФайлу$ = "C:\Documents and Settings\Admin\Рабочий стол\маршрут.xls"
 
    ОтправитьПисьмоЧерезTheBat Получатель$, Текст$, Тема$, ПутьКФайлу$
End Sub

Добрый день!
простите, если вопрос очень прост, но не могу понять куда нужно прописать AttachFilename, чтоб к отправляемому письму прикреплялся файл вложения? Кроме того, где должен находится файл и каким должно быть его имя?

Заранее спасибо!

При создание письма The Bat закрывается автоматически

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  ____    _     ____    ____    _____   _    
|___ \ | |_ | _ \ | __ ) |___ | | | __
__) | | __| | |_) | | _ \ / / | |/ /
/ __/ | |_ | _ < | |_) | / / | <
|_____| \__| |_| \_\ |____/ /_/ |_|\_\
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

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