保存电子邮件附件时,Outlook-VBA运行时错误'91

问题描述 投票:0回答:1

我们使用一个共享的Outlook电子邮件框,我们需要从该电子邮件中保存一些附件。我需要执行宏:

  • 允许用户选择多封电子邮件并将所有附件保存在选择中
  • 允许用户选择要在其中保存附件的文件夹(每次都会不同)
  • ReceivedTime添加到文件名中,因为我们收到了一些具有相同名称的电子邮件附件,但它们总是在不同的日期收到
  • 不想以任何方式更改原始电子邮件(不要删除附件或在电子邮件中添加注释)

这是我的代码,我以前从未在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,以防有所作为。任何帮助将不胜感激。

vba directory outlook runtime-error email-attachments
1个回答
0
投票

首先,您需要将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

您可能会发现Getting started with VBA in Office文章很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.