vba - 展望 VBA "The attempted operation failed"

标签 vba outlook

我已按照 http://www.rondebruin.nl/win/s1/outlook/saveatt.htm 中的说明进行操作将特定文件夹中电子邮件的附件保存到另一个文件夹。当我运行此代码时,出现错误:

An unexpected error has occurred.

Please note and report the following information.

Macro Name: SaveEmailAttachmentsToFolder

Error Number: -2147221233

Error Description: The attempted operation failed. An object could not be found.

刚接触宏,所以不知道错误可能出在哪里。有什么建议吗?

代码如下:

Sub Test()

    SaveEmailAttachmentsToFolder "MyFolder", "xls", ""

End Sub

Sub SaveEmailAttachmentsToFolder(OutlookFolderInInbox As String, _
                                 ExtString As String, DestFolder As String)
    Dim ns As Namespace
    Dim Inbox As MAPIFolder
    Dim SubFolder As MAPIFolder
    Dim Item As Object
    Dim Atmt As Attachment
    Dim FileName As String
    Dim MyDocPath As String
    Dim I As Integer
    Dim wsh As Object
    Dim fs As Object

    On Error GoTo ThisMacro_err

    Set ns = GetNamespace("MAPI")
    Set Inbox = ns.GetDefaultFolder(olFolderInbox)
    Set SubFolder = Inbox.Folders(OutlookFolderInInbox)

    I = 0
    ' Check subfolder for messages and exit of none found
    If SubFolder.Items.Count = 0 Then
        MsgBox "There are no messages in this folder : " & OutlookFolderInInbox, _
               vbInformation, "Nothing Found"
        Set SubFolder = Nothing
        Set Inbox = Nothing
        Set ns = Nothing
        Exit Sub
    End If

    'Create DestFolder if DestFolder = ""
    If DestFolder = "" Then
        Set wsh = CreateObject("WScript.Shell")
        Set fs = CreateObject("Scripting.FileSystemObject")
        MyDocPath = wsh.SpecialFolders.Item("mydocuments")
        DestFolder = MyDocPath & "\" & Format(Now, "dd-mmm-yyyy hh-mm-ss")
        If Not fs.FolderExists(DestFolder) Then
            fs.CreateFolder DestFolder
        End If
    End If

    If Right(DestFolder, 1) <> "\" Then
        DestFolder = DestFolder & "\"
    End If

    ' Check each message for attachments and extensions
    For Each Item In SubFolder.Items
        For Each Atmt In Item.Attachments
            If LCase(Right(Atmt.FileName, Len(ExtString))) = LCase(ExtString) Then
                FileName = DestFolder & Item.SenderName & " " & Atmt.FileName
                Atmt.SaveAsFile FileName
                I = I + 1
            End If
        Next Atmt
    Next Item

    ' Show this message when Finished
    If I > 0 Then
        MsgBox "You can find the files here : " _
             & DestFolder, vbInformation, "Finished!"
    Else
        MsgBox "No attached files in your mail.", vbInformation, "Finished!"
    End If

    ' Clear memory
ThisMacro_exit:
    Set SubFolder = Nothing
    Set Inbox = Nothing
    Set ns = Nothing
    Set fs = Nothing
    Set wsh = Nothing
    Exit Sub

    ' Error information
ThisMacro_err:
    MsgBox "An unexpected error has occurred." _
         & vbCrLf & "Please note and report the following information." _
         & vbCrLf & "Macro Name: SaveEmailAttachmentsToFolder" _
         & vbCrLf & "Error Number: " & Err.Number _
         & vbCrLf & "Error Description: " & Err.Description _
         , vbCritical, "Error!"
    Resume ThisMacro_exit

End Sub

最佳答案

社区维基。答案在评论里。任何在搜索中找到此主题的人都会看到有答案,并且更有可能寻找有用的答案。

“问题是我指定的文件夹实际上并不是在收件箱中创建的,它与收件箱处于同一级别,因此找不到该文件夹​​。简单的事情...”chinvpl

关于vba - 展望 VBA "The attempted operation failed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20500007/

相关文章:

database - 在登录时在 MS Access 中设置用户权限

c++ - 使用 Qt 在 MS Word 中添加新页面

vba - 在将电子邮件发送到 Outlook 中的外部域之前发出警告

vba - 如何捕获错误 “File not loaded completely”

Excel文件对话框多次出现

excel - 根据单元格值复制行并粘贴到具有相同单元格值名称的新工作表上

php - 预期响应代码 250 但得到代码 "",消息 ""

C# - 邮件确认 Outlook

vba - 通过正则表达式对传入进行分类引起 : Application_NewMail : Byte Val Mismatch

html - Outlook 的电子邮件模板 - 填充/距离的技巧是什么?