|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.11.2011, 05:31 | #1 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
сохранение в PDF и отправка по почте
Уважаемые программисты!!!
Из одной таблицы сформировал другую, сохранил ее в формате PDF под именем = содержимому определенной ячейки. Как теперь этот же файл макросом через The Bat! перебросить по адресу, который лежит на другом листе? Макрос Игоря (спасибо ему, не раз выручали его штучки) для The Bat! конечно же работает. А вот как и где в нем указать, что адрес почты, на который отправлять файл, лежит на таком-то листе в такой-то ячейке? И как в пути к прикрепляемому файлу указать, что его имя = содержимому такой-то ячейки, но с расширением pdf? Вот попытался чего-то сделать: Sub Send_Mail_with_TheBAT_from_Excel_VB A() 'Dim wsh As New WshShell Set wsh = CreateObject("WScript.Shell") ' Chr(34) - это кавычка ' указываем полный путь к файлу программы TheBatPath = Chr(34) & "C:\Documents and Settings\thebat.exe" & Chr(34) ' пишем адрес получателя (можно указать список адресов) strTO = "TO=" & Chr(34) & "address@mail.ru" & Chr(34) 'вот тут, как я понимаю, должна быть указана ячейка, где лежит адрес получателя ' тема сообщения strSUBJECT = "SUBJECT=" & Chr(34) & "проверка отправки почты из Excel" & Chr(34) ' текст сообщения (или путь к текстовому файлу с сообщением) strTEXT = "TEXT=" & Chr(34) & "C:\Documents and Settings\Администратор\Рабочий стол\Текст сообщения.txt" & Chr(34) ' путь к прикреплённому файлу (можно прикрепить несколько файлов) strATTACH = "ATTACH=" & Chr(34) & "C:\Documents and Settings\Администратор\Рабочий стол\ExcelWorkbook.xls" & Chr(34) 'а вот тут вместо ExcelWorkbook.xls должна быть ссылка на ячейку как имя файла с расширением pdf ' формируем командную строку Cmd = TheBatPath & " /MAIL;" & strTO & ";" & strSUBJECT & ";" & strTEXT & ";" & strATTACH & " /SENDALL; /MINIMIZE;" wsh.Exec Cmd ' выполняем команду For i = 1 To 30000: DoEvents: Next ' пауза - без неё почему-то не происходит отправки Cmd2 = TheBatPath & " /SENDALL;": wsh.Exec Cmd2 ' команда ОТПРАВИТЬ ВСЮ ПОЧТУ End Sub Разъясните мне убогому, а то уже потонул в этой луже. |
29.11.2011, 07:31 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Если использовать функцию для отправки почты через TheBAT!,
то код будет выглядеть так: Код:
Код:
Код:
Цитата:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 12.01.2013 в 10:45. |
|
29.11.2011, 08:21 | #3 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
Оооо, какие люди!!! Искренне рад. Лично говорю, СПАСИБО огромное, многим помогли лично мне Ваши материалы и примеры.
Но, честно говоря, для новичков иногда бывает не то, чтобы не понятно, а излишне наворочено. Вот, к примеру, я новичок. В общем, полный новичок. Вроде и задача простая - взять адрес из конкретной ячейки А2, тема письма из ячейки В2, текст тела письма из ячейки С2 на листе под названием "Почта", куда специально вывел данные для формирования письма, прикрепить к нему заранее сохраненный файл под именем из ячейки D2 и отправить. Два дня ползаю по интернету, не могу понять. Ваш пример был вроде для меня самым понятным. Причем изначально все было реализовано одним макросом. Тут я так понимаю, что Sub SendmailTheBat() Fpath$ = "D:\Заказ\Счета\" ' адрес почты - из ячейки A2 = cells(1,2), тема письма из ячейки B2 = cells(2, 2), тело письма из ячейки C2 = cells(3, 2), имя файла (без расширения) - из ячейки D5 ' итого получилась такая строка SendmailTheBat Cells(1, 1), Cells(1, 2), Cells(1, 3), Fpath & [d5] & ".pdf" End Sub Правильно? |
29.11.2011, 08:45 | #4 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
Дальше.
Вот тут я и теряюсь. Function SendmailTheBat(ByVal Email As String, _ ByVal Текст As String, Optional ByVal Тема As String = "", _ Optional ByVal AttachFilename As String = "") As Boolean strTO = "TO=" & Chr(34) & Cells(1, 1) & Chr(34) ' адрес получателя из ячейки А(2) strSUBJECT = "SUBJECT=" & Chr(34) & Cells(1, 2) & Chr(34) ' тема сообщения из ячейки B2 'а тут так можно? вместо этих трех строк Filename$ = Environ("temp") & "\mail." & Fix(Rnd() * 1E+15) ff = FreeFile: Open Filename$ For Output As #ff Print #ff, Текст: Close #ff ' пишем текст в файл 'вставить текст тела письма strTEXT = "TEXT=" & Chr(34) & Cells(1, 3) & Chr(34) ' Chr(34) - это кавычка ' путь к прикреплённому файлу ВОТ ТУТ НЕ ПОЙМУ, ТАК? If AttachFilename <> "" Then strATTACH = "ATTACH=" & Chr(34) & D:\Заказ\Счета\ & [D5] & .pdf & 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 Правильно? |
29.11.2011, 08:59 | #5 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
Ругается на
Function SendmailTheBat(ByVal Email As String, _ ByVal Текст As String, Optional ByVal Тема As String = "", _ Optional ByVal AttachFilename As String = "") As Boolean |
29.11.2011, 10:06 | #6 | |||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Не надо макрос называть также, как и функцию... Цитата:
В статье же есть пример файла... Цитата:
Правильно так: Код:
Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 29.11.2011 в 10:09. |
|||
29.11.2011, 10:24 | #7 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
Да, тут я с координатами намудрил, бессонная ночь, будь оно неладно. Исправил:
Sub SendmailTheBat() FPath$ = "D:\Заказ\Счета\" SendmailTheBat [a2], [f2], [g2], FPath & Cells(2, 2) & ".pdf" End Sub Ругается. Выделяет синим SendmailTheBat в третьей строке и выделяет желтым первую.??? |
29.11.2011, 10:29 | #8 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
Функцию вставил без правок.
Игорь, я тебя прошу, удели мне еще немножко времени. Или добей. |
29.11.2011, 10:35 | #9 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Не надо макрос называть также, как и функцию Скопируйте весь нижеприведённый код в свой файл (что было - удалите), и проверяйте: Код:
|
|
29.11.2011, 10:36 | #10 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
Пишет:
Complite error: Wrong number of arguments or invflid property assignment |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание шаблона Outlook сообщения и отправка его по почте | avos002 | Microsoft Office Excel | 2 | 25.01.2011 08:18 |
Вопрос по TService и отправка по почте. | Sti.k | Общие вопросы Delphi | 2 | 10.06.2010 13:39 |
СОХРАНЕНИЕ В ФОРМАТЕ *.PDF | provodnikam | Microsoft Office Word | 10 | 20.02.2010 10:31 |
отправка аипи+параметр по почте (Delphi/PHP) | dyonysos | Помощь студентам | 0 | 05.10.2009 19:12 |
отправка файла по почте | DeDoK | Работа с сетью в Delphi | 1 | 10.11.2008 10:13 |