작업에는 "Not Started ","In Progress ","Completed ","Waiting for someone "및"Deferred ". 상태별로 모든 작업을 빠르게 계산하려면이 문서에서 소개 한 방법을 사용할 수 있습니다.
Outlook에서는 사용자가 작업 또는 플래그가 지정된 항목에 상태를 할당 할 수 있습니다. XNUMX 가지 상태가 있습니다. 각각 "Not Started”,“In Progress”,“Completed”,“Waiting for someone”및“Deferred”. Outlook에 많은 양의 작업이 있고 서로 다른 상태에있을 수 있습니다. 이제 모든 작업을 상태별로 계산하려면 다음 방법을 사용할 수 있습니다.
모든 작업을 상태별로 빠르게 계산
- 먼저 ""를 참조하여 Outlook VBA 편집기를 시작합니다.Outlook에서 VBA 코드를 실행하는 방법".
- 그런 다음 VBA 편집기에서“MS Excel Object Library "및"MS Scripting Runtime "에 따라"개체 라이브러리를 추가하는 방법rary VBA의 참조".
- 다음으로 다음 코드를 사용하지 않는 모듈에 복사합니다.
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
- 그 후 첫 번째 서브 루틴을 클릭하고“F5”키를 누르십시오.
- 매크로가 완료되면 아래 스크린 샷과 같은 새 Excel 워크 시트가 즉시 표시됩니다. 여기에는 서로 다른 상태의 작업 수가 포함됩니다.
Outlook의 함정에주의
바이러스, 인적 오류, 소프트웨어 오류 및 하드웨어 오류 등 Outlook을 둘러싼 많은 위험이 있습니다. 따라서 귀중한 Outlook 데이터를 잃지 않으려면 항상주의를 기울여야합니다. 간단히 말해서 알 수없는 첨부 파일이나 의심스러운 링크를 이메일에 다운로드해서는 안됩니다. 또한 가능하면 다음과 같은 놀라운 Outlook 수정 유틸리티를 유지하는 것이 좋습니다. DataNumen Outlook Repair, 주변에 전적으로 의존하는 대신 받은 편지함 수리 도구.
저자 소개 :
Shirley Zhang은 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. SQL 복구 및 전망 수리 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM

