2012-02-08 2 views
5

I Outlook 폴더의 전자 메일 수를 계산하려면 다음 코드를 사용하십시오.날짜 별 Outlook의 전자 메일 계산

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("Personal Folders").Folders("Inbox").Folders("report's").Folders("Customer")  
    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 

MsgBox "Number of emails in the folder: " & EmailCount, , "email count" End Sub 

나는이 폴더의 이메일을 날짜별로 계산하려고하므로 매일 계산됩니다.

+0

이 분명 밤은 [태그 : VBScript를를] - 당신은 VBA의 Outlook 내부에서 의미합니까? – brettdj

+0

Excel에 연결하거나 ADO를 사용하여 쿼리를 실행하는 것이 더 쉽습니다. http://support.microsoft.com/kb/275262 – Fionnuala

답변

10

이 코드로 시도 할 수 있습니다 :

Sub HowManyEmails() 

    Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder 
    Dim EmailCount As Integer 
    Set objOutlook = CreateObject("Outlook.Application") 
    Set objnSpace = objOutlook.GetNamespace("MAPI") 

     On Error Resume Next 
     Set objFolder = objnSpace.Folders("Personal Folders").Folders("Inbox").Folders("report's").Folders("Customer") 
     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, , "email count" 

    Dim dateStr As String 
    Dim myItems As Outlook.Items 
    Dim dict As Object 
    Dim msg 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: 
    msg = "" 
    For Each o In dict.Keys 
     msg = msg & o & ": " & dict(o) & " items" & vbCrLf 
    Next 
    MsgBox msg 

    Set objFolder = Nothing 
    Set objnSpace = Nothing 
    Set objOutlook = Nothing 
End Sub 

Function GetDate(dt As Date) As String 
    GetDate = Year(dt) & "-" & Month(dt) & "-" & Day(dt) 
End Function 
+0

좋은 결과를 보내 주셔서 감사합니다.이 정보를 저장할 수있는 방법이 있습니다. csv 파일? – Shaun07776

+2

@fmunkert : +1 멋지게 완료 :) 단지 하나의 제안. 'MsgBox '다음에'Exit Sub'를 사용하지 마십시오. 그런 폴더가 없습니다. "'적절한 정리를하십시오. :) 여전히 백그라운드에서 Outlook을 실행하고 있다는 것을 기억하십시오;) –

관련 문제