我收到错误:
运行时错误'-2147221233 (8004010f)';
尝试的操作失败。找不到对象。
在这行代码中
Set objFolder = objNamespace.Folders("Inbox").Folders(strFolderName)
我正在尝试将所有附件从文件夹下载到我指定的路径。
这是我的代码:
Sub OLDownloader()
Dim objOutlook As Outlook.Application
Dim objNamespace As Outlook.Namespace
Dim objFolder As Outlook.Folder
Dim objItem As Object
Dim objAttachment As Outlook.Attachment
Dim strFolderName As String
Dim strSaveFolder As String
Dim Answer As String
Set objOutlook = Outlook.Application
Set objNamespace = objOutlook.GetNamespace("MAPI")
strFolderName = "Specials"
strSaveFolder = "C:\Users\Folder"
Set objFolder = objNamespace.Folders("Inbox").Folders(strFolderName)
Answer = MsgBox("Do you want to download the latest file?", vbYesNo, "Downloader")
If Answer = vbYes Then
Set objItem = objFolder.Items.GetLast
For Each objAttachment In objItem.Attachments
' Save the attachment to the specified folder
objAttachment.SaveAsFile strSaveFolder & objAttachment.Filename
Next objAttachment
Else
For Each objItem In objFolder.Items
For Each objAttachment In objItem.Attachments
' Save the attachment to the specified folder
objAttachment.SaveAsFile strSaveFolder & objAttachment.Filename
Next objAttachment
Next objItem
End If
End Sub
我尝试重命名 Outlook 中的文件夹,为此创建了新文件夹。
将字符串更改为变量。
而不是使用以下代码行:
Set objFolder = objNamespace.Folders("Inbox").Folders(strFolderName)
要获取 Outlook 中的任何标准文件夹(如
Inbox
),您需要使用 Namespace
类的 GetDefaultFolder方法:
objNamespace.GetDefaultFolder(olFolderInbox).Folders(strFolderName)
注意,任何子文件夹可能不存在,因此我建议迭代所有子文件夹并检查 Name 属性以确保其存在。如果该文件夹不存在,您可以考虑使用 Folders.Add 方法创建它。
我还注意到以下代码行,您将在其中迭代文件夹中的所有项目并尝试保存附加文件(如果有):
For Each objItem In objFolder.Items
For Each objAttachment In objItem.Attachments
相反,您需要使用
Find
类的 FindNext
/Restrict
或 Items
方法来仅获取具有附加文件的项目,因此您不必迭代文件夹中的所有项目。
要获取
Inbox
文件夹,您应该使用:
Set objFolder = objOutlook.Session.GetDefaultFolder(olFolderInbox)