Есть ли способ выделить сбойные ячейки в скрипте Excel VBA?

#excel #vba #email #outlook

#excel #vba #Адрес электронной почты #outlook

Вопрос:

Есть ли способ выделить сбойные ячейки в скрипте Excel VBA? Он отправляет электронное письмо в Outlook, но когда он не может найти соответствующее имя из моего листа в адресной книге Outlook, он просто пропускает эту строку, и ручная проверка не является реальной опцией, поскольку мой лист Excel уже содержит более 500 строк. Могу ли я каким-то образом добавить строку, чтобы выделить эти строки, в которых адрес был неверным?

Комментарии:

1. Без предоставления общего доступа к используемому вами коду очень сложно получить предложение. В противном случае было бы несложно получить предложения по адаптации существующего кода. Я могу помочь, но только в этих обстоятельствах…

2. Вы имеете в виду, что хотите установить цвет фона, например MyCell.Interior.Color = vbYellow ? (предполагая здесь, что myCell является «сбойной» ячейкой, встречающейся в вашей обработке VBA).

Ответ №1:

Быстрый поиск дал мне эту функцию:

 Function CheckAddressExists(eAddress As String) As Boolean
Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim olContactFolder As Outlook.MAPIFolder
Dim olContact As Outlook.ContactItem
Dim olItems As Outlook.Items
Dim bFound As Boolean, bStarted As Boolean
On Error Resume Next

Set olApp = GetObject(, "Outlook.Application")
If Err <> 0 Then
    Set olApp = CreateObject("Outlook.Application")
    bStarted = True
End If

Set olNS = olApp.GetNamespace("MAPI")
Set olContactFolder = olNS.GetDefaultFolder(10)
Set olItems = olContactFolder.Items
For Each olContact In olItems
    bFound = False
    If eAddress = olContact.Email1Address Or _
       eAddress = olContact.Email2Address Or _
       eAddress = olContact.Email3Address Then
        bFound = True
        Exit For
    End If
    Err.Clear
Next olContact
If bFound Then
    CheckAddressExists = True
End If
CleanUp:
If bStarted = True Then
    olApp.Quit
End If
Set olItems = Nothing
Set olNS = Nothing
Set olContactFolder = Nothing
Set olContact = Nothing
End Function
  

Предположительно, в вашем цикле, который отправляет письма, вы можете проверить, существует ли адрес, сначала запустив его в этой функции, и, если это не так, выделите адрес.

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