Я пытаюсь сохранить вложение Outlook в локальном каталоге «Документы», но я получаю папку уже существует ошибка - PullRequest
3 голосов
/ 25 мая 2019

Я пытаюсь получить доступ к подпапке с именем «MacroEnabled» в папке «Входящие» и пытаюсь найти все вложения в ней и сохранить ее на локальном диске. Я могу использовать код для создания папки с именем «Документы», а также сохранить вложения. Тем не менее, он прерывается при выполнении второй итерации и говорит, что в файле уже существует ошибка «58».

Dim ns As NameSpace
Dim olFolder_Inbox As Folder
Dim olMail As MailItem
Dim olAttachment As Attachment
Dim FolderPath As String
Dim fso As Object
Dim File_Saved As String

'email service type
Set ns = GetNamespace("MAPI")
Set olFolder_Inbox = ns.GetDefaultFolder(olFolderInbox).Folders("MacroEnabled")

Set fso = CreateObject("Scripting.FileSystemObject")
FolderPath = "Documents"
For Each olMail In olFolder_Inbox.Items

    If TypeName(olMail) = "MailItem" And olMail.Attachments.Count > 0 Then
        fso.CreateFolder ("Documents")


        For Each olAttachment In olMail.Attachments

            olAttachment.SaveAsFile fso.BuildPath(FolderPath, olAttachment.FileName)

        Next olAttachment

    End If

Next olMail

Set ns = Nothing
Set fso = Nothing

End Sub

Я хочу, чтобы код просматривал все вложения в определенной папке.

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Прежде всего FolderPath должен представлять весь путь, например. FolderPath = "C:\Documents" Если вам нужно, вы можете использовать относительный путь, например FolderPath = CurrentProject.Path & "\Documents" Затем вы можете использовать метод FolderExisits в цикле, добавив следующую инструкцию:

If Not fso.FolderExists(FolderPath) Then fso.CreateFolder (FolderPath )
0 голосов
/ 25 мая 2019

For Each olMail In olFolder_Inbox.Items fso.CreateFolder ("Documents_path")

посмотрите на это и попробуйте проверить, существует ли папка Documents перед созданием другой

...