2016-04-12 13 views
1

私のニーズに合わせてStack Overflowで見つけたVBAを編集しました。共有メールボックスの読書数と未読メール数の比較

これは、デフォルトの受信トレイの日付の電子メールの数と、未読の電子メールの日付のないカウントをカウントします。

共有メールボックスのメールを数える必要があります。たとえば、Redstreamattmailではデフォルトのメールボックスではなく、DATE WISEではメール全体と未読メールが表示されます。

Sub HowManyEmails()  

Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder  
Dim EmailCount As Integer  

Dim a As Outlook.Application  
Dim b As Outlook.NameSpace  
Dim c As Outlook.MAPIFolder  

Set a = New Outlook.Application  
Set b = a.GetNamespace("MAPI")  
Set c = b.GetDefaultFolder(olFolderInbox)  
d = c.UnReadItemCount  

Set objOutlook = CreateObject("Outlook.Application")  
Set objnSpace = objOutlook.GetNamespace("MAPI")  

On Error Resume Next  

Set objFolder = objnSpace.GetDefaultFolder(olFolderInbox)  

If Err.Number <> 0 Then  
    Err.Clear  
    MsgBox "No such folder."  
    Exit Sub  
End If  

EmailCount = objFolder.Items.Count  

MsgBox "Number of emails in the folder: " & EmailCount & " Total Unread  email count are " & d  

Dim dateStr As String  
Dim myItems As Outlook.Items  
Dim dict As Object  
Dim msg, msg1 As String  

Set dict = CreateObject("Scripting.Dictionary")  
Set myItems = objFolder.Items  

myItems.SetColumns ("SentOn")  

' Determine date of each message:  

For Each myItem In myItems  
    dateStr = GetDate(myItem.SentOn)  
    If Not dict.Exists(dateStr) Then  
     dict(dateStr) = 0  
    End If  
    dict(dateStr) = CLng(dict(dateStr)) + 1  
Next myItem  

' Output counts per day:  
For Each o In dict.Keys  
    msg = msg & o & ": " & dict(o) & " Email items" & vbCrLf  
Next  
msg1 = "unread Emails are  " & d  

Set objFolder = Nothing  
Set objnSpace = Nothing  
Set objOutlook = Nothing  

'Send Email  
Set OutApp = CreateObject("outlook.Application")  
Set OutMail = OutApp.CreateItem(o)  

With OutMail  
    .Subject = "Count of emails"  
    .To = "[email protected];"  
    .Body = msg & msg1  
    .Display  
    '.Send  
End With  

Set OutMail = Nothing  
Set OutApp = Nothing  

End Sub  
+0

追加の受信トレイへの参照を取得する可能性があります(http://stackoverflow.com/questions/9076634/get-reference-to-additional-inbox) – niton

+0

デバッグを試しましたか?ブレークポイントを設定し、変数を監視する... dictのメソッドを試してみてください... –

答えて

1

試してください:あなたはそこに正しいフォルダ名を入れ

Set c = b.Folders("Name of shared mailbox") 

+0

それは私のために働いてくれてありがとうございます。しかし、私はすべての電子メールのメールボックスで毎日電子メールの正しいカウントを取得していないことに気付きました。正しく理解する。正しいメールカウントを取得するために必要なすべてのエディション? – Shaik

+0

新しい質問をして気づくことができます。 GetDateのコードを含めます。誤ったカウントに対する回答がないため、http://stackoverflow.com/questions/15796392/counting-emails-in-outlook-2010-in-specific-folderの複製ではありません。 – niton

関連する問題