#vba #outlook
Вопрос:
Я делаю небольшую программу для удаления серии сообщений электронной почты/человека из csv-файла «delete.csv», который содержит имя,фамилию, адрес электронной почты
Мне нужно удалить всех этих людей как из списка контактов, так и из списка рассылки, это работает для контакта, но не работает для списка рассылки.
вот фрагмент кода, который я использую
IF oItem:Class == olDistributionList
oDistList := oContactItems:item( jj )
//MsgInfo( oDistList:Class ) --> 69 = DistList
nCount2 := oDistList:MemberCount
//MsgInfo( nCount2 ) --> 3
//MsgInfo( oDistList:DLName ) --> A. Kitchen
//MsgInfo( oDistList:GetMember( 1 ):Name ) --> email
FOR kk := 1 TO nCount2
oMember := oDistList:GetMember( kk ) // --> oRecipient
cDistListItemName := oDistList:GetMember( kk ):Name
//MsgInfo( Lower( cDistListItemName ) CRLF cEmail )
IF Lower( cDistListItemName ) == Lower( cEmail )
MsgInfo( "Matched " cEmail )
//oMember:Delete()
oDistList:GetMember( kk ):Delete() // does not work
ENDIF
NEXT
oDistList:Save() // Still does not delete member
ENDIF
открыв outlook, я вижу, что все контакты в файле csv были удалены, но ни одна запись в списке рассылки не была удалена, также программа не показывает никаких ошибок и завершается нормально
Чего мне не хватает, чтобы это сработало.
Я добавил вызов oDistList:Save (), но по-прежнему ничего не изменилось, ни один участник из списка рассылки не удален.
После повторного прочтения документации Microsoft по адресу https://docs.microsoft.com/en-us/office/vba/api/outlook.distlistitem
Я видел метод RemoveMember
Теперь все работает с использованием следующего кода
IF oItem:Class == olDistributionList
oDistList := oContactItems:item( jj )
//MsgInfo( oDistList:Class ) --> 69 = DistList
nCount2 := oDistList:MemberCount
//MsgInfo( nCount2 ) --> 3
//MsgInfo( oDistList:DLName ) --> A. Cuisine
//MsgInfo( oDistList:GetMember( 1 ):Name ) --> email
FOR kk := 1 TO nCount2
oMember := oDistList:GetMember( kk ) // --> oRecipient
cDistListItemName := oDistList:GetMember( kk ):Name
//MsgInfo( Lower( cDistListItemName ) CRLF cEmail )
//MsgInfo( Str( Len( AllTrim( cDistListItemName ) ), 3, 0 ) " " Str( Len( AllTrim( Lower( cEmail ) ) ), 3, 0 ) )
IF AllTrim( Lower( cDistListItemName ) ) == AllTrim( Lower( cEmail ) )
MsgInfo( "Matched " cEmail " " oDistList:DLName )
oDistList:RemoveMember( oMember )
EXIT
ENDIF
NEXT
oDistList:Save()
ENDIF
Комментарии:
1. Вы звоните в oDistList. Сэкономить потом?