Om du lagrar skickade e-postmeddelanden i flera mappar och nu vill räkna alla dessa skickade mejl per månad kan du läsa den här artikeln. Här kommer vi att introducera ett betydligt snabbt sätt att få det.
Föregående artikel - “Hur man snabbt räknar inkommande e-post efter datum, månad eller år via Outlook VBA”Har delat ett sätt att räkna e-postmeddelanden per månad. Det kan dock bearbeta e-postmeddelandena i en mapp. Om du vill räkna e-postmeddelanden i flera eller till och med alla e-postmappar bör du använda de andra medlen. Således kommer vi i det följande att avslöja ett annat mycket snabbare sätt för dig.
Räkna de skickade e-postmeddelandena efter månad
- Till att börja med, öppna Outlook VBA-redigeraren via “Alt + F11”.
- Aktivera sedan referens till “MS Excel Object Library ”enligt”Hur man lägger till ett objekt Library Referens i VBA".
- Därefter placerar du följande VBA-kod i ett projekt eller en modul.
Dim objDictionary As Object
Sub CountSentMailsByMonth()
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 varMonths As Variant
Dim varItemCounts As Variant
Dim nLastRow As Integer
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objInbox = Outlook.Application.Session.GetDefaultFolder(olFolderInbox)
'Get the default Outlook data file
Set objOutlookFile = Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Parent
For Each objFolder In objOutlookFile.Folders
If objFolder.DefaultItemType = olMailItem Then
Call ProcessFolders(objFolder)
End If
Next
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = True
Set objExcelWorkbook = objExcelApp.Workbooks.Add
Set objExcelWorksheet = objExcelWorkbook.Sheets(1)
With objExcelWorksheet
.Cells(1, 1) = "Month"
.Cells(1, 2) = "Count"
End With
varMonths = objDictionary.Keys
varItemCounts = objDictionary.Items
For i = LBound(varMonths) To UBound(varMonths)
nLastRow = objExcelWorksheet.Range("A" & objExcelWorksheet.Rows.Count).End(xlUp).Row + 1
With objExcelWorksheet
.Cells(nLastRow, 1) = varMonths(i)
.Cells(nLastRow, 2) = varItemCounts(i)
End With
Next
objExcelWorksheet.Columns("A:B").AutoFit
End Sub
Sub ProcessFolders(ByVal objCurFolder As Outlook.Folder)
Dim i As Long
Dim objMail As Outlook.MailItem
Dim strMonth As String
For i = objCurFolder.Items.Count To 1 Step -1
If objCurFolder.Items(i).Class = olMail Then
Set objMail = objCurFolder.Items(i)
'Change to your own email address
If objMail.SenderEmailAddress = "you@datanumen.com" Then
strMonth = Format(Year(objMail.SentOn) & "-" & Month(objMail.SentOn), "YYYY/MM")
If objDictionary.Exists(strMonth) Then
objDictionary(strMonth) = objDictionary(strMonth) + 1
Else
objDictionary.Add strMonth, 1
End If
End If
End If
Next
End Sub
- Flytta sedan markören till den första underrutinen.
- Tryck sedan på “F5” för att utlösa detta makro.
- Omedelbart kommer en Excel-fil att dyka upp, som innehåller antalet skickade e-postmeddelanden varje månad, som visas i figuren nedan.
Var inte panik inför korruption i Outlook
Du kanske tenderar att vara orolig när du stöter på PST-skador. Men i själva verket borde du lugna dig så snart som möjligt. Som vi alla vet är panik hjälplös och till och med leder till mer kaotiska och allvarliga problem. Du bör hålla dig lugn för att överväga åtgärder, som att tänka på om du har uppdaterat säkerhetskopiering och överväga hur du gör reparera PST - huruvida man använder tredjepartsverktyg som DataNumen Outlook Repair eller kontakta relevanta yrkesverksamma.
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 reparera mdf och Outlook-programvara för reparationsprogramvara. För mer information besök www.datanumen.com

