vba - 保存电子邮件附件时出现 Outlook-VBA 运行时错误 '91
问题描述
我们使用共享的 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
您可能会发现Office 中的 VBA 入门文章很有帮助。
推荐阅读
- r - 使用 R Markdown for 循环合并邮件
- java - Eclipse:我可以按类启用 Content Assist“插入最佳猜测参数”吗?
- python - 在大熊猫中返回 0 的 DateTime 的变化
- c# - 我可以使用 java(type)script 异步实现 c# 任务吗?
- azure - 从标头中删除 Ocp-Apim-Trace-Location
- c - 如果未检查函数返回值,如何强制编译错误?
- selenium - Selenoid-ui 仪表板不显示旧会话数据
- ios - kotlin-native freeze() 方法在冻结函数时崩溃
- c# - 表单身份验证失败并显示“请求的表单身份验证失败”。随机的
- mapreduce - Apache Gora Reducer 用于 Hbase 的多表输出