Kako hitro prešteti vsa opravila po stanju v vašem Outlooku

Skupna raba zdaj:

Naloge imajo lahko pet statusov – »Ni začeto«, »V teku«, »Dokončano«, »Čakanje na nekoga drugega« in »Odloženo«. Če želite hitro prešteti vse naloge po statusu, lahko uporabite način, predstavljen v tem članku.

Outlook uporabnikom omogoča dodelitev statusa opravilom ali označenim elementom. Obstaja pet statusov – »Ni začeto«, »V teku«, »Dokončano«, »Čakanje na nekoga drugega« in »Odloženo«. Morda imate v Outlooku veliko opravil, ki so v različnih stanjih. Če želite prešteti vsa opravila po stanju, lahko uporabite naslednji način.Status opravila

Hitro preštejte vse naloge po stanju

  1. Najprej zaženite urejevalnik Outlook VBA tako, da se sklicujete na »Kako zagnati kodo VBA v Outlooku".
  2. Nato v urejevalniku VBA omogočite sklicevanje na »Knjižnico objektov MS Excel« in »Izvajanje skriptov MS« v skladu z »Kako dodati referenco knjižnice objektov v VBA".
  3. Nato kopirajte naslednjo kodo v neuporabljeni 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

Koda VBA - štetje opravil po statusu

  1. Po tem kliknite prvi podprogram in pritisnite tipko "F5".
  2. Takoj, ko se makro zaključi, se prikaže nov Excelov delovni list, kot je spodnji posnetek zaslona. Vsebuje štetje opravil v različnih statusih.Število nalog v različnih statusih

Pazite se pasti okoli Outlooka

Outlook je obkrožen s številnimi tveganji, vključno z virusi, človeškimi napakami, napakami programske opreme in strojne opreme itd. Če torej ne želite izgubiti dragocenih Outlookovih podatkov, morate biti ves čas previdni. Preprosto povedano, nikoli ne prenašajte neznanih prilog ali sumljivih povezav v e-poštnih sporočilih. Poleg tega, če je mogoče, je priporočljivo obdržati izjemen pripomoček za popravilo Outlooka, kot je DataNumen Outlook Repair, v bližini, namesto da bi se popolnoma zanašali na orodje za popravilo nabiralnika.

Uvod avtorja:

Shirley Zhang je strokovnjakinja za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z obnoviti sql in obeti za popravilo programskih izdelkov. Za več informacij obiščite www.datanumen.com

Skupna raba zdaj:

Komentarji so zaprti.