Hvis du gemmer sendte e-mails i flere mapper og nu gerne vil tælle alle disse sendte mails pr. Måned, kan du læse denne artikel. Her introducerer vi en betydeligt hurtig måde at få det på.
Den forrige artikel - “Hvordan man hurtigt tæller indgående e-mails efter dato, måned eller år via Outlook VBA”Har delt en måde at tælle e-mails på måned. Det er dog i stand til at behandle e-mails i en mappe. Hvis du vil tælle e-mails i flere eller endda alle mailmapperne, skal du bruge de andre midler. Således vil vi i det følgende udsætte dig for en anden meget hurtigere måde.
Tæl de sendte e-mails efter måned
- Til at begynde med skal du få adgang til Outlook VBA-editor via “Alt + F11”.
- Aktiver derefter henvisning til “MS Excel Object Library ”ifølge“Sådan tilføjes et objekt Library Reference i VBA".
- Derefter skal du sætte følgende VBA-kode i et projekt eller 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
- Flyt derefter markøren ind i den første underrutine.
- Tryk derefter på “F5” for at udløse denne makro.
- Straks vises en Excel-fil, der indeholder antallet af sendte e-mails i hver måned, som vist i nedenstående figur.
Gå ikke i panik over for korruption i Outlook
Du kan have tendens til at være bekymret, når du støder på PST-skader. Alligevel skal du i virkeligheden roligere ned så hurtigt som muligt. Som vi alle ved, er panik hjælpeløs og fører endda til mere kaotiske og alvorlige problemer. Du skal være rolig for at overveje foranstaltninger, f.eks. At overveje, om du har opdateret sikkerhedskopiering, og overveje, hvordan du gør det reparation PST - om man skal ty til tredjepartsværktøj som DataNumen Outlook Repair eller kontakt relevante fagfolk.
Forfatter Introduktion:
Shirley Zhang er ekspert i datagendannelse i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder reparation mdf og Outlook-reparationssoftwareprodukter. For mere information besøg www.datanumen.com

