Страницы: 1
RSS
Создание правил Outlook через Excel
 

Всем привет.
Хочу сделать макрос по настройке Outlook (создание нужных папок и правил).
Все шло хорошо, но столкнулся с проблемой настройки правила, которое копирует элемент в нужную папку: папка не хочет добавляться в условия, как я думаю из-за несоответствия типов данных, но как обойти проблему не могу понять... по этому прошу у вас помощи! заранее спасибо!)
код:

Код
Sub qwe()
    Set ns = CreateObject("Outlook.Application")
    Set objNamespace = ns.GetNamespace("MAPI")
    Set oInbox = objNamespace.GetDefaultFolder(6)
    Set oMoveTarget = oInbox.Folders("Сервис")
    
    Set colRules = objNamespace.Session.DefaultStore.GetRules()
    Set oRule = colRules.Create("Правило", olRuleReceive)
    
    'Set oFromCondition = oRule.Conditions.From   ' от кого
    '    With oFromCondition
    '        .Enabled = True
    '        .Recipients.Add ("123")
    '        .Recipients.ResolveAll
    '    End With
    
    Set oMoveRuleAction = oRule.Actions.MoveToFolder  ' элемент переноса
    With oMoveRuleAction
        .Enabled = True
        .Folder = oMoveTarget
    End With
    
    Set oExceptSubject = oRule.Exceptions.Subject   ' тема
    With oExceptSubject
        .Enabled = True
        .Text = Array("Что-то", "куда-то")
    End With
    
    colRules.Save
    
End Sub
 
Exzem, Ваш вопрос относится к Excel только тем что скрипт работает в его среде VBA.  Это все равно что сетовать на некорректную работу диалогового окна выбора файла для работ по копирования, переименованию, удалению файлов на недоступном ресурсе.
По вопросам из тем форума, личку не читаю.
 
Ну так я и не требую ни с кого решения, вдруг кто-то в курсе или уже сталкивался с такой проблемой или просто дадут совет.
P.S. На форуме существуют темы затрагивающие работу с другими ресурсами через Excel.
 
Если кому интересно, проблему удалось решить подключением библиотеки :Microsoft Outlook 14.0 Object Library
Как выяснилось стандартный тип данных присваиваемый папке не подходит для Outlook'a ему нужен свой.
т.е. после подключения библиотеки требуется прописать :
Код
Dim oMoveTarget As Outlook.Folder

в макрос можно вставить код, подключающий библиотеку сам:

Код
Sub ref_check() Dim i As Integer With ThisWorkbook.VBProject.References  For i = 1 To .Count    Debug.Print .Item(i).GUID, .Item(i).Description, .Item(i).Major, .Item(i).Minor    GoTo q1    End If  Next i  .AddFromGuid "{00062FFF-0000-0000-C000-000000000046}", 1, 0End Withq1:End Sub

 
Я бы рекомендовал Вам настоятельно это почитать: Как из Excel обратиться к другому приложению
Потому что все можно сделать проще, заменив объявления Outlook.Folder и прочее на глобальное Object, а все константы оутлука его числовыми эквивалентами. И работать будет везде, где есть Outlook(если в коде не применяются совсем уж новые методы, которые есть только в самой последней версии).
Изменено: Дмитрий(The_Prist) Щербаков - 10.12.2018 18:40:41
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
правила в почте обычно создаются 1 раз на многие-многие годы
зачем месяц искать как это сделать макросм, если за 10 минут можно сделать руками?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Этот вариант хорош для "Оформления" рабочего места новому сотруднику. Нажал и все готово.

Дмитрий(The_Prist) Щербаков, спасибо, обязательно ознакомлюсь!
 
Цитата
Exzem написал:
Нажал и все готово.
Цитата
Exzem написал:
Спасибо, обязательно ознакомлюсь!
тогда уж и с этим
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал: тогда уж и с  этим
Не вариант, далеко не все могут и будут этим пользоваться, инструмент должен быть прост в использовании.
Да и под каждый частный случай придется делать новые правила и Экспортировать набор
Страницы: 1
Наверх