Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/23: Рейтинг темы: голосов - 23, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 110
1

Как можно сделать так чтобы отсылаемые письма сортировались по определенным папкам по определенным правилам?

02.12.2006, 02:46. Показов 4784. Ответов 9
Метки нет (Все метки)

Всем доброго времени суток.

Подскажите пожалуйста как можно сделать так чтобы отсылаемые письма сортировались по определенным папкам по определенным правилам (вхождение в адрес получателя например). В станартных правилах есть возможность только копировать по папкам письма, а мне надо часть их перемещать из папки отправленные в другие папки, а часть оставлять.
С программированнием в Outlook никогда не сталкивался.

Очень буду благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2006, 02:46
Ответы с готовыми решениями:

Как подцепить контролы к определенным путям линиям? чтобы пермещать их можно было только по ним
Имеется форма, фоном у нее идет рисунок(план), на форме находятся контролы их можно перетаскивать...

Сформировать матрицу по определенным правилам
Помогите решить задание. Само задание: сформируйте двумерный массив А(N;N) по следующему правилу:...

Сгенерировать строку по определенным правилам
Светлые умы, добрый вечер, нужна помощь темному, голова уже не варит, итак низкий уровень знаний...

Заполнение двумерного массива по определенным правилам
Всем доброго времени суток!:) Заполните двумерный массив так, как представлено ниже. Написать...

9
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 110
05.12.2006, 20:25  [ТС] 2
Вопрос снят, ошибся форумом.
0
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,749
05.12.2006, 20:28 3
Перемещено в форум по VBA.
0
snov
07.12.2006, 18:43 4
А почему бы не насторить фильтры в самом Outlook?!

В случае если так не катит юзай вместо метода Copy метод Move =)
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 110
07.12.2006, 21:32  [ТС] 5
Дело в том, что такой номер не проходит, нет там такого метода move
0
snov
08.12.2006, 23:01 6
Вот список классов Outlook, поддерживающих метод Move:

ContactItem, DistListItem, DocumentItem, JournalItem, MailItem, MeetingItem, NoteItem, PostItem, RemoteItem, ReportItem, TaskItem

А так понял, что ты используешь MailItem. В нем есть метод Move!

Ты его наверно как-то не так юзаешь.

Покажи код.
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 110
11.12.2006, 16:06  [ТС] 7
Париношу извинения! Не так прочитал (я имел ввиду что нет стандартного фильтра по событию отправка письма с перемещением, есть только скопировать, а мне надо переместить).
Вот и пытаюсь изголиться, но если с Excel я хоть что-то могу сделать, то в Outlook полный ноль.
А надо при отправке письма определить вхождение в строку адрес получателя и в соответствии с ним переместить это письмо из стандартной папки "Отправленные" в определенную подпапку. Причем имя подпапки в "Отправленные" дублирует имя подпапки "Входящие". Надо не перепутать.
Посдкажите как можно "обыграть" такой код. Я было начал, но поскольку никогда с этим не сталкивался, то не получается да еще и макрорекодера здесь нет.
Вот что удалось набросать с использованием справки, правда я так понимаю 80% неправильно.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub MoveItems()
    Dim myOlApp As New Outlook.Application
    Dim myNameSpace As Outlook.NameSpace
    Dim myFolder, myDestFolder As Outlook.Folder
    Dim myItem, myMovedItem As Outlook.MailItem
    
    Set myNameSpace = myOlApp.GetNamespace("MAPI")
    Set myFolder = myNameSpace.GetDefaultFolder(olFolderSentMail)
    Set myDestFolder = myFolder.Folders("MailRu")
    Set myItem = myOlApp.CreateItem(olMailItem)
    myItem.Address = "mailto:*@mail.ru *@mail.ru"
    Set myDestFolder = myItem.Move
    myMovedItem.Move myDestFolder
End Sub
Поможите кто чем может.
0
snov
11.12.2006, 23:14 8
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub MoveItems()
    Dim myOlApp As New Outlook.Application
    Dim myNameSpace As Outlook.NameSpace
    Dim myFolder As Outlook.MAPIFolder, myDestFolder As Outlook.MAPIFolder
    Dim myItem As Outlook.MailItem, myMovedItem As Outlook.MailItem
    
    Set myNameSpace = myOlApp.GetNamespace("MAPI")
    Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
    Set myDestFolder = myFolder.Folders("TEST")
    For Each myItem In myFolder.Items
        myItem.Move myDestFolder
        Debug.Print myItem.Subject
    Next
End Sub
Перемещение файлов делается так!

Кстати если ты объявляешь переменные то нужно указывать тип, т.е.
Visual Basic
1
Dim myFolder, myDestFolder As Outlook.MAPIFolder
эквивалентно
Visual Basic
1
Dim myFolder As Variant, myDestFolder As Outlook.MAPIFolder
Вместо типа Folder, используй MAPIFolder.
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 110
12.12.2006, 21:23  [ТС] 9
это не совсем то, что мне нужно, я тут почитал help и у меня получилось вот что: Это class module
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public WithEvents myOlApp As Outlook.Application
Public Sub Initialize_handler()
    Set myOlApp = Outlook.Application
End Sub
Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim prompt As String
    Dim myDestFolder, mySentBox As Outlook.Folder
    Dim myNameSpace As Outlook.NameSpace
    A = Trim(Mid(Item.To, InStr(1, Item.To, "@")))
    Set myNameSpace = myOlApp.GetNamespace("MAPI")
    Set mySentBox = myNameSpace.GetDefaultFolder(olFolderSentMail)
    Set myDestFolder = mySentBox.Folders("MyPrivateMail")
    If A = "@mail.ru" Then
        Item.Move myDestFolder
    End If
End Sub
и вызывается он собака только из обычного модуля например так:
Visual Basic
1
2
3
4
5
6
7
8
Dim myClass As New EventClassModule
Sub Register_Event_Handler()
    Set myClass.myOlApp = CreateObject("Outlook.Application")
    Set myItem = Outlook.CreateItem(olMailItem)
    myItem.To = "bla-bla-bla@mail.ru"
    myItem.Subject = "Тестовое сообщение"
    myItem.Send
End Sub
И все бы ничего, только мне надо автоматом, а не из кода-это раз, и два-это когда обрабатывается код в class module, то после перемещения письма Outlook письмо отправить не может т.к. нету его (переместилось уже).
Да и еще когда выполнение доходит до
Visual Basic
1
A = Trim(Mid(Item.To, InStr(1, Item.To, "@")))
Outlook 2 раза меня переспрашивает через диалоговое окно
0
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 110
27.02.2007, 12:52  [ТС] 10
Урра! нашел в Интернете решение:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Private Sub Application_ItemSend(ByVal Item As Object, _
    Cancel As Boolean)
  Dim objNS As NameSpace, objFolder As MAPIFolder
  Set objNS = Application.GetNamespace("MAPI")
  Set objFolder = objNS.PickFolder
  If TypeName(objFolder) <> "Nothing" And _
     IsInDefaultStore(objFolder) Then
      Set Item.SaveSentMessageFolder = objFolder
  End If
  Set objFolder = Nothing
  Set objNS = Nothing
End Sub
Public Function IsInDefaultStore(objOL As Object) As Boolean
  Dim objApp As Outlook.Application
  Dim objNS As Outlook.NameSpace
  Dim objInbox As Outlook.MAPIFolder
  On Error Resume Next
  Set objApp = CreateObject("Outlook.Application")
  Set objNS = objApp.GetNamespace("MAPI")
  Set objInbox = objNS.GetDefaultFolder(olFolderInbox)
  Select Case objOL.Class
    Case olFolder
      If objOL.StoreID = objInbox.StoreID Then
        IsInDefaultStore = True
      End If
    Case olAppointment, olContact, olDistributionList, _
         olJournal, olMail, olNote, olPost, olTask
      If objOL.Parent.StoreID = objInbox.StoreID Then
        IsInDefaultStore = True
      End If
    Case Else
      MsgBox "This function isn't designed to work " & _
             "with " & TypeName(objOL) & _
             " items and will return False.", _
             , "IsInDefaultStore"
  End Select
  Set objApp = Nothing
  Set objNS = Nothing
  Set objInbox = Nothing
End Function
Все супер, но вот одна небольшая проблемка: при отправке письма св-во PickFolder отображает все папки которые у вас есть, включая задачи, каледари и т.п.
Может кто-нибудь знает как в диалог бокс вытащить только отправленные например. ("отправленные" это родитель, в нем множество подкатологов, например по получателям)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2007, 12:52

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Считать из файла строку по определенным правилам
Привет всем! Сейчас пытаюсь разобраться с массивами структур ,пытаюсь считать из файла строку её по...

Распечатать числовую последовательность, которая задается по определенным правилам
Распечатать числовую последовательность, которая задается по следующим правилам: - первое число...

Экспорт содержимого листа Excel в текстовый файл по определенным правилам
Необходимо произвести экспорт содержимого определенных ячеек в текстовый файл с кодировкой DOS. В...

Дана вещественная матрица. Сформировать на ее базе вектор по определенным правилам
Дана вещественная матрица размерности n * m. Сформировать вектор b, в котором элементы вычисляются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.