Comment compter rapidement toutes les tâches par statut dans votre Outlook

Partage maintenant:

Les tâches peuvent avoir cinq statuts : « Non commencée », « En cours », « Terminée », « En attente » et « Reportée ». Pour compter rapidement toutes les tâches par statut, vous pouvez utiliser la méthode présentée dans cet article.

Outlook permet aux utilisateurs d'attribuer un statut aux tâches ou aux éléments marqués. Il existe cinq statuts : « Non démarré », « En cours », « Terminé », « En attente » et « Reporté ». Vous avez peut-être un grand nombre de tâches dans Outlook, chacune avec un statut différent. Si vous souhaitez compter toutes les tâches par statut, vous pouvez procéder comme suit.État de la tâche

Compter rapidement toutes les tâches par statut

  1. Tout d'abord, lancez l'éditeur Outlook VBA en vous référant à "Comment exécuter le code VBA dans votre Outlook" .
  2. Ensuite, dans l'éditeur VBA, activez la référence à « MS Excel Object Library » ainsi qu'à « MS Scripting Runtime » conformément à «Comment ajouter une référence à une bibliothèque d'objets en VBA" .
  3. Ensuite, copiez le code suivant dans un module inutilisé.
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

Code VBA - Compter les tâches par statut

  1. Après cela, cliquez sur le premier sous-programme et appuyez sur la touche "F5".
  2. Une fois la macro terminée, une nouvelle feuille de calcul Excel s'affichera, comme la capture d'écran ci-dessous. Il contient le nombre de tâches dans différents statuts.Nombre de tâches dans différents statuts

Méfiez-vous des pièges autour d'Outlook

Il existe une grande quantité de risques entourant Outlook, y compris les virus, les erreurs humaines, les pannes logicielles ainsi que les pannes matérielles, etc. Par conséquent, si vous ne voulez pas perdre vos précieuses données Outlook, vous devez rester prudent tout le temps. En termes simples, vous ne devez jamais télécharger de pièces jointes inconnues ou de liens suspects dans les e-mails. De plus, si possible, il est conseillé de conserver un remarquable utilitaire de correction d'Outlook, comme DataNumen Outlook Repair, à proximité, au lieu de dépendre totalement de la outil de réparation de boîte de réception.

Introduction de l'auteur:

Shirley Zhang est une experte en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris récupérer sql et produits logiciels de réparation Outlook. Pour plus d'informations, visitez www.datanumen.com

Partage maintenant:

Les commentaires sont fermés.