Сценарий Outlook VBA автоматически сохраняет вложение, используя информацию в теле письма для присвоения имени файлу

Нужен скрипт VBA для автосохранения вложений, но нужно использовать информацию в теле письма, чтобы назвать сохраненный файл. Пример электронной почты:

Информация о доставке:

Сообщение №: 246439839

Местный номер: 2395945852 Удаленный CSID: 2399318665 Удаленный CID: 2392780330 Всего страниц: 1

Время приема: 08.06.2016 7:09:50 Время передачи по тихоокеанскому времени: 32 000 с

имя файла будет следующим: NM-246439839-LN-2395945852-CSID-2399318665-CID-2392780330.pdf

Файлы всегда в формате PDF

Локальный номер, удаленный CSID и удаленный CID не всегда заполняются (поэтому мне нужно, чтобы все они могли использовать любой из них для фильтрации).

Сообщение # должно быть частью имени файла, чтобы обеспечить уникальное имя для каждого файла.

Электронная почта имеет формат HTML и всегда одинакова, поэтому можно использовать теги, я могу опубликовать HTML, если это необходимо.

Я уже создал сценарии, которые контролируют папку, а затем сортируют/перемещают файлы в соответствующие места на основе имени файла. Электронные письма приходят от нашего нового провайдера факсов, и они не могут добавлять их в строку темы, как в нашей предыдущей системе.

В настоящее время используется:

Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
    saveFolder = "c:\Data\Fax"
    For Each objAtt In itm.Attachments
        objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName
        Set objAtt = Nothing
    Next
End Sub

Спасибо за любую помощь.


person MarkFillmore    schedule 09.10.2018    source источник


Ответы (1)


Просто укажите образец кода, вы можете обновить его по мере необходимости:

Public p As String 'File Save location, also unzip the file storage location
Public Sub SaveAttach(Item As Outlook.MailItem)
    p = "C:\Users\Administrator.TXV6HLXTU3ZW8KD\Desktop\"
    SaveAttachment Item, p, "*.rar"  'Here *.rar can be changed to other regular expressions
    ' MsgBox "File saved."
End Sub

' save file
' path is the save path, condition is the attachment name match condition
Private Sub SaveAttachment(ByVal Item As Object, path$, Optional condition$ = "*")
    Dim olAtt As Attachment
    Dim i As Integer
    Dim m As Long
    Dim s As String
    If Item.Attachments.Count > 0 Then
        For i = 1 To Item.Attachments.Count
            Set olAtt = Item.Attachments(i)
            If olAtt.FileName Like condition Then
                olAtt.SaveAsFile path & olAtt.FileName
        'The following section is to extract the rar file, p is the save location
                s = "C:\Program Files\WinRAR\WinRAR.exe" & " X " & path & olAtt.FileName & " " & p 'Note Find the Decompression software location
                m = Shell(s, vbHide)
            End If
        Next
    End If
    Set olAtt = Nothing
End Sub

Затем в Outlook создать новое правило, выбрать действие для выполнения сценария, выбрать сценарий для этого метода, вы можете получить сообщение, автоматически сохранять вложения и извлекать на рабочий стол.

person Simon Li    schedule 10.10.2018
comment
Мне нужно назвать файл (файл в формате pdf) с номерами, указанными в теле письма. Числа после CSID: и CID: - person MarkFillmore; 11.10.2018