powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Перемещение писем
5 сообщений из 5, страница 1 из 1
Перемещение писем
    #40018725
Guest1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Outlook 2010

Задача - перемещение писем из папки "Входящие" в папку "Personal".
Просьба помочь найти ошибку, - программа отрабатывает, но письма не перемещает.

Папки "Входящие" и "Personal" находятся на одном уровне.
Это первый этап задачи, на втором - будет добавлено условие.


!!! ВНИМАНИЕ модуль запускать только на тестовом почтовом ящике, так как во время отладки может быть удаление писем из папки Входящие без возможности восстановления.
Спасибо.

Private Function addOutlookFolderIfNotExists() As MAPIFolder
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim myNewFolder As Outlook.Folder
Set apOutlook = CreateObject("Outlook.Application")
apOutlook.Session.Logon

Set myNameSpace = apOutlook.GetNamespace("MAPI")
' Папка-источник
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox).Parent.Folders("Входящие")
' Папка-назначение
Set myNewFolder = myNameSpace.GetDefaultFolder(olFolderInbox).Parent.Folders("Personal")
If Not myNewFolder Is Nothing Then
MsgBox myNewFolder ' ПРОВЕРКА - программа определила папку Personal, как существующую
End If

For Each myItem In myFolder.Items
Set myItemNew = myItem.Copy
myItemNew.Move myNewFolder ' Команда не перемещает письма, письма остаются в папке Входящие
Next

End Function
...
Рейтинг: 0 / 0
Перемещение писем
    #40018737
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может не там ищите?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    Dim oMail As MailItem, myNameSpace As NameSpace, of, off, myNewFolder As Folder
    Set myNameSpace = Application.GetNamespace("MAPI")
    
    For Each of In myNameSpace.Folders
        Debug.Print of.Name
        If of.Name = "Personal" Then
            Set myNewFolder = of
            Exit For
        Else
            For Each off In of.Folders
                If off.Name = "Personal" Then
                    Set myNewFolder = off
                    Exit For
                End If
            Next
        End If
    Next
    If myNewFolder Is Nothing Then
        Exit Sub
    End If
    Set oMail = ActiveExplorer.Selection.Item(1)
    oMail.Move myNewFolder


код переносит выделенное в текущий момент письмо. Подстроить под Ваш код уже не должно составить труда.
...
Рейтинг: 0 / 0
Перемещение писем
    #40018829
Guest1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,
Спасибо, модуль проверила, он работает без ошибок.

Но, из папки "Входящие" письмо ушло, а в папку "Personal" не пришло (то есть произошло не перемещение, а удаление письма).

Проверила, в условие ниже не попадает, то есть папка "Personal" обнаружена программой
If myNewFolder Is Nothing Then
Exit Sub
End If
Понимаю, что причина неправильной работы на моей стороне, но не понимаю, в чём она.

Просьба помочь.

Спасибо.
...
Рейтинг: 0 / 0
Перемещение писем
    #40018976
Guest1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,
спасибо большое, разбираюсь с причиной, она в настройках почты на моём ПК
...
Рейтинг: 0 / 0
Перемещение писем
    #40018993
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest1,

такое может быть на серверном Outlook. Письма не сразу отображаются в новой папке, а с некоторой задержкой. Попробуйте переместить пару писем и выждать какое-то время, а потом проверить, появились ли они в новой папке.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Перемещение писем
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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