Vasudha Dixit Ответов: 1

Получение ошибки “object variable or with block not set” при назначении элемента outlook переменной в VBA


Я пытаюсь извлечь определенные данные из тела письма, но получаю сообщение об ошибке "переменная объекта или с блоком не задана" в строке № 30 Set filteredItemst = Folder.Предметы.Ограничение(strFiltert). Эта строка используется для фильтрации элементов на основе поискового запроса. Та же ошибка возникает даже после удаления фильтра из этого оператора Set filteredItemst = Folder.Предметы

Я не понимаю, что плохого в этом утверждении. Я использовал это же утверждение в других частях своего кода, и оно работало нормально. пожалуйста, помогите мне.

Что я уже пробовал:

Private Sub Inc_Run_Time_Details_Click()

Dim OutlookApp As Outlook.Application
Dim OutlookNamespace As Namespace
Dim Foldert As MAPIFolder
Dim OutlookMail As Variant
Dim filteredItemst As Outlook.Items
Dim strFiltert As String
Dim subj As String
Dim cell As Range
Dim fldrpath As String
Dim currDate As String
Dim incPrgTrck As String
Dim emBody() As String
Dim emailbody As String
Dim warningmail As Variant
Dim extractError As String



Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")

fldrpath = "\\lp99dfd\groups$\Record Extracts\New folder\New folder\" & Format(Date, "yyyymm")
currDate = Format(Date, "yyyymm")
incPrgTrck = fldrpath & "\INC\Progress_Tracker_" & Format(Date, "yyyymm") & "_INC.xlsx"

Set Foldert = OutlookNamespace.GetDefaultFolder(olFolderInbox).Parent.Folders("AI_ZE_RECORD")
strFiltert = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%AIA Record Extract%'"
Set filteredItemst = Folder.Items.Restrict(strFiltert)


Set wkb1 = Workbooks.Open(incPrgTrck)
Set sht1 = wkb1.Sheets(currDate)
filteredItemst.Sort "[ReceivedTime]", True


For Each OutlookMail In filteredItemst
    If OutlookMail.ReceivedTime >= CDate("23-Jul-2020") And OutlookMail.ReceivedTime <= CDate("31-Jul-2020") Then
		subj = Split(OutlookMail.Subject)(3)
		For Each cell In sht1.Range("A2:A28")
			If InStr(cell.Value, subj) > 0 And UCase(cell.Offset(0, 3).Value) <> "SUCCESS" Then
				emailbody = OutlookMail.Body
				emBody = Split(emailbody, vbNewLine)
				For Each warningmail In emBody
					If InStr(warningmail, subj) > 0 Then
						extractError = Split(warningmail, "|")(4) & "|" & Split(warningmail, "|")(5)
						cell.Offset(0, 3).Value = extractError
					End If
				Next warningmail
				Exit For
			End If
        Next cell
    End If
Next OutlookMail

Set Folder = Nothing
Set OutlookNamespace = Nothing
Set OutlookApp = Nothing

End Sub

Richard MacCutchan

Это значит, что одно из ваших заданий не удалось. Используйте отладчик, чтобы выяснить, какой из них и почему.

1 Ответов

Рейтинг:
8

OriginalGriff

Вы это имели в виду Folders или Foldert потому что Folder не объявляется в этом коде.

Set filteredItemst = Folder.Items.Restrict(strFiltert)
                        ^