使用Access VBA从outlook获取附件
问题描述:
我的Outlook中有一个名为“Reports”的已创建文件夹。此文件夹包含每封电子邮件中包含附件的电子邮件。我想使用ACCESS VBA将附件从Outlook中的“Reports”文件夹保存到我的计算机中的本地驱动器中。这里是我到目前为止的代码,但给我错误。请帮助:使用Access VBA从outlook获取附件
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
答
您的报告文件夹是否位于收件箱文件夹内?你可能需要做这样的事情:
Set ns = GetNamespace("MAPI")
Set Inbox = ns.GetDefaultFolder(olFolderInbox)
Set RptFolder = Inbox.Folders("Reports")
您的保存附件语法看起来是正确的(除了不是正确的VBA您的意见)。您可以打印出您正在创建的文件名,以查看它是否是有效的名称。我假设你已经创建了你提到的自动化文件夹。
更新: 尝试将您的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”查找以“邮箱”启动一个,然后拿到报表文件夹下的那个。看起来比获取收件箱的父母更麻烦一些。这似乎也很麻烦,但我找不到直接进入邮箱文件夹的方法。
答
更换
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不会。这应该可以解决你的问题。
戴维斯罗杰斯
托德您好,感谢您的回答。实际上,“报告”文件夹不在我的收件箱文件夹中。它直接在邮箱下。 – guest1 2011-03-17 14:13:11
为了保存附件,当我写atmt。 “SaveAsFile”属性不会从列表中显示。我需要添加任何具体的参考吗?谢谢, – guest1 2011-03-17 14:24:48
我会明天研究它并为你找到解决方案。你可以尝试做的一件事是在ns.Folders.Items中列出值,看看你实际工作的是什么。至于附件SaveAsFile,我假设你已经添加了Outlook引用已经得到了这一点。我会在对象浏览器中查看它是否应该在那里,并检查您是否获得了所需的正确的Attachment对象类型。我在这台机器上没有Office,否则我会更具体。你使用的是哪个版本的Office? – Todd 2011-03-18 03:09:42