powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка почты в Outlook между разными папками
1 сообщений из 1, страница 1 из 1
Сортировка почты в Outlook между разными папками
    #36685549
microdin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Помогите с такой проблемкой, пожалуйста.
Есть макрос, который в аутлуке смотрит на содержимое некой публичной папки (public folder) и затем по некоторым критериям двигает их из общей папки в подпапки.
Для отбора сообщений используют метод 'Restrict', отбирающий все сообщения с датой получения от указанной пользователем.

На практие выяснилось, что за один цикл (за одно применение метода Restrict) обрабатываются не все сообщения в общей папке. Пришлось добавить проверку, которая применяет Restrict перед окончанием макроса с теми же условиями, что и в самом начале и проверяет сколько сообщений было отобрано по Restrict. Если 0, то все ОК, если больше 0, то повторяю большую процедуру фильтарации и сортировки еще раз.

Однако вопрос остается - почему за один раз не обрабатываются все сообщения, отобранные по Restrict? Такое ощущение, что по каким-то причинам отдельные отобранные сообщения "ускальзывают" ...

Спасибо

Код: plaintext
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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
    
' create restrict filter
Period2Check = "[Received] >= """ & StartDate & """"

reTry:

' limit population to those items only that have been received within the indicated period
Set myRestrictItems = MyFl_MO.Items.Restrict(Period2Check)

' if Restrict returned any items than work with them
If Not myRestrictItems Is Nothing Then
    For Each myItem In myRestrictItems

        ' if this is an Email item
        If (myItem.Class = olMail) Then
            
            ' identify which quarter a message belongs to by looking at month value
            Select Case Month(myItem.ReceivedTime)
                Case Is <= 3
                    qq = "_Q1"
                
                Case Is <= 6
                    qq = "_Q2"
                
                Case Is <= 9
                    qq = "_Q3"
                
                Case Is <= 12
                    qq = "_Q4"
                    
            End Select
            
            ' constract part of folder name as "YYYY_Q#"
            qq = Year(myItem.ReceivedTime) & qq
            
            ' check what message type (MT) is received, which is indicated on the Subject field
            ' depending on MT constract full folder name as "PREFIX_YYYY_Q#"
                       
            If InStr(1, "544", myItem.Subject) <> 0 Then
                If InStr(1, "701533", myItem.Body) <> 0 Then
                    Set MyFl_b1 = MyFl_MO.Folders("TC_" & qq)
                    If Not MyFl_b1 Is Nothing Then
                        myItem.Move MyFl_b1
                        Set MyFl_b1 = Nothing
                        
                    Else
                        Set MyFl_b1 = Nothing
                        Set MyFl_b1 = MyFl_MO.Folders.Add("TC_" & qq)
                        myItem.Move MyFl_b1
                        Set MyFl_b1 = Nothing

                    End If

                Else

                    Set MyFl_b1 = MyFl_MO.Folders("Other_" & qq)
                    If Not MyFl_b1 Is Nothing Then
                        myItem.Move MyFl_b1
                        Set MyFl_b1 = Nothing
                        
                    Else
                        Set MyFl_b1 = Nothing
                        Set MyFl_b1 = MyFl_MO.Folders.Add("Other_" & qq)
                        myItem.Move MyFl_b1
                        Set MyFl_b1 = Nothing

                    End If
 
                End If

            Else
                    Set MyFl_b1 = MyFl_MO.Folders("Other_" & qq)
                    If Not MyFl_b1 Is Nothing Then
                        myItem.Move (MyFl_b1)
                        Set MyFl_b1 = Nothing
                        
                    Else
                        Set MyFl_b1 = Nothing
                        Set MyFl_b1 = MyFl_MO.Folders.Add("Other_" & qq)
                        myItem.Move (MyFl_b1)
                        Set MyFl_b1 = Nothing
                        
                    End If
                
            End If
            
        End If
    Next
End If

Set myRestrictItems = MyFl_MO.Items.Restrict(Period2Check)
' if Restrict returned any items them work with them
If Not myRestrictItems Is Nothing Then
    If myRestrictItems.Count > 0 then
        Goto reTry
    End If
End if
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка почты в Outlook между разными папками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]