powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
15 сообщений из 15, страница 1 из 1
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37643232
qwerg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Вот задача "MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook." Под "определенным вложением" здесь имеется ввиду файл, у которого имя начинается на "fgh" и имеется расширение "mdg". Процедуру перемещения искомого написать смогу, да и на форуме примеров полно. А вот как найти...?
______________

С Уважением. Qwerg.
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37643459
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: qwerg
> А вот как найти...?

Если написать сможешь, тогда простой перебор сообщений в папке и анализ имени вложения тебе помогут :)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37643508
qwerg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос> Автор: qwerg
> А вот как найти...?

Если написать сможешь, тогда простой перебор сообщений в папке и анализ имени вложения тебе помогут :)


Алгоритм я понимаю, мне бы кусочек кода по примеру.
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37644534
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: qwerg
> Алгоритм я понимаю, мне бы кусочек кода по примеру.

Тут я тебе не помошник, поищи сам пример кода, например вот

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37644796
вот пример как перебирать письма
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Sub getattachments()
Dim mail As MailItem
Set myNamespace = Application.GetNamespace("MAPI")
Set myfolder = myNamespace.GetDefaultFolder(olFolderInbox)
For Each mail In myfolder.Items
    MsgBox mail.Subject
Next
End Sub


разбирайся со свойством attachments
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37644816
решил полностью написать

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub getattachments()
Dim mail As MailItem
Dim mailat As Attachment
Set myNamespace = Application.GetNamespace("MAPI")
Set myfolder = myNamespace.GetDefaultFolder(olFolderInbox)
For Each mail In myfolder.Items
    If mail.Attachments.Count > 0 Then
        For Each mailat In mail.Attachments
            If Right(mailat.FileName, 3) = "mdg" And Left(mailat.FileName, 3) = "fgh" Then
                MsgBox "Мы нашли его!" 'тут пиши функцию, которая переместит вложение
        Next
    End If
Next
End Sub
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37645096
qwerg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Всем!
когда то был отцом + 1 в карму! ;)
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37645118
qwerg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал вот как.
Код: vbnet
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.
Sub InboxItemsMove (Item As Outlook.MailItem)
     Dim objNS As NameSpace
     Dim objInbox As MAPIFolder
     Dim objToFolder As MAPIFolder
     If objInbox.Items.Count > 0 Then
    For i = 1 To objInbox.Items.Count
        If objInbox.Items(i).Attachments.Count > 0 Then
             For j = 1 To objInbox.Items(i).Attachments.Count
                    If Right(objInbox.Items(i).Attachments.Item(j).DisplayName, 4) = ".arj" And Left(objInbox.Items(i).Attachments.Item(j).DisplayName, 3) = "160" Then
                        'On Error Resume Next
             Set objNS = Application.GetNamespace("MAPI")
             Set objInbox = objNS.GetDefaultFolder(olFolderInbox)
             Set objToFolder = objInbox.Folders("test")
             If Not objToFolder Is Nothing Then
                 Item.Move objToFolder
             End If
          End If
         Next j
      End If
    Next i
 End If
     Set objTestFolder = Nothing
     Set objInbox = Nothing
     Set objNS = Nothing
 End Sub


Ни ошибок, ни отработки скрипта. Писъма в папке Входящие присутсвуют.
Что не так в скрипте?
Выполнения вешаю на правило.
Само правило отрабатывает.
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37645457
у тебя много лишнего кода написано, вот вариант с перемещением письма - работает отлично, тестировал у себя
попробуй, будет ли запускаться по правилу, если нет, надо будет обработчик события получения письма писать

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub getattachments()
Dim mail As MailItem
Dim mailat As Attachment

Set myNamespace = Application.GetNamespace("MAPI")
Set objInbox = myNamespace.GetDefaultFolder(olFolderInbox)
Set objToFolder = objInbox.Folders("test")

For Each mail In objInbox.Items
    If mail.Attachments.Count > 0 Then
        For Each mailat In mail.Attachments
            If Right(mailat.FileName, 3) = "txt" And Left(mailat.FileName, 3) = "fgh" Then
                If Not objToFolder Is Nothing Then
                    mail.Move objToFolder
                End If
            End If
        Next
    End If
Next

End Sub
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37645565
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: qwerg
> Написал вот как.

Ух и понаписал :)
Код: vbnet
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.
Sub InboxItemsMove1(Item As Outlook.MailItem)
' Заготавливаем переменые для циклов
Dim mi As MailItem
Dim a As Attachment

Dim objNS As NameSpace
Dim objInbox As MAPIFolder
Dim objToFolder As MAPIFolder
' Получаем папку КУДА перемещать сразу и потом только используем её
Set objNS = Application.GetNamespace("MAPI")
Set objInbox = objNS.GetDefaultFolder(olFolderInbox)
Set objToFolder = objInbox.Folders("test")
' Проверяем, если есть папка-получатель, работаем
If Not objToFolder Is Nothing Then
' БегЁм по всем Итемам почты во входящей папке
    For Each mi In objInbox.Items
    ' Смотрим в Output'e темы сообщений, если интересно :)
        Debug.Print mi.Subject
    ' Здесь бегЁм по всем вложениям текущего почтового Итема
        For Each a In mi.Attachments
        ' Проверяем расширение и первые три символа имени вложения
            If Right(a.DisplayName, 4) = ".arj" And Left(a.DisplayName, 3) = "160" Then
                'On Error Resume Next
                ' И если мы прошли этот квест, тогда копируем сообщение с вложением в папку-получатель
                a.Copy objToFolder
            End If ' If Right(a.DisplayName, 4) = ".arj" And Left(a.DisplayName, 3) = "160" Then
        Next a ' For Each a In mi.Attachments
    Next mi ' For Each mi In objInbox.Items
End If ' If Not objToFolder Is Nothing Then

Set objToFolder = Nothing
Set objInbox = Nothing
Set objNS = Nothing
Set a = Nothing
Set mi = Nothing
End Sub



Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37645749
qwerg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
когда то был отцом,
Спасибо, но сечас правило немного дольше отрабатывает, но результата так и нет. Создаю правило "при получении от %имя_отправителя%" выполнят макрос. Применяю правило на уже полученные письма, для теста - и ничего.
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37646224
у меня 2010 аутлук... я не работал в аутлуке уже давно :)... даже не нашел, где эти правила настраиваются - там где написаны они должны быть на ленте, их нет... вынес на ленту, иконки почему-то не активные... попробуй вариант с обработчиком события получения письма:
Код: vbnet
1.
2.
3.
Private Sub Application_NewMail()
    Call getattachments
End Sub


добавь его в thisoutlooksession, как у меня на картинке
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37646226
картинка
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37649630
qwerg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
когда то был отцом,
в очередной раз спасибо. Весь код сюда и вставлял, в ThisOutlookSession. При запуске ругается на несоответсвие типов на последнем нексте.
...
Рейтинг: 0 / 0
MS Outlook. Найти письмо с определенным вложением и переместить его в папку MS Outlook.
    #37651120
qwerg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
когда то был отцом,
Все, заработало. Видимо во входящих есть письмо, которое каким то образом при операции перемещении ( отследил по брейкпоинтам) дает результат с несоответсвием типов. Т.к. убрал весь спам, оставил только деловую переписку - все замечательно работает, как Вы и говорили) ещё раз спасибо за помощь! Тему можно закрывать!



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


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