![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Регистрация: 02.03.2009
Сообщений: 6
|
![]()
Здравствуйте, я столкнулся со следующей задачей. Я, честно говоря, не являясь экспертом в подобных вопросах, так что заранее прошу прощения за возможную тупость.
Задача состоит в том, что необходимо на адрес, указанный в ячейке А2 (3, 4...), отправить данные из ячеек С2 (3, 4...) - G2 (3, 4...) по щелчку в ячейке A2 (3, 4...). Т.е. чтобы открылся the BAT, в строке адреса стоял адрес из A2 (3, 4...), а в теле письма были вставленны данные из С2 (3, 4...) - G2 (3, 4...) и оставалось только нажать в the BAT "отправить". При этом, т.к. адресатов с одинаковыми данными может быть сразу несколько (как в моем примере у ООО "Апрель" и ООО "Эверест"), чтобы можно было сэкономить время: отсортировать и пощелчку отправить нескольким адресатам их одинаковые данные. Насколько эта задача является сложной/выполнимой? Нужно ли здесь создавать макрос или нужны какие-то другие действия. Если есть возможность, пожалуйста, помогите! |
![]() |
![]() |
![]() |
#2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Здесь есть пример макроса для отправки почты при помощи TheBAT:
http://excelvba.ru/code/TheBAT Смотрите также другие способы отправки почты из Excel: http://excelvba.ru/category/mail Только текст сообщения в том макросе надо сначала записывать в текстовый файл, а потом этот путь этого файла прописывать в командной строке (короче, надо внести в макрос небольшие изменения) Если подойдёт такой вариант - можно попробовать. Если устраивает отправка через Outlook, здесь есть очень много примеров макросов для этих целей. Цитата:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 12.01.2013 в 10:44. |
|
![]() |
![]() |
![]() |
#3 | |
Регистрация: 02.03.2009
Сообщений: 6
|
![]()
EducatedFool, спасибо!
На вид, вроде устраивает нижеописанный макрос, но, почему-то он не срабатывает. Не подскажите, что означает пункт 1) The code is not working if your data is a List(Excel 2003). И как "выключить АвтоФильтр" (3) Turn off AutoFilter before you use the code). Цитата:
Последний раз редактировалось Madagaskar; 02.03.2009 в 22:12. |
|
![]() |
![]() |
![]() |
#4 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
Я пока не умею находить ошибки в макросе, руководствуясь только его описанием... Прикрепите файл с этим макросом - тогда посмотрим. |
|
![]() |
![]() |
![]() |
#5 | |
Регистрация: 02.03.2009
Сообщений: 6
|
![]() Цитата:
Тем не менее макрос все равно прикрепляю. Дело в том, что этот макрос прикрепляет информацию из ячеек в виде вложения, но мне это никак не подходит. Необходимо чтобы информация была именно в тексте письма. Нельзя ли каким-нибудь образом его подкорректировать или это невыполнимая задача? А так было бы как раз что нужно! Заранее извиняюсь, если прошу не возможного. Поскольку мало чего понимаю в этом не могу оценить сложность... Последний раз редактировалось Madagaskar; 02.03.2009 в 23:08. |
|
![]() |
![]() |
![]() |
#6 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
Весь этот макрос рассчитан на отправку текущей книги Excel. Вообще, его можно заменить одной строчкой: ThisWorkbook.SendMail "123@mail.ru", "тема письма" Есть же множество нормальных макросов для Outlook, я уже приводил ссылку Там макросы гораздо короче, чем тот, что Вы привели. К сожалению, проверить пока не могу - не умею пользоваться программой Outlook ![]() То есть, при помощи TheBat и OutlookExpress я умею отправлять почту, а в Outlook-е после написания сообщения даже кнопку "Отправить" найти не могу. Сейчас попробую что-нибудь сделать. Если настрою Outlook, то приведу пример рабочего макроса. |
|
![]() |
![]() |
![]() |
#7 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Попробуйте что-то вроде этого:
Код:
Если бы Вы вместо скриншота прикрепили бы к сообщению свой файл, макрос бы удалось написать конкретно под Ваши нужды. (добавлено) Попробуйте заменить во втором макросе строку .Send 'or use .Display на строку .Display
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 03.03.2009 в 00:16. |
![]() |
![]() |
![]() |
#8 |
Регистрация: 02.03.2009
Сообщений: 6
|
![]()
Спасибо большое, сейчас опробую!
|
![]() |
![]() |
![]() |
#9 |
Регистрация: 02.03.2009
Сообщений: 6
|
![]()
Пришлось повозиться с Outlook, не привык им пользоваться, обычно использую BAT.Так что пока разобрался... и то не до конца)).
EducatedFool, Запустил макрос как есть, получилось что "адрес" оказался в "теме письма", "название организации" в "адресе", а "название докумета" в "теме" (см. Рис.1). Методом эксперимента догадался поменять в коде цифры местами, получилочь как примерно должно быть (см. Рис.2). Как увеличить количество строк догадался (изменениями с строке For i = 2 To 5 ), но как сделать так, чтобы в теме письма захватывался диапазон С:G (или больше) догадаться не смог. Экспериментальным путем ничего не получилось. Так что надеюсь все еще на вашу помощь. Документ-пример прикрепляю в сообщении (см. Книга 1), а код у меня получился следующий: Код:
|
![]() |
![]() |
![]() |
#10 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Вроде всё получилось.
Разбираться с Outlook не стал, сделал отправку через TheBAT Получилось намного быстрее и удобнее. В прикреплённом примере формируются письма примерно такого содержания: Цитата:
Код:
Код:
Для запуска макроса нажмите на зелёную кнопочку в перой ячейке листа. Не забудьте отключить соединение с Интернетом на время проверки макроса - формирование и отправка писем происходит почти моментально На некоторых версиях TheBAT письма отправляются моментально, на некоторых - просто складываются в папку Исходящие Письма перед отправкой формируются в файлах с именами типа Цитата:
(или измените путь к папке в строке Const ФайлДляСохраненияТекстаПисьма = "C:\WINDOWS\TEMP\mail") Проверьте и отпишитесь. (добавлено) В макросе Формирование_и_Отправка_Писем перед строкой ОтправитьПисьмоЧерезTheBat Адрес, Текст, Тема добавьте строку Тема = Replace(Тема, """", "`") Это необходимо для замены двойных кавычек в теме письма, иначе названия организаций типа OOO "Апрель" при отправке будут заменены на OOO Апрель PS: Если у Вас включен почтовый антивирус (опция во многих антивирусах), то могут появляться сообщения о блокировке исходящих писем из-за превышения лимита. Антивирусы не любят, когда отправляются десятки писем в секунду... Отключите эту опцию.
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 03.03.2009 в 12:46. |
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объединение данных из диапазона ячеек | Lal | Microsoft Office Excel | 8 | 12.08.2009 11:24 |
Добавление данных в диапазон ячеек | denneo | Microsoft Office Excel | 1 | 08.02.2009 09:05 |
Отправка данных на почту | Claster | Общие вопросы Delphi | 2 | 20.11.2008 21:10 |
отправка данных на сайт | xakkkkker | Работа с сетью в Delphi | 3 | 19.11.2008 16:37 |
Перенос данных из ячеек | gavrylyuk | Microsoft Office Excel | 2 | 05.08.2008 14:24 |