powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сохранение вложений писем Outlook в другую папку Outlook ( не на жестком диске)
3 сообщений из 3, страница 1 из 1
Сохранение вложений писем Outlook в другую папку Outlook ( не на жестком диске)
    #38891205
trexmernii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброй ночи!

Собственно приходят письма outlook в которые вложены письма outlook. Вложенные письма Пользователю необходимо просмотреть/проверить и отправить. Если открывать эти письма из самого письма то кнопка для отправки неактивна. Пользователь вынужден сохранить эти письма в другой папке outlook (например Черновики) и затем отправлять. Собственно нужен макрос который перемещал бы вложения текущего письма в папку Черновики.

На просторах нашел код, который сохраняет эти письма на локальном диске. Необходимо его как-то переделать, что бы осуществить задуманное.
Вариант сохранять на локальном диске и оттуда пользователю отправлять письма не предлагать.
Заранее спасибо!
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 Sub SaveAtt()
    Dim oMail As MailItem
    Set oMail = Outlook.Application.ActiveExplorer.Selection(1)
 
    Dim att As Attachment
    For Each att In oMail.Attachments
                
        With att
            .SaveAsFile "c:\1\" & .FileName
           'ниже задокументирована строка коротая могла бы сработать, но не работает
           ' .Item.Move Application.Session.GetDefaultFolder(olFolderInbox).Parent.Folders("Черновики")
        End With
        
    Next
    Set oMail = Nothing
End Sub
...
Рейтинг: 0 / 0
Сохранение вложений писем Outlook в другую папку Outlook ( не на жестком диске)
    #38891535
trexmernii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже, что все равно необходимо выгружать в папку на диске. поэтому написал пока такой код.
Есть другие предложения?

Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Sub SaveAtt()
    Dim oMail As Outlook.MailItem, oMail_temp As Outlook.MailItem
    Dim strTempFilePath As String
    Dim att As Attachment
    Dim k As Integer, res As Integer

    On Error GoTo ErrHandler
    'выбираем текущее открытый элемент
    Set oMail = Outlook.Application.ActiveExplorer.Selection(1)
    'проверяем, что в сообщении имеются вложения
    If oMail.Attachments.Count = 0 Then MsgBox ("В данном письме отсутствуют вложения!"): Exit Sub
    'перебираем элементы вложений
    For Each att In oMail.Attachments
        'проверяем, что вложение формата msg
        k = InStrRev(att.FileName, ".")
        If (Mid(att.FileName, k + 1, Len(att.FileName) - k)) = "msg" Then
            'если это наш вариант то работаем с ним
            'запросим у пользователя нужно ли открывать письма после перемещения
            If res = 0 Then res = MsgBox("Показать вложенные письма?", 4, "Открытие вложений")
            'извлекаем его в папку Temp пользователя (C:\Users\user\AppData\Local\Temp)
            strTempFilePath = Environ("TEMP") & "\" & att.FileName
            'сохраняем файл
            att.SaveAsFile strTempFilePath
            'указываем этот элемент для работы с ним в качестве сообщения
            Set oMail_temp = Outlook.Application.CreateItemFromTemplate(strTempFilePath)
            'перемещаем его в папку Черновики почты Outlook
            oMail_temp.Move Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Parent.Folders("Черновики")
            If res = 6 Then oMail_temp.Display
            Set oMail_temp = Nothing
            'удаляем сообщения из папки Temp
            Kill strTempFilePath
        End If
    Next
    Set oMail = Nothing

  
Exit Sub
'обработчик ошибок
ErrHandler:
Select Case Err.Number
    Case 440
        MsgBox "Не выбрано почтовое сообщение!"
    Case Else
        MsgBox "Произошла ошибка " & Err.Number & vbNewLine & _
                Err.Description, vbInformation
End Select

End Sub
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сохранение вложений писем Outlook в другую папку Outlook ( не на жестком диске)
    #39273224
Sasha87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

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

Вариант ниже не работает.

Спасибо за ответ.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  Sub ForwardEmailProcessing(MyMail As MailItem)
    On Error GoTo EndSub

    Dim objMail As Outlook.MailItem
    Set objMail = Application.Session.GetItemFromID(MyMail.EntryID)

    Dim inboxFolder As MAPIFolder
    Set inboxFolder = Application.Session.GetDefaultFolder(olFolderInbox)
    
    Dim oAttach As Outlook.MailItem
    Set oAttach = objMail.Attachments.Item(0)
    
    Dim copyAttachMail As Outlook.MailItem
    Set copyAttachMail = oAttach.Copy
    copyAttachMail.Move inboxFolder
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сохранение вложений писем Outlook в другую папку Outlook ( не на жестком диске)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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