Come contare rapidamente tutte le attività in base allo stato in Outlook

Condividi ora:

Le attività possono avere cinque stati: "Non avviata", "In corso", "Completata", "In attesa di essere assegnata" e "Rinviata". Se si desidera contare rapidamente tutte le attività in base allo stato, è possibile utilizzare il metodo descritto in questo articolo.

Outlook consente agli utenti di assegnare uno stato alle attività o agli elementi contrassegnati. Sono disponibili cinque stati: "Non avviato", "In corso", "Completato", "In attesa di essere completato" e "Rinviato". Potresti avere molte attività in Outlook con stati diversi. Se desideri contare tutte le attività in base allo stato, puoi utilizzare il seguente metodo.Stato attività

Conta rapidamente tutte le attività in base allo stato

  1. Prima di tutto, avvia l'editor VBA di Outlook facendo riferimento a "Come eseguire il codice VBA in Outlook".
  2. Quindi, nell'editor VBA, abilitare il riferimento a "Libreria oggetti MS Excel" e a "Runtime di scripting MS" secondo "Come aggiungere un riferimento a una libreria di oggetti in VBA".
  3. Successivamente, copia il codice seguente in un modulo inutilizzato.
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

Codice VBA: conta le attività per stato

  1. Successivamente, fai clic sulla prima subroutine e premi il tasto "F5".
  2. Immediatamente, al termine della macro, verrà visualizzato un nuovo foglio di lavoro di Excel, come lo screenshot qui sotto. Contiene i conteggi delle attività in diversi stati.Conteggi delle attività in stati diversi

Attenzione alle insidie ​​di Outlook

Ci sono una grande quantità di rischi che circondano Outlook, inclusi virus, errori umani, guasti del software e guasti hardware, ecc. Pertanto, se non vuoi perdere i tuoi preziosi dati di Outlook, devi stare sempre attento. In poche parole, non dovresti mai scaricare allegati sconosciuti o collegamenti sospetti nelle e-mail. Inoltre, se possibile, è consigliabile mantenere una notevole utilità di correzione di Outlook, come DataNumen Outlook Repair, nelle vicinanze, invece di affidarsi totalmente al strumento di riparazione della posta in arrivo.

Introduzione dell'autore:

Shirley Zhang è un'esperta di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui recuperare sql e prodotti software di riparazione di Outlook. Per maggiori informazioni visita www.datanumen.com

Condividi ora:

I commenti sono chiusi.