Uppgifter kan ha fem statusar – ”Inte startad”, ”Pågående”, ”Slutförd”, ”Väntar på någon annan” och ”Uppskjuten”. Om du snabbt vill räkna alla uppgifter efter status kan du använda metoden som presenteras i den här artikeln.
Outlook stöder användare för att tilldela status till uppgifter eller flaggade objekt. Det finns fem statusar – respektive "Inte startad", "Pågående", "Slutförd", "Väntar på någon annan" och "Uppskjuten". Du kanske har ett stort antal uppgifter i Outlook och de har olika statusar. Om du nu vill räkna alla uppgifter efter status kan du använda följande sätt.
Räkna snabbt alla uppgifter efter status
- Först och främst, starta Outlook VBA-redigeraren genom att hänvisa till “Hur du kör VBA-kod i din Outlook".
- Aktivera sedan referensen till "MS Excel Object Library" samt "MS Scripting Runtime" i VBA-redigeraren enligt "Hur man lägger till en objektbiblioteksreferens i VBA".
- Kopiera sedan följande kod till en oanvänd 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
- Klicka sedan på den första underrutinen och tryck på “F5” -tangenten.
- När ett makro är klart kommer ett nytt Excel-kalkylblad att visas, som skärmdumpen nedan. Den innehåller antalet uppgifter i olika statuser.
Akta dig för fallgropar kring Outlook
Det finns en stor mängd risker kring Outlook, inklusive virus, mänskliga fel, programvarufel såväl som maskinvarufel, etc. Om du inte vill förlora dina värdefulla Outlook-data måste du vara försiktig hela tiden. Enkelt uttryckt ska du aldrig ladda ner okända bilagor eller misstänkta länkar i e-postmeddelandena. Dessutom, om möjligt, är det lämpligt att ha ett anmärkningsvärt Outlook fix-verktyg, som DataNumen Outlook Repair, i närheten, istället för att helt förlita sig på verktyg för reparation av inkorgen.
Författarintroduktion:
Shirley Zhang är expert på dataåterställning DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive återhämta sql och Outlook-programvara för reparationsprogramvara. För mer information besök www.datanumen.com


