Hur man snabbt räknar alla uppgifter efter status i din Outlook

Uppgifter kan ha fem statusar – ”Inte startad”, ”Pågående”, ”Slutförd”, ”Väntar på någon annan” och ”Uppskjuten”. Om du snabbt vill räkna alla uppgifter efter status kan du använda metoden som presenteras i den här artikeln.

Outlook stöder användare för att tilldela status till uppgifter eller flaggade objekt. Det finns fem statusar – respektive "Inte startad", "Pågående", "Slutförd", "Väntar på någon annan" och "Uppskjuten". Du kanske har ett stort antal uppgifter i Outlook och de har olika statusar. Om du nu vill räkna alla uppgifter efter status kan du använda följande sätt.Uppgiftsstatus

Räkna snabbt alla uppgifter efter status

  1. Först och främst, starta Outlook VBA-redigeraren genom att hänvisa till “Hur du kör VBA-kod i din Outlook".
  2. Aktivera sedan referensen till "MS Excel Object Library" samt "MS Scripting Runtime" i VBA-redigeraren enligt "Hur man lägger till en objektbiblioteksreferens i VBA".
  3. Kopiera sedan följande kod till en oanvänd modul.
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-kod - Räkna uppgifter efter status

  1. Klicka sedan på den första underrutinen och tryck på “F5” -tangenten.
  2. När ett makro är klart kommer ett nytt Excel-kalkylblad att visas, som skärmdumpen nedan. Den innehåller antalet uppgifter i olika statuser.Räkningar av uppgifter i olika statuser

Akta dig för fallgropar kring Outlook

Det finns en stor mängd risker kring Outlook, inklusive virus, mänskliga fel, programvarufel såväl som maskinvarufel, etc. Om du inte vill förlora dina värdefulla Outlook-data måste du vara försiktig hela tiden. Enkelt uttryckt ska du aldrig ladda ner okända bilagor eller misstänkta länkar i e-postmeddelandena. Dessutom, om möjligt, är det lämpligt att ha ett anmärkningsvärt Outlook fix-verktyg, som DataNumen Outlook Repair, i närheten, istället för att helt förlita sig på verktyg för reparation av inkorgen.

Författarintroduktion:

Shirley Zhang är expert på dataåterställning DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive återhämta sql och Outlook-programvara för reparationsprogramvara. För mer information besök www.datanumen.com

Kommentarer är stängda.