Outlook에서 상태별로 모든 작업을 빠르게 계산하는 방법

지금 공유 :

작업에는 "Not Started ","In Progress ","Completed ","Waiting for someone "및"Deferred ". 상태별로 모든 작업을 빠르게 계산하려면이 문서에서 소개 한 방법을 사용할 수 있습니다.

Outlook에서는 사용자가 작업 또는 플래그가 지정된 항목에 상태를 할당 할 수 있습니다. XNUMX 가지 상태가 있습니다. 각각 "Not Started”,“In Progress”,“Completed”,“Waiting for someone”및“Deferred”. Outlook에 많은 양의 작업이 있고 서로 다른 상태에있을 수 있습니다. 이제 모든 작업을 상태별로 계산하려면 다음 방법을 사용할 수 있습니다.작업 상태

모든 작업을 상태별로 빠르게 계산

  1. 먼저 ""를 참조하여 Outlook VBA 편집기를 시작합니다.Outlook에서 VBA 코드를 실행하는 방법".
  2. 그런 다음 VBA 편집기에서“MS Excel Object Library "및"MS Scripting Runtime "에 따라"개체 라이브러리를 추가하는 방법rary VBA의 참조".
  3. 다음으로 다음 코드를 사용하지 않는 모듈에 복사합니다.
Dim objDictionary As New Scripting.Dictionary

Sub CountTasksByStatus()
    Dim objStore As Outlook.Store
    Dim objOutlookFile As Outlook.Folder
    Dim objFolder As Outlook.Folder
    Dim objExcelApp As Excel.Application
    Dim objExcelWorkbook As Excel.Workbook
    Dim objExcelWorksheet As Excel.Worksheet
    Dim varStatuses As Variant
    Dim varTaskCounts As Variant
    Dim i As Integer
    Dim nLastRow As Integer
 
    'Count by Dictionary
    Set objDictionary = CreateObject("Scripting.Dictionary")
  
    'Process All Outlook data files
    For Each objStore In Application.Session.Stores
        Set objOutlookFile = objStore.GetRootFolder
        For Each objFolder In objOutlookFile.Folders
            If objFolder.DefaultItemType = olTaskItem Then
               Call ProcessTaskFolders(objFolder)
            End If
        Next
    Next
 
    'Export the counts to an Excel worksheet
    Set objExcelApp = CreateObject("Excel.Application")
    objExcelApp.Visible = True
    Set objExcelWorkbook = objExcelApp.Workbooks.Add
    Set objExcelWorksheet = objExcelWorkbook.Sheets(1)
 
    With objExcelWorksheet
        .Cells(1, 1) = "Status"
        .Cells(1, 1).Font.Bold = True
        .Cells(1, 2) = "Task Count"
        .Cells(1, 2).Font.Bold = True
    End With
 
    varStatuses = objDictionary.Keys
    varTaskCounts = objDictionary.Items
 
    For i = LBound(varStatuses) To UBound(varStatuses)
        nLastRow = objExcelWorksheet.Range("A" & objExcelWorksheet.Rows.Count).End(xlUp).Row + 1
        With objExcelWorksheet
            .Cells(nLastRow, 1) = varStatuses(i)
            .Cells(nLastRow, 2) = varTaskCounts(i)
        End With
    Next
 
    objExcelWorksheet.Columns("A:B").AutoFit
End Sub

Sub ProcessTaskFolders(ByVal objCurFolder As Outlook.Folder)
    Dim objTask As Outlook.TaskItem
    Dim strStatus As String
    Dim objSubfolder As Outlook.Folder
 
    'Count tasks by status
    For Each objTask In objCurFolder.Items
        Select Case objTask.Status
               Case olTaskNotStarted
                    strStatus = "Not Started"
 
                    If objDictionary.Exists(strStatus) Then
                       objDictionary(strStatus) = objDictionary(strStatus) + 1
                    Else
                       objDictionary.Add strStatus, 1
                    End If
               Case olTaskInProgress
                    strStatus = "In Progress"
 
                    If objDictionary.Exists(strStatus) Then
                       objDictionary(strStatus) = objDictionary(strStatus) + 1
                    Else
                       objDictionary.Add strStatus, 1
                    End If
               Case olTaskComplete
                    strStatus = "Completed"
 
                    If objDictionary.Exists(strStatus) Then
                       objDictionary(strStatus) = objDictionary(strStatus) + 1
                    Else
                       objDictionary.Add strStatus, 1
                    End If
               Case olTaskWaiting
                    strStatus = "Waiting on someone else"
 
                    If objDictionary.Exists(strStatus) Then
                       objDictionary(strStatus) = objDictionary(strStatus) + 1
                    Else
                       objDictionary.Add strStatus, 1
                    End If
               Case olTaskDeferred
                    strStatus = "Deferred"
 
                    If objDictionary.Exists(strStatus) Then
                       objDictionary(strStatus) = objDictionary(strStatus) + 1
                    Else
                       objDictionary.Add strStatus, 1
                    End If
         End Select
    Next
 
    'Process all subfolders recursively
    If objCurFolder.Folders.Count > 0 Then
       For Each objSubfolder In objCurFolder.Folders
           Call ProcessTaskFolders(objSubfolder)
       Next
    End If
End Sub

VBA 코드-상태 별 작업 계산

  1. 그 후 첫 번째 서브 루틴을 클릭하고“F5”키를 누르십시오.
  2. 매크로가 완료되면 아래 스크린 샷과 같은 새 Excel 워크 시트가 즉시 표시됩니다. 여기에는 서로 다른 상태의 작업 수가 포함됩니다.서로 다른 상태의 작업 수

Outlook의 함정에주의

바이러스, 인적 오류, 소프트웨어 오류 및 하드웨어 오류 등 Outlook을 둘러싼 많은 위험이 있습니다. 따라서 귀중한 Outlook 데이터를 잃지 않으려면 항상주의를 기울여야합니다. 간단히 말해서 알 수없는 첨부 파일이나 의심스러운 링크를 이메일에 다운로드해서는 안됩니다. 또한 가능하면 다음과 같은 놀라운 Outlook 수정 유틸리티를 유지하는 것이 좋습니다. DataNumen Outlook Repair, 주변에 전적으로 의존하는 대신 받은 편지함 수리 도구.

저자 소개 :

Shirley Zhang은 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. SQL 복구 및 전망 수리 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM

지금 공유 :

댓글이 닫혀있다.