![](/img/trans.png)
[英]How to open an Outlook excel attachment using Excel VBA, sent in a particular time range to a specific Outlook folder?
[英]How to specify nested folder in Outlook using Excel VBA
我需要帮助使用 Excel VBA 在 Outlook 中指定嵌套文件夹。 我将在下面发布我正在使用的代码。
我能够指定“收件箱”文件夹,但是当我尝试指定“收件箱”文件夹中的文件夹时,代码会返回“没有这样的文件夹”消息。
有谁知道为什么这会发生在我身上? 如果是这样,我该如何解决?
Option Explicit
Sub HowManyEmails()
Dim objOutlook As Object, objnSpace As Object, objFolder As Object
Dim EmailCount As Integer
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
On Error Resume Next
Set objFolder = objnSpace.Folders("NoctalkSW").Folders("Inbox")
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
EmailCount = objFolder.Items.Count
Set objFolder = Nothing
Set objnSpace = Nothing
Set objOutlook = Nothing
[B2].Value = EmailCount
On Error Resume Next
Set objFolder =
objnSpace.Folders("NoctalkSW").Folders("Inbox").Folders("COMPLETED")
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
EmailCount = objFolder.Items.Count
Set objFolder = Nothing
Set objnSpace = Nothing
Set objOutlook = Nothing
[B3].Value = EmailCount
End Sub
您是否尝试调试代码? 无论如何,请尝试使用以下代码:
Option Explicit
Sub HowManyEmails()
Dim objOutlook As Object, objnSpace As Object, objFolder As Object
Dim EmailCount As Integer
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
On Error Resume Next
Set objFolder = objnSpace.Folders("NoctalkSW").Folders("Inbox")
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
EmailCount = objFolder.Items.Count
Set objFolder = Nothing
Set objOutlook = Nothing
[B2].Value = EmailCount
On Error Resume Next
Set objFolder = objnSpace.Folders("NoctalkSW").Folders("Inbox").Folders("COMPLETED")
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
EmailCount = objFolder.Items.Count
Set objFolder = Nothing
Set objnSpace = Nothing
Set objOutlook = Nothing
[B3].Value = EmailCount
End Sub
您也可以尝试遍历文件夹,请参阅如何:枚举文件夹。
如果您想访问共享收件箱和子文件夹,请使用GetSharedDefaultFolder 方法
GetSharedDefaultFolder 方法返回代表指定用户的指定默认文件夹的 MAPIFolder 对象。 此方法用于委托方案,其中一个用户已将访问权限委托给另一个用户一个或多个默认文件夹。
代码示例
Option Explicit
Const olFolderInbox = 6
Sub HowManyEmails()
Dim olApp As Object
Dim olNs As Object
Dim Inbox As Object
Dim SubFolder As Object
Dim Recip As Object
Set olApp = CreateObject("Outlook.Application")
Set olNs = olApp.GetNamespace("MAPI")
Set Recip = olNs.CreateRecipient("0m3r@email.com") ' Share address
Recip.Resolve
Set Inbox = olNs.GetSharedDefaultFolder(Recip, olFolderInbox) ' Inbox
[B2].Value = Inbox.Items.Count
Set SubFolder = Inbox.Folders("COMPLETED") ' subfolder
[B3].Value = SubFolder.Items.Count
Set olApp = Nothing
Set olNs = Nothing
Set Inbox = Nothing
Set SubFolder = Nothing
Set Recip = Nothing
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.