-1

У меня есть 25 писем, в каждом из которых есть 25 вложений в формате PDF внутри одного письма - каскадное. Другими словами, одно электронное письмо содержит 25 почтовых отправлений Outlook, к которым прикреплено 1 PDF. Я нашел код для сохранения всех вложений, но когда я это сделаю, он сохранит их только как почтовый элемент Outlook. Мне нужно будет извлечь PDF-файлы из почтовых сообщений Outlook. Любой известный код VBA для этого ??? - Пожалуйста, имейте в виду, что я не могу установить программное обеспечение, которое требует разрешения администратора, потому что это рабочий компьютер. Так что, если бы вы обратились ко мне со сторонним программным обеспечением, я не смог бы установить их, если они не будут заархивированы или подключены к Windows Outlook, как код VBA или что-то в этом роде.

Пример изображения

Для получения дополнительной информации обратитесь к этому изображению

3 ответа3

1

После сохранения элемента Outlook вы можете открыть его с помощью OpenSharedItem

https://msdn.microsoft.com/EN-US/library/office/ff869733.aspx

затем сохраните вложение в формате PDF.

Если у вас уже есть код для сохранения почтовых элементов, то сразу после сохранения каждого почтового элемента вставьте OpenSharedItem, а также код для сохранения PDF.

Вот пример кода, демонстрирующий, как вернуть почту из Windows в Outlook с помощью OpenSharedItem. https://www.slipstick.com/developer/code-samples/move-messages-file-system-outlook/

Sub ImportMessagesInFolder()
    Dim fso As Scripting.FileSystemObject
    Dim SourceFolder As Scripting.Folder
    Dim SourceFolderName As String
    Dim FileItem As Scripting.File
    Dim strFile, strFileType As String
    Dim oMsg As Object
    Dim copiedMsg As MailItem
    Dim Savefolder As Outlook.Folder

    Set fso = New Scripting.FileSystemObject
'Source folder
    SourceFolderName = "C:\Users\drcp\Documents\Email\"
    Set SourceFolder = fso.GetFolder(SourceFolderName)

'Set the Outlook folder name
    ' Set Savefolder = Session.GetDefaultFolder(olFolderInbox).Folders("My Subfolder")
    Set Savefolder = Application.ActiveExplorer.CurrentFolder

    For Each FileItem In SourceFolder.Files

    Set oMsg = Session.OpenSharedItem(FileItem.Path)

    ' Do not bypass errors indiscriminately
    'On Error Resume Next

    Set copiedMsg = oMsg.Copy
    copiedMsg.Move Savefolder

    Set copiedMsg = Nothing
    oMsg.Delete
    Set oMsg = Nothing

    Next FileItem

    Set FileItem = Nothing
    Set SourceFolder = Nothing
    Set fso = Nothing

End Sub
0

Хорошо, я понял. Сначала вам нужно создать новую папку в вашем почтовом ящике. Затем скопируйте все элементы электронной почты в вашу новую папку (25 элементов электронной почты Outlook, которые содержат 25 PDF-файлов). А затем выделите все электронные письма и запустите скрипт ниже. Это позволит вам сохранить все из них.

Sub ImportMessagesInFolder()
Dim fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim SourceFolderName As String
Dim FileItem As Scripting.File
Dim strFile, strFileType As String
Dim oMsg As Object
Dim copiedMsg As MailItem
Dim Savefolder As Outlook.Folder

Set fso = New Scripting.FileSystemObject
'Source folder
SourceFolderName = "C:\Users\drcp\Documents\Email\"
Set SourceFolder = fso.GetFolder(SourceFolderName)

 'Set the Outlook folder name
' Set Savefolder = Session.GetDefaultFolder(olFolderInbox).Folders("My Subfolder")
Set Savefolder = Application.ActiveExplorer.CurrentFolder

For Each FileItem In SourceFolder.Files

Set oMsg = Session.OpenSharedItem(FileItem.Path)

' Do not bypass errors indiscriminately
'On Error Resume Next

Set copiedMsg = oMsg.Copy
copiedMsg.Move Savefolder

Set copiedMsg = Nothing
oMsg.Delete
Set oMsg = Nothing

Next FileItem

Set FileItem = Nothing
Set SourceFolder = Nothing
Set fso = Nothing

End Sub
0

Вы можете сделать это с помощью двух бесплатных утилит.

Сначала сохраните вложенные элементы Outlook. Просто создайте временную папку в Outlook (скажем, "Attached"), выберите эти 25 сообщений в Outlook и запустите упомянутый инструмент, используя контекстное меню, указав папку "Attached" в качестве целевой папки. Теперь у вас есть все вложенные электронные письма (с PDF-файлами) во временной папке "Attached".

Наконец, используйте утилиту Save Attachments , выберите папку "Attached" и укажите целевую папку на вашем диске. Это сохранит все PDF-файлы в указанной папке.

Обратите внимание, что я рекомендую эти инструменты, потому что я один из разработчиков, поэтому не стесняйтесь задавать любые дополнительные вопросы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .