【发布时间】:2020-06-24 18:04:58
【问题描述】:
我正在尝试获取一个包含 .eml 邮件和附件的文件夹,然后将附件提取/重命名/保存到另一个文件夹中。我的代码:
Sub SaveAttachments()
Dim OlApp As Outlook.Application
Set OlApp = GetObject(, "Outlook.Application")
Dim MsgFilePath
Dim Eml As Outlook.MailItem
Dim att As Outlook.Attachments
Dim Path As String
Path = "C:\Users\richard\Desktop\Inbox\"
If OlApp Is Nothing Then
Err.Raise ERR_OUTLOOK_NOT_OPEN
End If
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Dim temp As Object
Set temp = fs.GetFolder(Path)
For Each MsgFilePath In temp.Files
Set Eml = OlApp.CreateItemFromTemplate(Path & MsgFilePath.Name)
Set att = Eml.Attachments
If att.Count > 0 Then
For i = 1 To att.Count
fn = "C:\Users\richard\Desktop\cmds\" & Eml.SenderEmailAddress
att(i).SaveAsFile fn
Next i
End If
Set Eml = Nothing
Next
Set OlApp = Nothing
End Sub
但是我在循环中的第一个文件上直接得到了这个错误,即行 设置 Eml = OlApp.CreateItemFromTemplate(Path & MsgFilePath.Name) :
-2147286960 (80030050) %1 already exists.
非常感谢您对正在发生的事情的任何想法!
【问题讨论】:
-
鸟瞰:既然你没有提到哪一行,那是
att(i).SaveAsFile fn这一行吗? -
此外,如果有多个来自同一发件人的电子邮件,那么您的代码将尝试覆盖文件...
"C:\Users\richard\Desktop\cmds\" & Eml.SenderEmailAddress -
感谢您的建议 - 我可以确认错误发生在 FIRST 循环中(因此尚未打开/创建其他文件),并且以防万一所有电子邮件的地址都不同。已更新问题以显示导致错误的行
-
片刻测试一下
-
整个错误消息是运行时错误“-2147286960 (80030050)”:无法打开文件:C:\Users\Mauro\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content。 ....该文件可能不存在,您可能没有打开它的权限,或者它可能在另一个程序中打开。右键单击包含该文件的文件夹,然后单击“属性”以检查您对该文件夹的权限。