vba - 使用 VBA 向 Outlook 邮件添加附件失败并出现错误 80070005(权限不足),但前提是邮件还没有附件
问题描述
我正在使用 Word 2013 邮件合并创建一堆电子邮件(不确定英文术语;我正在使用德文版本)。Outlook 设置为离线模式,以便我可以在发送前修改邮件。到目前为止,一切正常。
我想为每封电子邮件添加附件,并尝试编写一些 Outlook VBA 脚本来执行此操作。以下代码在.Attachment.Add...
语句中失败,代码为 80070005(权限不足),但前提是邮件还没有附件。如果有附件,它会将附件添加到这封邮件和下一封邮件,然后再次失败并显示 80070005。我重复运行脚本,每次运行时它都会将附件添加到另外一封邮件。
什么可能导致 80070005?
Sub addAttachmentsToMailsInOutbox()
Dim olNs As Outlook.NameSpace
Dim olOutbox As Outlook.MAPIFolder
Dim olItem As Object
Dim olEmail As Outlook.MailItem
Set olNs = GetNamespace("MAPI")
Set olOutbox = olNs.GetDefaultFolder(olFolderOutbox)
For Each olItem In olOutbox.Items
If olItem.Class = olMail Then
Set olEmail = olItem
With olEmail
.Attachments.Add ("d:\temp\test.txt")
.Save
End With
End If
Next
MsgBox ("done")
End Sub
请注意,这是最小的工作 - 失败 - 示例。我尝试了在互联网上找到的其他代码,但都显示出奇怪的行为。
解决方案
@HackSlash 的建议也不起作用,但它引发了另一个想法:将修改分成两个循环,瞧,这行得通:
Sub addAttachmentsToMailsInOutbox()
Dim olNs As Outlook.NameSpace
Dim olOutbox As Outlook.MAPIFolder
Dim olItem As Object
Set olNs = GetNamespace("MAPI")
Set olOutbox = olNs.GetDefaultFolder(olFolderOutbox)
For Each olItem In olOutbox.Items
If olItem.Class = olMail Then
With olItem
.BodyFormat = olFormatHTML
.Save
End With
End If
Next
For Each olItem In olOutbox.Items
If olItem.Class = olMail Then
With olItem
.Attachments.Add ("d:\temp\test.txt")
.Save
End With
End If
Next
MsgBox ("done")
End Sub
如果需要附加多个文件,只需.Attachments.Add(....)
为每个文件重复该行。
推荐阅读
- python - 如何硬重新安装 PyCharm 和 Python?
- node.js - Next.js 中为什么没有通过 getServerSideProps 将 cookie 发送到服务器?
- python - 在数据类表示中传递参数
- javascript - 为什么 TypeError:由于传递 GeolocationPosition 时属性中的非法值而失败
- reactjs - 反应: (??) 速记不适用于 JSX 条件检查?
- javascript - SQL 中的“包含”和“不包含”方法或使用 Java 脚本 UDF
- c - fscanf 在输入的最后一行失败(仅负值?)
- xamarin - 如何在 Xamarin 中更新购物车
- python - 在 python 中创建序列时查找 range() 中的最后一个元素
- python - 我需要解一个二次方程