Hoe u snel alle taken kunt tellen op status in uw Outlook

Taken kunnen vijf statussen hebben: 'Niet gestart', 'In uitvoering', 'Voltooid', 'Wachtend op iemand anders' en 'Uitgesteld'. Als u snel alle taken per status wilt tellen, kunt u de methode gebruiken die in dit artikel wordt beschreven.

Outlook biedt gebruikers de mogelijkheid om een ​​status toe te wijzen aan taken of gemarkeerde items. Er zijn vijf statussen: 'Niet gestart', 'In uitvoering', 'Voltooid', 'Wachtend op iemand anders' en 'Uitgesteld'. Stel dat u veel taken in Outlook hebt met verschillende statussen. Als u nu alle taken per status wilt tellen, kunt u de volgende methode gebruiken.Taakstatus

Tel snel alle taken op status

  1. Start eerst de Outlook VBA-editor door te verwijzen naar "Hoe u VBA-code in uw Outlook uitvoert'.
  2. Schakel vervolgens in de VBA-editor de verwijzing naar "MS Excel Object Library" en "MS Scripting Runtime" in, zoals beschreven in de instructies.Hoe voeg je een verwijzing naar een objectbibliotheek toe in VBA?'.
  3. Kopieer vervolgens de volgende code naar een ongebruikte module.
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-code - Tel taken op status

  1. Klik daarna op de eerste subroutine en druk op de "F5" -toets.
  2. Zodra de macro is voltooid, wordt een nieuw Excel-werkblad weergegeven, zoals de onderstaande schermafbeelding. Het bevat het aantal taken in verschillende statussen.Tellingen van taken in verschillende statussen

Pas op voor valkuilen rondom Outlook

Er zijn een groot aantal risico's rondom Outlook, waaronder virussen, menselijke fouten, softwarefouten en hardwarefouten, enz. Daarom moet u altijd voorzichtig zijn als u uw waardevolle Outlook-gegevens niet wilt verliezen. Simpel gezegd, u mag nooit onbekende bijlagen of verdachte links in de e-mails downloaden. Bovendien is het raadzaam om, indien mogelijk, een opmerkelijk Outlook-fixprogramma te behouden, zoals DataNumen Outlook Repair, in de buurt, in plaats van volledig te vertrouwen op de inbox reparatieprogramma.

Auteur Introductie:

Shirley Zhang is een expert op het gebied van gegevensherstel in DataNumen, Inc., de wereldleider in technologieën voor gegevensherstel, waaronder herstel sql en Outlook-reparatiesoftwareproducten. Voor meer informatie bezoek www.datanumen.com

Reacties zijn gesloten.