Страницы: 1
RSS
Универсальный макрос фильтрации файла в активном письмо Outlook
 
Помогите, пожалуйста, написать макрос для кнопки в Outlook. Во вложении файл. Макрос должен: В активном (созданном) письме Outlook со вложением файла эксель (форматы могут быть xls, xlsx, xlsm) находить в столбце С ячейку ВАШ ЗАКАЗ (она может в разных строках, но строго в столбце С), ставить на нее фильтр и убирать галочку в фильтре с "пустые", сохранять данный файл и его закрывать. Файл с данными может быть с очень большим числом строк. Заранее спасибо за Ваши ответы
Изменено: Евгений И. - 16.07.2018 14:16:48
 
Цитата
Евгений И. написал:
макрос для кнопки в Outlook
это уже к Outlook больше отношения имеет. Да и вообще непонятно что означает в "активном письме". Активное это: то, которое сейчас выделено; то, которое только что создано; то которое только что получено. Все эти определения относятся к активному и созданному письму(они все были сначала созданы, потом либо получены, либо выделены, либо открыты). Каков Ваш случай? Так же плохо понятно в какой момент Вы видите запуск макроса и почему запуск должен быть из Outlook.
Ну и не могу не спросить из интереса - а что конкретно не получается? Что уже получилось сделать для реализации своей задачи? Или всю задачу Вы решили переложить на форум? :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, отвечу на Ваши вопросы: про активное письмо я сразу пояснил в вопросе - под активным понимаем уже созданное письмо со вложенным файлом. Кнопку можно сделать в экселе в любом стороннем файле (стороннем относительно вложенного в мой вопрос), не всегда, но частенько макросы для outlook идентичны макросам для экселя (подчеркиваю, не всегда...). Запуск макроса - одним макросом мы создаем письма с вложениями, вторым (данным макросом) фильтруем и сохраняем вложенные в них файлы. Для решения данного вопроса нами не сделано ничего, кроме формулировки самого вопроса (не являемся знатоками команд VBA и принципов программирования этого языка...познаний хватает только на формулирование логики и внесение легких правок в готовое решение...), но данное решение может быть интересно многим, так как проблема может быть распространенной (фильтрация и сохранение вложенного файла)
 
Цитата
Евгений И. написал:
не всегда, но частенько макросы для оutlook идентичны макросам для экселя (подчеркиваю, не всегда...).
Практически всегда разнятся, если не говорить об общих операторах и синтаксисе языка. Объектная модель отлична и для того чтоб отработать то что хочется с вложенными файлами надо писать именно под Outlook. Так что правильнее разбить задачу на две, и конкретно по Excel части  - это сюда. С остальным нет , ну или в сюда
По вопросам из тем форума, личку не читаю.
 
Спасибо за уточнение, тогда вопрос по поводу экселя - данный макрос нужно завязать на кнопку файла Эксель, в остальном формулировки вопроса актуальны
 
Цитата
Евгений И. написал:
но данное решение может быть интересно многим
Слабая аргументация для того, чтобы переложить полностью решение задачи на других. Если бы проблема была столь популярна, как Вы думаете - поиском можно было бы найти уже и решение или попытки такового. Но проблема в том, что кроме Вас задача особо никому и не нужна именно в такой реализации, как Вы описали.
Постараюсь объяснить почему.
Логика построена так, что кажется она продумывалась на уровне "как придумалось", без обдумывания нюансов и возможности более простых реализаций. Не Ваша вина, все скорее от незнания возможностей и инструментов и отсутствии опыта, скорее всего.
Начинается это именно с "созданное сообщение". Нафига лишний раз пытаться определить что там создано в Outlook? Тем более, что планируется создавать эти письма из того же Excel. А если создано и открыто несколько? Как понять, какое из них активно в данный момент? Насколько помню, в Outlook с этим сложности, но могу ошибаться, т.к. какая-то коллекция точно должна отвечать за эти окна. Далее пробуем скачать из этого найденного письма вложение. Теперь подумаем: а Excel здесь каким боком? Это чистый Outlook с его методами и нюансами. Значит эту часть отбрасываем на второй план, т.к. не профиль форума. Только на интерес от конкретного участника можно рассчитывать. Следующий шаг проще: фильтруем. Но это вообще можно сделать записав макрос фильтрации(странно, что даже этого у Вас нет в качестве попыток). Ну и последнее - вложение файла обратно. И опять это Outlook, а не Excel.
В итоге имеем в основном Outlook на форуме, где собрались в основном спецы по Excel. Но и это не главное. Главное то, что задача выглядит слишком муторной со множеством лишних движений, чтобы реализовывать её чисто из интереса. Для меня уж точно, но может кому-то покажется интересной.

Но на Вашем месте я бы задумался сначала над пересмотром логики. Куда проще фильтровать на стадии создания этого сообщения. Берем файл, делаем цикл, который будет фильтровать нужные строки и каждую отфильтрованную порцию сохранять в отдельный файл, создавать новое сообщение в Outlook и вкладывать в каждое нужный файл с нужной фильтрацией или вообще только с нужными строками.
Вот такая задача с фильтрацией и отбором данных с сохранением в отдельные файлы уже решались на форуме. Остается только прикрутить туда созданием писем(точно не скажу, но может и такое даже уже было, т.к. вот такая задача точно популярна).

Ну и повторюсь: возможно кому-то это будет более интересно и он подключится. Ждите.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Данные письма с вложенными файлами мы уже получаем, а не создаем их сами с нуля. Наша задачи их обработать и направить дальше. Поэтому и логика такая. Тут выложен лишь фрагмент большой обработки. Исходим с того, что имеем на данный момент. Хорошо, возможно ли тогда подсказать часть макроса (к outlook мы сами прикрутим эту часть), поиск ячейки в столбе С со словом ВАШ ЗАКАЗ + постановка на эту ячейку фильтра + снятие галочки с "пустые" + сохранение файла+актульность для форматов xls, xlsx, xlsm? Все это завязать на сторонний файл Эксель (на кнопку в нем)  
Изменено: Евгений И. - 16.07.2018 15:54:30
 
Евгений И.,  А теперь попытайтесь соединить только обработку в excel и тему.

Цитата
Евгений И. написал:
возможно ли тогда подсказать часть макроса (к outlook мы сами прикрутим эту часть), поиск ячейки в столбе С со словом ВАШ ЗАКАЗ + постановка на эту ячейку фильтра + снятие галочки с "пустые" + сохранение файла+актульность для форматов xls, xlsx, xlsm?
Без скелета основной обработки, это можно записать макрорекордером, только начать нужно с поиска (CTRL+F)
Цитата
Евгений И. написал:
в столбце С ячейку ВАШ ЗАКАЗ
ну и далее. Полученный код будет очень сырой и не оптимальный , но рабочий.
По вопросам из тем форума, личку не читаю.
 
Пробую написать данный код, все-таки под Outlook...Не подскажите команды, которые открывают вложенный в письмо файл для его обработки (обработка написана ниже, сама фильтрация), а потом его сохраняют и закрывают?
Код
Sub Фильтрация_шаблона()
 
    Dim NewMail As MailItem, oInspector As Inspector
    Set oInspector = Application.ActiveInspector
    If oInspector Is Nothing Then MsgBox "Нет открытого письма!": End

    Set NewMail = oInspector.CurrentItem
    If NewMail.Sent Then MsgBox "Это сообщение нельзя откорректировать!": End
 
 
 
    Cells.Find(What:="ВАШ ЗАКАЗ", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        Range("A6:K27068").Select
    Selection.AutoFilter
    Selection.AutoFilter
    ActiveSheet.Range("$A$6:$K$27399").AutoFilter Field:=3, Criteria1:="<>"
    Range("A1").Select
    ActiveWorkbook.Save

End Sub
Изменено: Евгений И. - 17.07.2018 08:43:03
 
Изучайте тут
По вопросам из тем форума, личку не читаю.
 
Цитата
Евгений И. написал:
команды, которые открывают вложенный в письмо файл
их нет. Сначала надо скачать вложение куда-нибудь, потом его оттуда открыть. Потом удалить вложение и вставить то, которое изменили.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо за Ваши ответы, к сожалению, данная информация может помочь только программисту, но не обычному пользователю эксель...
 
Евгений И., Ну так кто вам мешает  или стать программистом или обратится к ним с ТЗ. Еще раз, OUTLOOK не Excel, "Здесь вам не равнина - здесь климат иной". Вот это чуть поможет с тем, что написал Дмитрий выше.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх