我们使用一个共享的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,以防有所作为。任何帮助将不胜感激。
首先,您需要将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文章很有帮助。