Я попробовал следующий подход, и .Delete
сработало. Похоже, что с учетом AddressList.AddressEntries Property Returns the AddressEntries collection for the specified object
вам нужно go просмотреть элементы коллекции speci c, чтобы удалить ее.
Sub test()
Dim ae As AddressEntry
For Each ae In Application.Session.AddressLists("your_address_list_name").AddressEntries
Debug.Print ae.Type & "->" & ae.Name & "->" & ae.Address
' this worked:
' ae.Delete
Next
End Sub
Итак, если вы запустите этот код, вы увидит, что при добавлении записи свойство Type
является именем списка адресов, которое, в свою очередь, является именем коллекции.
Обновление
Код ниже также работает правильно, поэтому вы можете удалить его по Item
index:
Debug.Print Application.Session.AddressLists("your_address_list_name").AddressEntries.Item(5)
' the line below deletes an entry
Application.Session.AddressLists("your_address_list_name").AddressEntries.Item(5).Delete
Debug.Print Application.Session.AddressLists("your_address_list_name").AddressEntries.Item(5)
Обновление 2
Вот решение, которое сработало для добавления записи. Он берется из здесь (чтобы получить доступ к определенной коллекции записей списка адресов) и из здесь (чтобы получить необходимые параметры для метода .Add
), но, возможно, это не так уж и элегантно, потому что честно говоря, я не так силен в Outlook vba.
код:
Sub AddEntry()
Dim myNameSpace As NameSpace
Dim myAddressList As AddressList
Dim myAddressEntries As AddressEntries
Set myNameSpace = Application.GetNamespace("MAPI")
Set myAddressList = myNameSpace.AddressLists("your_address_list_name")
Set myAddressEntries = myAddressList.AddressEntries
' Option 1
myAddressEntries.Add Type:="Type", Name:="Name", Address:="Address"
' Option 2 - can be used as independent of declarations line
Application.GetNamespace("MAPI").AddressLists("your_address_list_name").AddressEntries.Add "Type1", "Name1", "Address1"
End Sub