Добавить / удалить адрес для входа в адресную книгу - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь добавить / удалить AddressEntry в / из AddressEntries. Я мог бы удалить первый элемент из AddressEntries со следующим кодом:

Private Sub DoSmth() 
..
Dim AE As Outlook.AddressEntries
..
AE.Item(1).Delete
..
End Sub

Я прочитал документацию Microsoft, но не нашел примера. (https://docs.microsoft.com/en-us/office/vba/api/outlook.addressentries.add).

Может ли кто-нибудь объяснить мне, как добавить AddressEntry в AddressEntries?

1 Ответ

0 голосов
/ 10 января 2020

Я попробовал следующий подход, и .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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...