Небольшая ошибка в коде VBA для Outlook! - PullRequest
0 голосов
/ 07 июня 2011

Хорошо - это кажется почти завершенным; но небольшая ошибка не позволяет этому счетному коду работать.

Вот код:

  Sub Count2
  Dim objOutlook As Object, objnSpace As Object, objFolder As Object
  Dim Count As Integer
  Set objOutlook = CreateObject("Outlook.Application")
  Set objnSpace = objOutlook.GetNamespace("MAPI")

  Set objFolder = objnSpace.Folders("My Personal Emails").Folders("spam")
  If Err.Number <> 0 Then
    Err.Clear
    MsgBox "No such folder."
    Exit Sub
  End If

  For Each MapiItem In MapiFolderInbox.Messages
  Select Case Weekday(MapiItem.TimeReceived)
    Case vbMonday
      Count = Count + 1
    End Select
  Next MapiItem

  MsgBox "Number of spam messages sent on a Monday: " & Count
End Sub

Вот сообщение об ошибке:

Ошибка времени выполнения '424': Требуется объект

Отладчик выделяет строку:

Для каждого MapiItem в MapiFolderInbox.Messages

Буду признателен за любую помощь!

Ответы [ 2 ]

1 голос
/ 07 июня 2011

Хорошо, вот рабочая версия:

Sub Count2()

Dim i As Integer, Count As Integer
Dim objOutlook As Outlook.Application
Dim objNSpace As Outlook.NameSpace
Dim objFolder As Outlook.Folder

Set objOutlook = CreateObject("Outlook.Application")
Set objNSpace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNSpace.Folders("My Personal Emails").Folders("spam")

Count = 0
For i = 1 To objFolder.Items.count

  If Weekday(objFolder.Items(i).ReceivedTime) = vbMonday Then
    Count = Count + 1
  End If

Next i

MsgBox "Number of spam messages sent on a Monday: " & Count

End Sub
1 голос
/ 07 июня 2011

Редактировать: - кажется, вы хотите посчитать спам-сообщения, судя по последней строке в вашем коде VBA. Использование решения @ sitnik кажется лучшим подходом.

Кажется, что MapiFolderInbox не определен - попробуйте назначить его в папку «Входящие», например:

 Set MapiFolderInbox = objnSpace.Folders("My Personal Emails").Folders("Inbox")

Также см .: Параметр Явный Вкл.

...