Задачи могут иметь пять статусов — «Не Started», «Выполняется», «Завершено», «Ожидает кого-то другого» и «Отложено». Если вы хотите быстро подсчитать все задачи по статусу, вы можете использовать способ, представленный в этой статье.
Outlook позволяет пользователям назначать статус задачам или помеченным элементам. Статусов пять — соответственно «Не Started», «Выполняется», «Завершено», «Ожидает кого-то другого» и «Отложено». Возможно, у вас в Outlook большое количество задач, и они находятся в разных статусах. Теперь, если вы хотите подсчитать все задачи по статусу, вы можете использовать следующий способ.
Быстрый подсчет всех задач по статусу
- Прежде всего, запустите редактор Outlook VBA, обратившись к «Как запустить код VBA в Outlook».
- Затем в редакторе VBA включите ссылку на «MS Excel Object Lib».rary», а также «Среда выполнения сценариев MS» в соответствии с «Как добавить объектную библиотеку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поблизости, вместо того, чтобы полностью полагаться на инструмент для ремонта входящих.
Об авторе:
Ширли Чжан — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая восстановить sql и программные продукты для ремонта Outlook. Для получения дополнительной информации посетите www.datanumen.com

