Kuidas Outlookis kõiki ülesandeid oleku järgi kiiresti loendada

Ülesannetel võib olla viis olekut – „Mitte Started“, „Käimas“, „Lõpetatud“, „Ootan kedagi teist“ ja „Edastatud“. Kui soovite kõiki ülesandeid oleku järgi kiiresti üles lugeda, võite kasutada selles artiklis kirjeldatud meetodit.

Outlook toetab kasutajatel ülesannetele või märgistatud üksustele oleku määramist. Olekuid on viis – vastavalt „Mitte Started“, „Käimas“, „Lõpetatud“, „Ootan kedagi teist“ ja „Edastatud“. Võib-olla on teie Outlookis palju ülesandeid ja need on erinevas olekus. Nüüd, kui soovite kõiki ülesandeid oleku järgi loendada, saate kasutada järgmist viisi.Ülesande olek

Loendage kiiresti kõik ülesanded oleku järgi

  1. Kõigepealt käivitage Outlook VBA redaktor, viidates jaotisele "Kuidas Outlookis VBA-koodi käivitada".
  2. Seejärel lubage VBA redaktoris viide „MS Excel Object Library” ja „MS skriptimise käitusaeg” vastavalt „Kuidas lisada objektiliigrary Viide VBA-s".
  3. Järgmisena kopeerige järgmine kood kasutamata moodulisse.
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 kood – loenda ülesandeid oleku järgi

  1. Pärast seda klõpsake esimest alamprogrammi ja vajutage klahvi "F5".
  2. Kui makro on lõpule jõudnud, kuvatakse kohe uus Exceli tööleht, nagu alloleval ekraanipildil. See sisaldab erinevates olekutes olevate ülesannete arvu.Erinevate olekutega ülesannete arv

Hoiduge Outlookiga seotud lõkse eest

Outlookiga kaasneb suur hulk riske, sealhulgas viirused, inimlikud vead, tarkvara- ja riistvararikked jne. Seega, kui te ei soovi oma väärtuslikke Outlooki andmeid kaotada, peate olema kogu aeg ettevaatlik. Lihtsamalt öeldes ei tohiks kunagi e-kirjades alla laadida tundmatuid manuseid ega kahtlasi linke. Lisaks on võimalusel soovitatav säilitada mõni tähelepanuväärne Outlooki parandusutiliit, näiteks DataNumen Outlook Repair, läheduses, selle asemel, et täielikult loota postkasti parandamise tööriist.

Autori sissejuhatus:

Shirley Zhang on andmete taastamise ekspert DataNumen, Inc., mis on maailmas juhtiv andmete taastamise tehnoloogiate, sealhulgas sql-i taastamine ja Outlooki remonditarkvaratooted. Lisateabe saamiseks külastage www.datanumenCom

Kommentaarid on suletud.