Как быстро подсчитать все задачи по статусу в Outlook

Поделись сейчас:

Задачи могут иметь пять статусов — «Не Started», «Выполняется», «Завершено», «Ожидает кого-то другого» и «Отложено». Если вы хотите быстро подсчитать все задачи по статусу, вы можете использовать способ, представленный в этой статье.

Outlook позволяет пользователям назначать статус задачам или помеченным элементам. Статусов пять — соответственно «Не Started», «Выполняется», «Завершено», «Ожидает кого-то другого» и «Отложено». Возможно, у вас в Outlook большое количество задач, и они находятся в разных статусах. Теперь, если вы хотите подсчитать все задачи по статусу, вы можете использовать следующий способ.Статус задачи

Быстрый подсчет всех задач по статусу

  1. Прежде всего, запустите редактор Outlook VBA, обратившись к «Как запустить код VBA в Outlook».
  2. Затем в редакторе VBA включите ссылку на «MS Excel Object Lib».rary», а также «Среда выполнения сценариев MS» в соответствии с «Как добавить объектную библиотеку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поблизости, вместо того, чтобы полностью полагаться на инструмент для ремонта входящих.

Об авторе:

Ширли Чжан — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая восстановить sql и программные продукты для ремонта Outlook. Для получения дополнительной информации посетите www.datanumen.com

Поделись сейчас:

Комментарии закрыты.