|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.12.2010, 12:48 | #1 |
Регистрация: 21.10.2010
Сообщений: 9
|
Как выделить из текста все адреса электронной почты?
Всех с наступающим новым годом!!!
Возник следующие вопрос . имеется документ(прикрепляю Excel 2003) содержащие адреса хотелось бы убрать все лишние оставив только адреса (на выходе нужно получить список адрессов, в любом формате). Возможно ли это сделать в эксель без особых заморочек. |
28.12.2010, 13:35 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
выполните этот
Код:
смотрите лист2 колонка 1. если какие-то адреса выбраны не правильно (с мусором), обратите внимание какими символами ограничен адрес в начале и в конце, добавьте эти символы в Const SepChar As String = " <>[]:;,()" и выполните макрос еще разок.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
28.12.2010, 13:43 | #3 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Вот что получилось:
Вот весь код: (не уверен, что все адреса выводятся корректно - но с виду всё хорошо) Код:
Цитата:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 12.01.2013 в 11:29. Причина: немного подправил код - некоторые адреса терялись |
|
28.12.2010, 15:32 | #4 |
Регистрация: 21.10.2010
Сообщений: 9
|
Спасибо уважаемые профессионалы!!!
Все работает крайне корректно и правильно. Решил разобраться как работает , в макросе IgorGO логика понятна (поиск символа @ и дальше определение длины адреса в обе стороны до символов <>[]:;,()) , реализация после чтения мануалов проясняется. Однако в макросе уважаемого EducatedFool ничего не понимаю (Sub cl(): shres.[a4:a65000].ClearContents: End Sub единственное понятное мне место), просьба просто на пальцах объяснить используемую логику программы и методов программирования. Еще раз спасибо. |
28.12.2010, 15:49 | #5 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
результаты сошлись?
у Игоря все "заточено" на использование "VBScript.RegExp". не помню точно, кажется Doober продемонстрировал эту штучку (или он видел ее у EducatedFool и обронил фразу, что так и не разобрал до конца на что она способна). учитесь у мастеров, я у них много чего высмотрел. а у меня действительно все просто, как дубовые двери, макрос выглядел бы приблизительно так же, если бы я его писал лет 20 назад)))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
28.12.2010, 16:30 | #6 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Мой совет - не пытайтесь понять, как это работает. Просто используйте, если макрос работает правильно. Объяснять принцип работы такого макроса - намного дольше, нежели написать код. Суть его проста: перебираем в цикле все заполненные ячейки, и каждую ячейку проверяем на соответствие шаблону СИМВОЛЫ@СИМВОЛЫ.СИМВОЛЫ Чтобы избежать проблем с лишними точками и дефисами, перед проверкой на соответствие шаблону делаем 2 замены, после проверки - 2 обратные замены. Найденные адреса изначально засовываем в коллекцию: coll.Add addr, addr Это делается для того, чтобы не выводить повторяющиеся адреса (в коллекцию попадают только уникальные) Ну и по окончании всего этого в цикле перебираем все элементы коллекции, и выводим их один за другим на лист результатов. Про использование регулярных выражений (RegExp) можно почитать здесь: http://www.script-coding.com/WSH/RegExp.html
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 28.12.2010 в 16:33. |
|
28.12.2010, 16:52 | #7 |
Регистрация: 21.10.2010
Сообщений: 9
|
да оба макроса все работают как часы без сбоев и нареканий (результаты двух макросов разные только за счет повторяющихся адресов, наличие отсутствие повторяющихся элементов не критично ).
Спасибо за пояснения, попробую понять, с чем едят этот RegExp. |
09.08.2013, 11:19 | #8 |
Новичок
Джуниор
Регистрация: 09.08.2013
Сообщений: 2
|
Доброго времени суток, уважаемый EducatedFool!
Я понимаю, что данная тема обсуждалась уже больше 2-х лет назад, но помогите, пожалуйста разобраться. Ваш макрос работает великолепно. Даже не знал что такое вообще возможно в экселе. Единственное, он выдаёт одинаковые адреса, тоже. Выше Вы писали: "Найденные адреса изначально засовываем в коллекцию: coll.Add addr, addr Это делается для того, чтобы не выводить повторяющиеся адреса (в коллекцию попадают только уникальные) Ну и по окончании всего этого в цикле перебираем все элементы коллекции, и выводим их один за другим на лист результатов." Можете объяснить как это сделать по пунктам? Я сохранял найденное в файл coll.add, потом опять запускал макрос, но дубли всё равно оставались.. Я что-то не так делал? |
09.08.2013, 12:40 | #9 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Рэммант,
пока не видно что Вы сделали вообще, трудно сказать что сделали не так. сильно настораживает это: Цитата:
в исходном тексте макроса был создан обьект - коллекция coll, coll.add - это вызов метода add обьекта coll
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
06.09.2013, 14:27 | #10 |
Новичок
Джуниор
Регистрация: 09.08.2013
Сообщений: 2
|
Здравствуйте уважаемый, IgorGO!
Немного задержался с ответом.. Если не брать в расчёт коллекцию(просто не понимаю для чего она нужна), то макрос работает очень хорошо. А одинаковые адреса он выдаёт так как почему-то оставляет их с точкой после домена. Пример результата: vasya@bk.ru vasya@bk.ru. inna@pisem.net inna@pisem.net. Что нужно исправить в макросе, чтобы он понимал, что это 2 одинаковых е-мэйл, только в обоих случаях один с точкой в конце, а другой нет? И, соотвественно, выводил результат только vasya@bk.ru и inna@pisem.net |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос по скрытым ip электронной почты... | aksenoff | Безопасность, Шифрование | 8 | 30.06.2010 18:12 |
Защита электронной почты | -=Kardinal=- | Помощь студентам | 3 | 23.02.2010 23:54 |
Обработка электронной почты | Sasha2009 | Фриланс | 2 | 14.03.2009 14:56 |
Автоматизация отправки электронной почты The Batt | owl-ka | Microsoft Office Excel | 8 | 19.11.2008 22:58 |