Sådan tælles hurtigt alle opgaver efter status i din Outlook

Opgaver kan have fem status - "Ikke Started ”,“ I gang ”,“ Afsluttet ”,“ Venter på en anden ”og“ Udskudt ”. Hvis du hurtigt vil tælle alle opgaver efter status, kan du bruge den måde, der er introduceret i denne artikel.

Outlook understøtter brugere til at tildele status til opgaverne eller markerede elementer. Der er fem status - henholdsvis “Ikke Started ”,“ I gang ”,“ Afsluttet ”,“ Venter på en anden ”og“ Udskudt ”. Måske har du en stor mængde opgaver i din Outlook, og de har forskellige status. Hvis du nu vil tælle alle opgaverne efter status, kan du bruge følgende måde.Opgavestatus

Tæl hurtigt alle opgaver efter status

  1. Start først Outlook VBA-editor ved at henvise til “Sådan køres VBA-kode i din Outlook".
  2. Aktiver derefter henvisningen til “MS Excel Object Lib. I VBA-editorenrary ”samt” MS Scripting Runtime ”i henhold til“Sådan tilføjes et objekt Library Reference i VBA".
  3. Kopier derefter følgende kode til et ubrugt 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-kode - Tæl opgaver efter status

  1. Klik derefter på den første underrutine og tryk på “F5” -tasten.
  2. Når en makro er færdig, vises straks et nyt Excel-regneark, som skærmbilledet nedenfor. Den indeholder antallet af opgaver i forskellige statuser.Tællinger af opgaver i forskellige statusser

Pas på faldgruber omkring Outlook

Der er en stor mængde risici omkring Outlook, herunder vira, menneskelige fejl, softwarefejl samt hardwarefejl osv. Derfor, hvis du ikke vil miste dine værdifulde Outlook-data, skal du være forsigtig hele tiden. Kort sagt, du skal aldrig downloade ukendte vedhæftede filer eller mistænkelige links i e-mails. Desuden anbefales det, hvis det er muligt, at have et bemærkelsesværdigt Outlook-fixværktøj, som f.eks DataNumen Outlook Repair, i nærheden, i stedet for helt at stole på værktøj til reparation af indbakke.

Forfatter Introduktion:

Shirley Zhang er ekspert i datagendannelse i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder gendanne sql og Outlook-reparationssoftwareprodukter. For mere information besøg www.datanumen.com

Kommentarer er lukket.