Kuinka nopeasti laskea kaikki tehtävät tilan mukaan Outlookissa

Tehtävillä voi olla viisi tilaa – ”Ei aloitettu”, ”Keskellä”, ”Valmis”, ”Odottaa jotakuta muuta” ja ”Lykätty”. Jos haluat laskea kaikki tehtävät nopeasti tilan mukaan, voit käyttää tässä artikkelissa esiteltyä tapaa.

Outlook tukee käyttäjiä määrittämään tehtäville tai merkityille kohteille tilan. Tilavaihtoehtoja on viisi: ”Ei aloitettu”, ”Keskellä”, ”Valmis”, ”Odottaa jotakuta muuta” ja ”Lykätty”. Ehkä sinulla on Outlookissasi paljon tehtäviä ja ne ovat eri tiloissa. Jos nyt haluat laskea kaikki tehtävät tilan mukaan, voit käyttää seuraavaa tapaa.Tehtävän tila

Laske kaikki tehtävät nopeasti tilan mukaan

  1. Käynnistä ensin Outlook VBA -editori viittaamallaKuinka suorittaa VBA-koodi Outlookissa".
  2. Ota sitten VBA-editorissa käyttöön viittaus "MS Excel Object Libraryyn" sekä "MS Scripting Runtimeen" kohdan "Objektikirjastoviittauksen lisääminen VBA:ssa".
  3. Kopioi seuraavaksi seuraava koodi käyttämättömään moduuliin.
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-koodi - Laske tehtävät tilan mukaan

  1. Napsauta sen jälkeen ensimmäistä alirutiinia ja paina “F5” -näppäintä.
  2. Kun makro on valmis, näkyviin tulee uusi Excel-laskentataulukko, kuten alla oleva kuvakaappaus. Se sisältää tehtävien määrän eri tiloissa.Tehtävien lukumäärä eri tiloissa

Varo Outlookin ympärillä olevia sudenkuoppia

Outlookiin liittyy suuri määrä riskejä, kuten virukset, inhimilliset virheet, ohjelmistoviat ja laitteistoviat jne. Siksi, jos et halua menettää arvokkaita Outlook-tietojasi, sinun on pidettävä koko ajan varovaisena. Yksinkertaisesti sanottuna sinun ei pitäisi koskaan ladata tuntemattomia liitteitä tai epäilyttäviä linkkejä sähköposteihin. Lisäksi, jos mahdollista, on suositeltavaa pitää yllä merkittävä Outlook-korjausapuohjelma, kuten DataNumen Outlook Repair, läheisyydessä sen sijaan, että luottaisivat täysin Saapuneet-kansion korjaustyökalu.

Tekijän esittely:

Shirley Zhang on tietojen palauttamisen asiantuntija DataNumen, Inc., joka on maailman johtava tietojen palautustekniikoissa, mukaan lukien palauttaa sql ja Outlookin korjausohjelmistotuotteet. Lisätietoja osoitteessa www.datanumen.com

Kommenttien lisääminen on estetty.