Добрый день. Хочу найти ответы на все разосланные письма в Outlook. Но выдает ошибку Invalid procedure call of argument С вызовом Outlook раньше не работал, поэтому пока не понял в чем ошибка. Подскажите,пожалуйста, из-за чего возможно возникновение данной ошибки.
Код
Sub Poiskpisem()
Dim i As Integer
Dim oOutlook As Object, oItems As Object, oMsg As Object
Set oOutlook = CreateObject("Outlook.Application")
Set oItems = oOutlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
If oItems.Count > 0 Then
For i = 2 To Cells(1, 1).End(xlDown).Row
For Each oMsg In oItems
If oMsg.Subject = "RE: " & Cells(i, 3).Value Then
Cells(i, 6) = 1
oItems.GetNext
End If
Next oMsg
Next i
End If
End Sub
'Удаленные ==> GetDefaultFolder(3)
'Исходящие ==> GetDefaultFolder(4)
'Отправленные ==> GetDefaultFolder(5)
'Входящие ==> GetDefaultFolder(6)
Public Function MassPattern(ByVal GetDefaultFolder%, ByVal Pattern$)
Dim objOutlApp As Object, oMail As Object
Dim m(), i%, T
Dim IsNotAppRun As Boolean
Application.ScreenUpdating = False
'подключаемся к Outlook
On Error Resume Next
Set objOutlApp = GetObject(, "outlook.Application")
If objOutlApp Is Nothing Then
Set objOutlApp = CreateObject("outlook.Application")
End If
i% = 1
For Each oMail In objOutlApp.GetNamespace("MAPI").GetDefaultFolder(GetDefaultFolder%).items
If oMail.Subject Like "*" & Pattern$ & "*" Then
ReDim Preserve m(i%)
m(i%) = oMail.Subject & "_" & oMail.CreationTime
'oMail.Delete
Sleep (1)
i% = i% + 1
End If
Next
'Если приложение Outlook было открыта кодом - закрываем
If IsNotAppRun Then
objOutlApp.Quit
End If
Set objOutlApp = Nothing
'возвращаем ранее отключенное обновление экрана
MassPattern= m
Application.ScreenUpdating = True
' End If
End Function
'задержка
Private Function Sleep(TimeSleep As Double)
Dim Chas As Date, Z#, T As Date
Chas = Timer()
Z = Chas + TimeSleep
1:
T = Timer()
DoEvents
If T < Z Then GoTo 1
End Function
Тут конечно не место вопросу ибо к Excel относится это очень слабо. olFolderInbox - это что? Откуда excel узнает что это 6, если это переменная приложение Outlook? Нужно или определить константу или использовать прямо 6.
P.S. Однако перебор всех сообщений - это как то мало эффективно.
Я немного неправильно поставил вопрос,поэтому возникла путаница. У меня в Excel есть таблица с почтой,темой,телом и приложением. И я хочу в еще один столбец добавить был ли ответ или нет. И сделать это с помощью макроса в Excel. Но почему-то все равно не выходи пока что.
mega31, нет путаницы и ivanok_v2, и я все поняли правильно. Конкретно про ошибку я написал, неизвестная переменная равна 0 а он ничего не означает для GetDefaultFolder. Только повторю, все что связывает вопрос Excel это несколько раз употребляемые Cells.