我正在尝试将收件箱或子文件夹中电子邮件的附件保存到文件系统。
我正在尝试将按钮分配给 Outlook 默认 VBA 中的代码:Module1
变体 1 不允许我创建宏,因为我在子定义中有
MItem As Outlook.MailItem
。
Public Sub SaveAtt(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
' Set the folder where attachments will be saved
sSaveFolder = "C:\Temp\junk\Move" ' Change this path to your desired folder
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.FileName
Next oAttachment
End Sub
我删除了传递到子例程中的变量,但后来我得到:
未设置对象变量或 with 块。
目的是在收件箱中选择一个单独的邮箱项目,然后单击宏按钮。我不确定这是否可能。
我的下一个想法是将所有有趣的邮箱项目移动到收件箱的子文件夹中,并对该文件夹中的所有邮件运行一次例程(通过宏启动按钮)。
我发现了另一段代码,看起来也可以工作,但事实并非如此。
Public Sub SaveAtt()
Dim MItem As MailItem
Dim oAttachment As Attachment
Dim sSaveFolder As String
Dim oDefInbox As Folder
Dim targetFolder As Folder
Dim myItems As Outlook.Items
Dim Item As Object
Set oDefInbox = Session.GetDefaultFolder(olFolderInbox)
'Set targetFolder = Session.GetDefaultFolder(olFolderInbox).Parent.Folders("Inbox")
sSaveFolder = "C:\Temp\junk\Move"
For Each MItem In oDefInbox.Items
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Set oAttachment = Nothing
Next oAttachment
Next MItem
End Sub
在第一个代码片段中,您从未初始化
MItem
变量。如果您的目的是处理选定的项目而不是收件箱中的所有项目,请更改该行
For Each MItem In oDefInbox.Items
到
For Each MItem In Application.ActiveExplorer.Selection
此外,您的
sSaveFolder
变量必须包含尾随 "\"