使用Excel VBAselectOutlook文件夹

我试图绕过不得不select我想要的文件夹,只是告诉Excel继续前进,并计数“收件箱”

Sub Get_Emails() Dim OLF As Outlook.MAPIFolder Dim EmailItemCount As Long Set OLF = GetObject("", "Outlook.Application").GetNamespace("MAPI").PickFolder EmailItemCount = OLF.Items.Count Range("A1") = EmailItemCount Set OLF = Nothing Application.StatusBar = False End Sub 

有谁知道如何才能得到计数,而不必select文件夹? Excel VBA应该自动进入“收件箱”,并给我点数。

注意:您必须转到工具>参考>,然后select“Microsoft Outlook 14.0对象库”才能使此macros工作。

这是有用的东西:

 Option Explicit Sub LoopFoldersInInbox() Dim ns As Outlook.Namespace Dim myfolder As Outlook.Folder Dim mysubfolder As Outlook.Folder Set ns = GetObject("", "Outlook.Application").GetNamespace("MAPI") Set myfolder = ns.GetDefaultFolder(olFolderInbox) For Each mysubfolder In myfolder.Folders Debug.Print mysubfolder.name Debug.Print mysubfolder.Items.Count Next mysubfolder End Sub 

这里有一些学分 。 这是与早期的约束力。 因此,如果您在nsmysubfolder按下点,您将看到它们的属性和操作: 在这里输入图像说明

这是后期绑定,因此您不需要明确引用Outlook库,并且代码可以在更多的用户上工作:

 Option Explicit Sub LoopFoldersInInbox() Dim ns As Object Dim objFolder As Object Dim objSubfolder As Object Set ns = GetObject("", "Outlook.Application").GetNamespace("MAPI") Set objFolder = ns.GetDefaultFolder(6) ' 6 is equal to olFolderInbox For Each objSubfolder In objFolder.Folders Debug.Print objSubfolder.name Debug.Print objSubfolder.Items.Count Next objSubfolder End Sub 

在这个晚期的约束中,我用6代替了olFolderInbox

编辑:如果你想在单元格中的结果,使用这个代码:

 Option Explicit Sub LoopFoldersInInbox() Dim ns As Object Dim objFolder As Object Dim objSubfolder As Object Dim lngCounter As Long Set ns = GetObject("", "Outlook.Application").GetNamespace("MAPI") Set objFolder = ns.GetDefaultFolder(6) ' 6 is equal to olFolderInbox For Each objSubfolder In objFolder.Folders With ActiveSheet lngCounter = lngCounter + 1 .Cells(lngCounter, 1) = objSubfolder.Name .Cells(lngCounter, 2) = objSubfolder.Items.Count End With Debug.Print objSubfolder.Name Debug.Print objSubfolder.Items.Count Next objSubfolder End Sub 

下面是更多我所寻找的,但Vityana的代码工作得很好。 这一切都取决于你需要什么。 我想在“收件箱”中指定一个文件夹,但我目前无法。 这只会得到“收件箱”的计数,但有一些文件夹嵌套在我无法指定的“收件箱”文件夹下。 任何人都知道如何做到这一点?

 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("Joe.L.Smo@company.com").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 End Sub