【发布时间】:2020-06-25 15:30:15
【问题描述】:
我正在尝试运行此宏以将电子邮件附件从我的收件箱中的文件夹(称为工具包下载)移动到我桌面上的文件夹中并重命名附件。
我明白了
运行时错误“438”:对象不支持此属性或方法
Sub OSP()
Dim oOutlook As Outlook.Application
Dim oNs As Outlook.NameSpace 'Main Outlook Today
Dim oFldrSb As Outlook.MAPIFolder 'Sub Folder in Outlook Today
Dim oFldrSbSb As Outlook.MAPIFolder 'Sub in Sub Folder
Dim oFldrSbSbsb As Outlook.MAPIFolder 'Sub in Sub in Sub Folder
Dim oMessage As Object
Dim sPathName As String
Dim oAttachment As Outlook.Attachment
Dim Ictr As Integer
Dim iAttachCnt As Integer
sPathName = "H:\Desktop\Toolkit Downloads\" 'My Folder Path where to save attachments
Set oOutlook = New Outlook.Application
Set oNs = oOutlook.GetNamespace("MAPI")
Set oFldrSb = oNs.Folders("Joe.Bloggs@test.co.uk")
Set oFldrSbSb = oFldrSb.Folders("Inbox")
Set oFldrSbSbsb = oFldrSbSb.Folders("Toolkit Downloads")
For Each oMessage In oFldrSbSbsb.Items
With oMessage.Attachments
iAttachCnt = .Count
If iAttachCnt > 0 Then
For Ictr = 1 To iAttachCnt
.Item(Ictr).SaveAsFile sPathName _
& .Item(Ictr).Parent
Next Ictr
End If
End With
DoEvents
Next oMessage
SaveAttachments = True
MsgBox "All Indepol Download files have been moved !!" & vbCrLf & vbCrLf & "It worked... Yahoo"
End Sub
【问题讨论】:
-
哪个语句给出错误 438?
-
文件夹(“工具包下载”)中是否有任何不是 MailItem 的内容?只有 MailItem 有附件。
-
为什么使用 .
Item(Ictr).Parent作为输出文件名的一部分?我从未尝试过,但我会猜测附件的父级是 MailItem MailItem 不是字符串,因此不能以这种方式使用。你不能保证像这样的任何名字都是独一无二的,没有经过测试。 -
嗨托尼非常感谢您的回复。我不得不承认我是 VBA 的新手,并且获得了要使用的脚本,所以我不确定为什么要使用 Item(Ictr).Parent。错误 438 似乎没有突出显示一个语句。我可以确认带有附件的 ionly 电子邮件位于 Toolkit 下载文件夹中。
-
嗨托尼刚发现错误,好像在.Item(Ictr).SaveAsFile sPathName _ & .Item(Ictr).Parent