ОШИБКА: 2020.05.26 — с момента последнего обновления Microsoft код не работает при настройке правил как «Через указанную учетную запись».
Когда он ударит
Set olRule = olRules.Item(i)
он выдает:
Ошибка времени выполнения '-2146664191 [800c8101]
Private Function FindRule(strRuleName As String) As Boolean
'error handler
On Error GoTo ErrorHandler
'default process boolean to failed
FindRule = False
'open rules object
Set olRules = Outlook.Application.Session.DefaultStore.GetRules
'loop through rules to see if the rule is in the rules list
If olRules.Count = 0 Then
'no rules, so it can't exist
FindRule = False
Else
'check the list of rules
'For i = olRules.Count To 1 Step -1
For i = 1 To olRules.Count
Set olRule = olRules.Item(i)
If olRule.Name = strRuleName Then
FindRule = True
Exit For
End If
Next i
End If
'rule not found. let folks know
If FindRule = False Then
Err.Raise 60001, "Rule Error", "Rule not found!"
End If
ExitFunction:
'skip error handler
Exit Function
ErrorHandler:
'display error
MsgBox Err.Description, vbExclamation + vbOKCancel, "FindRule - Error: " & CStr(Err.Source)
'clear error
Err.Clear
'return failed boolean
FindRule = False
End Function
OnError Resume Next
не позволяет продолжить выполнение.
Удаление правила «Через указанную учетную запись» позволяет выполнить код.
Ошибка E_ACCT_NOT_FOUND
. Это означает, что аккаунт, на который ссылается правило, больше не существует. Отредактируйте правило и наведите его вправо.
счет.
Я думаю, вы упускаете мою мысль: правила ссылаются на учетные записи по идентификатору учетной записи. Если учетная запись была удалена, а затем создана заново, идентификатор учетной записи будет другим (даже если учетная запись имеет то же имя и все остальные свойства). Попробуйте отредактировать это правило и сбросить учетную запись, на которую оно ссылается.
Спасибо за последующую информацию. У этого человека есть три аккаунта. Я попробовал каждую из учетных записей и получил одну и ту же «ошибку автоматизации». Я также попробовал одну из своих учетных записей, и код не работает в том же месте.
Я удалил два правила для «указанной учетной записи», и код запускается. Я заново создал новое правило «указанной учетной записи» с другой учетной записью, и ошибка возвращается. Я не уверен, как «сбросить учетную запись, на которую он ссылается». Нужно ли как-то пытаться исправить правила? Например, удалить и заново создать правила? У меня есть код, позволяющий сделать это для всех, кроме правил «указанной учетной записи».
РЕШЕНО!
Я нашел ответ по адресу https://community.spiceworks.com/t/getting-runtime-error-2147467229-80004023-in-excel-vba-macro/743482
Решением было удалить ключ реестра: Computer\HKEY_CLASSES_ROOT\WOW6432Node\CLSID{0006F03A-0000-0000-C000-000000000046}.
Аккаунт действителен и получает электронную почту без проблем. Я думаю, что это связано не столько с учетной записью, сколько с частью правила «только на этом компьютере». Его нельзя снять, и он автоматически проверяется, когда установлен флажок «из указанной учетной записи».