1
Код ниже не учитываются категории от конкретного дня должным образом:Counting категории в Outlook, с помощью VBA макросов
Sub HowManyEmails()
Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder
Dim EmailCount As Integer
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
On Error Resume Next
Set objFolder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
EmailCount = objFolder.Items.Count
MsgBox "Number of emails in the folder: " & EmailCount, , "email count"
Dim dateStr As String
Dim myItems As Outlook.Items
Dim dict As Object
Dim msg As String
Dim oDate As String
Set dict = CreateObject("Scripting.Dictionary")
oDate = InputBox("Date for count (Format D-M-YYYY")
Set myItems = objFolder.Items.Restrict("[Received] >= '" & oDate & "'")
myItems.SetColumns ("Categories")
For Each myItem In myItems
dateStr = myItem.Categories
If Not dict.Exists(dateStr) Then
dict(dateStr) = 0
End If
dict(dateStr) = CLng(dict(dateStr)) + 1
Next myItem
msg = ""
For Each o In dict.Keys
msg = msg & o & ": " & dict(o) & vbCrLf
Next
MsgBox msg
Set objFolder = Nothing
Set objnSpace = Nothing
Set objOutlook = Nothing
End Sub
Когда вы пишете дату, выход только категории и письма подсчитывать, которые не соответствуют выбранной Дата. Я совершенно не знаком с vba, так что, может быть, вы могли бы рассказать мне, как это можно исправить? Спасибо за помощь!
Ну еще, когда вы выбираете дату, она также выдает сообщение со следующего дня. Я просмотрел аналогичный код, и он работает одинаково, поэтому я не знаю, можно ли его исправить. В любом случае, спасибо @niton! – Kuba
Или, может быть, можно просто читать категории только с сегодняшнего дня, не записывая дату? – Kuba
Разве вы не понимаете, что> = может быть =? Установите myItems = objFolder.items.Restrict ("[Received] = '" & oDate & "'") – niton