【发布时间】:2025-03-22 18:40:02
【问题描述】:
每天从 abc@xyz.com 收到一封电子邮件,主题为“电子邮件”,附件为电子邮件(最多 20 个附件,每个 15kb)。
我正在尝试将这些附件移动到我的 Outlook 收件箱中名为“Extra”的子文件夹中。
我在修改旧代码时遇到问题。我想它来自这里。 Const attPath As String = "Mailbox/Extra".
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub Items_ItemAdd(ByVal item As Object)
On Error GoTo ErrorHandler
'Only act if it's a MailItem
Dim Msg As Outlook.MailItem
If TypeName(item) = "MailItem" Then
Set Msg = item
'From specified user with specified subject
If (Msg.SenderName = "teresa") And _
(Msg.Subject = "emails") And _
(Msg.Attachments.Count >= 1) Then
'Set folder to save in.
Dim olDestFldr As Outlook.MAPIFolder
Dim myAttachments As Outlook.Attachments
Dim Att As String
'location to save in.
Const attPath As String = "Mailbox/Extra"
' save attachment
Set myAttachments = item.Attachments
Att = myAttachments.item(1).DisplayName
myAttachments.item(1).SaveAsFile attPath & Att
' mark as read
Msg.UnRead = False
End If
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
【问题讨论】:
-
所以你不是发邮件的,是你收的?你能分享你目前的代码吗?
-
看看这个例子。 *.com/a/29910853/4539709
-
我是收到电子邮件的人。上面链接中的代码看起来比我的要干净得多,但它只会将电子邮件从一个文件夹移动到另一个文件夹,我已经可以这样做了,但是它提取了我遇到问题的电子邮件中的附件。
-
现在有点困惑,想把附件移到哪里?本地文件夹?或新电子邮件?您也可以在问题结束之前发布您当前的代码
-
我每天收到一次的电子邮件有附件,但那些是电子邮件。我只是想提取电子邮件,而不是单击所有电子邮件并将它们拖到我收件箱中的不同文件夹中,以便它们自动传输。我不是很懂 VBA,所以我什至不知道是否可以使用 attachment.movetofolder。
标签: vba email outlook attachment