#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
Предположительно, в вашем цикле, который отправляет письма, вы можете проверить, существует ли адрес, сначала запустив его в этой функции, и, если это не так, выделите адрес.
Я не тестировал этот код, поскольку у меня нет макроса для отправки писем, и если вам нужна помощь, включающая что-либо в то, что у вас есть, вам нужно поделиться кодом, который вы используете.