2016-09-27 4 views
1

Я пытаюсь подсчитать количество электронных писем в папке «Черновики» Outlook из Excel VBA.Подсчет количества писем в папке «Черновики» - Outlook

Я не запрограммировал использование иерархии объектов Outlook, поэтому у меня возникли проблемы.

Ниже приведена одна из вариаций, которые я пробовал.

Dim objOutlook As Object 
Set objOutlook = CreateObject("Outlook.Application") 

Dim objNameSpace As Object 
Set objNameSpace = objOutlook.GetNamespace("MAPI") 
Set items = objNameSpace.GetDefaultFolder(olFolderDrafts).items 

MsgBox items.count 

Когда я запускаю этот код, я получаю ошибку Run-time error 5 Invalid procedure call or argument

ли кто-нибудь сможет помочь, чтобы помочь спасти меня кучу времени? Спасибо!

ответ

1

Я смог ответить на свой вопрос. Сначала у меня не было библиотеки объектов MS Outlook. Во-вторых, я изменил свой код на следующее:

Dim objOutlook As Object, objNameSpace As Object, objFolder As Object 

Set objOutlook = CreateObject("Outlook.Application") 
Set objNameSpace = objOutlook.GetNamespace("MAPI") 
Set objFolder = objNameSpace.GetDefaultFolder(olFolderDrafts) 

MsgBox objFolder.items.count 

Я надеюсь, что это поможет кому-то там. Благодарю.

0

Вы также можете сделать это

Option Explicit 
Public Const olFolderInbox As Long = 6 
Public Const olFolderDrafts As Long = 16 
Public Const olFolderContacts As Long = 10 
Public Const olFolderDeletedItems As Long = 3 

Public Sub Count_MailItems() 
    Dim olApp As Object ' Outlook.Application 
    Dim olNs As Object ' Outlook.Namespace 
    Dim Folder As Object ' Outlook.MAPIFolder 
    Dim Items As Object ' Outlook.Items 
    Dim Msg As String 

    Set olApp = CreateObject("Outlook.Application") 
    Set olNs = olApp.GetNamespace("MAPI") 

' Set Folder = olNs.Session.PickFolder 
    'or 
' Set Folder = olApp.ActiveExplorer.CurrentFolder 
    'or 
    Set Folder = olNs.GetDefaultFolder(olFolderInbox) 
'          olFolderDrafts 
'          olFolderContacts 
'          olFolderDeletedItems 

    Set Items = Folder.Items 

    Msg = Items.Count & " Items in " & Folder.Name & " Folder" 

    MsgBox (Msg) 

End Sub