我在Outlook中创建了一个名为“Reports”的文件夹。此文件夹包含每封电子邮件中包含一个附件的电子邮件我想使用ACCESS VBA将附件从Outlook中的“Reports”文件夹保存到我的计算机中的本地驱动器。这是我到目前为止的代码,但给了我错误。请帮忙:
Sub GetAttachments()
Dim ns As NameSpace
Dim Inbox As Outlook.MAPIFolder
Dim folder As Outlook.MAPIFolder
Dim Item As Object
Dim Atmt As Attachment
Dim FileName As String
Dim i As Integer
Set ns = GetNamespace("MAPI")
Set Inbox = ns.Folders.Item("Reports") // I get an error in this line says an object could not be found
i = 0
If Inbox.Items.Count = 0 Then
MsgBox "There are no messages in the Inbox.", vbInformation, _
"Nothing Found"
Exit Sub
End If
For Each Item In Inbox.Items
For Each Atmt In Item.Attachments
FileName = "C:\Automation\" & Atmt.FileName
Atmt.SaveAsFile FileName // here is another error says method is not found
i = i + 1
Next Atmt
Next Item
答案 0 :(得分:2)
您的“报告”文件夹是否位于“收件箱”文件夹中?您可能需要执行以下操作:
Set ns = GetNamespace("MAPI")
Set Inbox = ns.GetDefaultFolder(olFolderInbox)
Set RptFolder = Inbox.Folders("Reports")
保存附件的语法看起来是正确的(除了您的评论对VBA不正确)。您可以打印出要创建的文件名,以查看它是否是有效名称。我假设您已经创建了自己提到的Automation文件夹。
<强>更新强> 尝试将Atmt声明为Outlook.Attachment。有一个Access.Attachment这样的东西没有SaveAsFile方法,它可能首先选择那个。如果您包含库名称,则应该获得所需的名称。
更新2: 要访问“报告”文件夹,一种方法是获取当前正在执行的收件箱文件夹,然后获取其父级,然后获取其下的“报告”文件夹。
Set ns = GetNamespace("MAPI")
Set Inbox = ns.GetDefaultFolder(olFolderInbox)
Set Mailbox = Inbox.Parent
Set RptFolder = Mailbox.Folders("Reports")
另一种方法是扫描“ns”下的项目以找到以“Mailbox”开头的项目,然后获取其下的Reports文件夹。它似乎比获取收件箱的父亲更麻烦。这看起来也很麻烦,但我找不到直接进入Mailbox文件夹的方法。
答案 1 :(得分:1)
替换
For Each Item In Inbox.Items
For Each Atmt In Item.Attachments
FileName = "C:\Automation\" & Atmt.FileName
Atmt.SaveAsFile FileName // here is another error says method is not found
i = i + 1
Next Atmt
使用.....
For Each Item In Inbox.Items
For Each Atmt In Item.Attachments
FileName = "C:\Automation\" & Atmt.FileName
Attachments.SaveAsFile FileName // here is another error says method is not found
i = i + 1
Next Atmt
Outlook在引用中的atmt没有问题,但是MS Access可以。这应该可以解决你的问题。
戴维斯罗杰斯答案 2 :(得分:0)
替换
Dim Atmt As Attachment
带
Dim Atmt As Outlook.Attachment
它将使Access为atmt找到正确的Class。