我可以完全访问自己帐户中的两封共享电子邮件。我想在其中一个共享电子邮件收件箱上运行一个宏,将附件保存到硬盘驱动器。我不希望宏在收件箱中的所有项目上运行,而只是选择/突出显示的项目。我无法让下面的代码工作。我可以就如何使我的代码工作获得一些建议吗?
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
答案 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编辑器中。工具菜单|选项
选中“需要变量声明”