Как получить доступ к папкам Outlook по умолчанию в iCloud с помощью Visual Basi c VB.Net - PullRequest
0 голосов
/ 03 марта 2020

Это мой самый первый пост, и я не специалист по программированию, как скоро станет очевидно. Пожалуйста, будьте осторожны.

Я создал программу (с использованием Visual Basi c 2010 express), которая, среди прочего, заполнила бы текстовое поле "Заметками" / "Тело" контакта, которого я выберите на основе значения "CustomerID" каждого контакта в Outlook.

Он отлично работает для стандартной "Контакты" и ее подпапки "Contacts-SubCategory" в группе Outlook "Мои контакты", показанной здесь: введите описание изображения здесь , используя следующий код (код включает элементы календаря / встреч, я думаю, что я могу адаптировать синтаксическое решение для контактов, чтобы их можно было игнорировать, я надеюсь):

Public Class CustomOutlookInterface2
Private SQL As New DatabaseControl

Private ol As New Outlook.Application
Private olns As Outlook.NameSpace = ol.GetNamespace("MAPI")

Private olContactFolder As Outlook.MAPIFolder = olns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts).Folders("Contacts-SubCategory")
Private olCalendarFolder As Outlook.MAPIFolder = olns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar)

Private olContactItems As Outlook.Items = olContactFolder.Items
Private NewContact As Outlook.ContactItem
Private AppointmentItem As Outlook.AppointmentItem

Однако Недавно я загрузил «iCloud для Windows», чтобы все синхронизировалось, и заметил, что он добавил новую группу в Outlook под названием «iCloud» и переместил записи контактов во вновь созданные «Контакты в iCloud» и «Контакты-подкатегория в iCloud» ( показано на том же рисунке выше). Я предпринял множество попыток адаптировать предыдущий рабочий код для направления его в папку iCloud. Самое близкое, что я получил, это ...

    Private ol As New Outlook.Application
Private olns As Outlook.NameSpace = ol.GetNamespace("MAPI")

Private olContactFolder As Outlook.MAPIFolder = olns.Folders.Item("iCloud")

Вышеуказанное не вызывает ошибки. Но это также приводит к тому, что «строка не найдена», когда я использую следующее

    Dim query As String = "[CustomerID]='" & CustID & "'"

    NewContact = olContactItems.Find(query)

, где «запрос» - это номер, назначенный контакту и сохраненный в поле «Идентификатор клиента»

Основываясь на плоских пятнах на лбу от удара головой о стол, я думаю, что все сводится к синтаксису идентификации группы iCloud, затем к папке «Контакты в iCloud», а затем к подпапке «Контакты-подкатегория в iCloud». В windows эквивалентном пути "iCloud \ Contacts в iCloud \ Contacts-SubCategory в iCloud \

Я не могу сказать вам, насколько я буду благодарен за любую помощь. Мой стол угрожает вызвать полицию для всех головные удары, которые я дал.

1 Ответ

0 голосов
/ 04 марта 2020

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

В Outlook экран контактов выглядит следующим образом: введите описание изображения здесь

Моя ошибка была не понимая, что когда iCloud для Windows создал папку iCloud, он также создал «Подкатегорию контактов» в качестве подпапки «Контакты» (она не выглядит как подпапка). Кроме того, суффикс «… в iCloud», показанный в Outlook, НЕ является частью имени, необходимого для идентификации папки в коде. Код, который работал для меня для детализации папки «… SubCategory», был:

Private olContactFolder As Outlook.MAPIFolder = olns.Folders.Item("iCloud").Folders("Contacts").Folders("Contacts-SubCategory")

Без суффикса «... в iCloud», который появляется в Outlook. Я надеюсь, что это поможет любым другим неопытным людям, таким как я. Я достаточно пострадал, пытаясь решить эту проблему как ладья-самоучка ie. Надеюсь, вы быстро нашли этот пост, прежде чем сдаться, как я почти сделал.

...