在Outlook中运行宏以保存从共享收件箱到磁盘的附件

时间:2015-05-08 14:50:14

标签: vba outlook outlook-vba

我可以完全访问自己帐户中的两封共享电子邮件。我想在其中一个共享电子邮件收件箱上运行一个宏,将附件保存到硬盘驱动器。我不希望宏在收件箱中的所有项目上运行,而只是选择/突出显示的项目。我无法让下面的代码工作。我可以就如何使我的代码工作获得一些建议吗?

Public Sub saveAttachtoDisk ()

Dim objAtt As Outlook.Attachment
Dim dateFormat
    dateFormat = Format(Now, "yyyy-mm-dd H-mm")
Dim saveFolder As String
Dim itm As Outlook.MailItem

Dim objNS As Outlook.NameSpace
Set objNS = olApp.GetNamespace("MAPI")

Dim myRecipient As Outlook.Recipient
Set myRecipient = objNS.CreateRecipient("invoices@domain.com")
myRecipient.Resolve
Set inbox = objNS.GetSharedDefaultFolder(myRecipient, olFolderInbox)

saveFolder = "c:\temp\"

For Each itm In ActiveExplorer.Selection
    For Each objAtt In itm.Attachments        
        objAtt.SaveAsFile saveFolder & "\" & dateFormat & objAtt.DisplayName
        Set objAtt = Nothing 
    Next objAtt
Next itm
End Sub

2 个答案:

答案 0 :(得分:0)

代码看起来很好,我没有看到任何奇怪的东西。但很可能你需要纠正文件路径(删除双反斜杠):

objAtt.SaveAsFile saveFolder & dateFormat & objAtt.DisplayName

你在代码中得到任何错误吗?您是否尝试指定其他文件路径?

请注意,C:驱动器需要管理员权限才能在启用了UAC的系统上进行写入。

答案 1 :(得分:0)

Option Explicit    ' <-----

Public Sub saveAttachtoDisk()
...
End Sub
  

编译错误:
  变量未定义

未定义olApp:

Set objNS = olApp.GetNamespace("MAPI")

如果代码在Outlook中:

Set objNS = Application.GetNamespace("MAPI")

如果不在Outlook中:

Dim olApp As Outlook.Application

在新模块的顶部自动生成Option Explicit

在VB编辑器中。工具菜单|选项

选中“需要变量声明”