首页 > 解决方案 > 保存电子邮件附件时出现 Outlook-VBA 运行时错误 '91

问题描述

我们使用共享的 Outlook 邮箱,我们需要保存该电子邮件中的一些附件。我需要宏来做:

这是我的代码,我以前从未在 Outlook 中写过任何东西,我已经结合了我找到的宏中的不同行。话虽如此,宏不起作用。我得到错误

“运行时错误 91:“对象变量或未设置块变量”在带有“***”的两行上

. 我dateFormat从宏中删除了,但SaveAs仍然在线得到运行时错误SaveAs

Sub saveAttachment()
    Dim objOL As Outlook.Application
    Dim objMsg As Outlook.MailItem
    Dim objAtt As Outlook.Attachment
    Dim objSel As Outlook.Selection
    Dim lngCount As Long
    Dim sFolder As String
    Dim dateFormat As String
        ***dateFormat = Format(objMsg.ReceivedTime, "yyyy-mm-dd")***
    Dim xlObj As Excel.Application
    Set xlObj = New Excel.Application
    ' Open the select folder prompt
    With xlObj.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then ' if OK is pressed
            sFolder = .SelectedItems(1)
        ElseIf .Show = 0 Then
            MsgBox "Failed to select folder to save attachements to"
        Exit Sub
        End If
    End With
    xlObj.Quit
    Set xlObj = Nothing
Set objOL = CreateObject("Outlook.Application")
Set objSelection = objOL.ActiveExplorer.Selection
For Each objMsg In objSelection
 Set objAttachments = objMsg.Attachments
    lngCount = objAttachments.Count
    If lngCount > 0 Then
    ***objAtt.SaveAsFile sFolder & "\" & objAtt.FileName & dateFormat***
Else
MsgBox "No attachements selected"
End If
Next
End Sub

我们正在使用 Office365,以防万一。任何帮助将不胜感激。

标签: vbaoutlook

解决方案


首先,您需要将该Format方法放在可以访问和实例化邮件项的循环中。然后您需要确保文件路径有效并且文件名中没有使用禁止符号。

Set objOL = CreateObject("Outlook.Application")
Set objSelection = objOL.ActiveExplorer.Selection
For Each objMsg In objSelection
    Set objAttachments = objMsg.Attachments
    lngCount = objAttachments.Count
    If lngCount > 0 Then
      dateFormat = Format(objMsg.ReceivedTime, "yyyy-mm-dd")
      objAtt.SaveAsFile sFolder & "\" & objAtt.FileName & dateFormat
    Else
      MsgBox "No attachements selected"
    End If
Next

您可能会发现Office 中的 VBA 入门文章很有帮助。


推荐阅读