Привет знающие люди!
Задний план:
Я разрабатываю специальный инструмент слияния почты в MS Word VBA для нашей команды, чтобы у нас была дополнительная функциональность помимо стандартного пакета слияния почты Office Word. Использование сторонних продуктов или надстроек невозможно. Но возможность автоматически прикреплять определенные файлы, настраиваемую строку темы и т. д. сэкономила бы нам много времени и усилий.
Одной из функций является предоставление пользователю возможности выбирать дополнительные учетные записи электронной почты с копией (CC) или скрытой копией (BCC) для добавления к слиянию из нашего корпоративного глобального списка адресов Microsoft Exchange (GAL). Пользователю может потребоваться выбрать несколько учетных записей электронной почты CC или BCC.
Проблема:
Используя предыдущий вопрос и ответ (30918152), я смог позвонить по адресу зарезервируйте глобальный список адресов и настройте метки Кому: / Копия: / Скрытая копия:. Код может получить выбранные учетные записи Exchange в коллекции .Recipients
, но я изо всех сил пытаюсь определить, какие выборки являются CC или BCC.
Я знаю, что Outlook.Recipient.Type
возвращает переменную типа Long, относящуюся к From: / To: / CC: / BCC: Но когда я debug.print 'recipient.type'
всегда возвращает 1, даже когда выбраны CC или BCC.
Кто-нибудь знает, где я ошибаюсь?
Прогресс на данный момент:
Я искал MSDN, выполнял несколько поисковых запросов в Интернете и просматривал такие места, как Stack Overflow, VBOffice.net, но не нашел того, что ищу. Я самоучка, поэтому подозреваю, что моя основная проблема заключается в непонимании страницы MSDN на SelectNamesDialog.Recipients
Код:
Private Sub cmdSetProjectMember1_Click()
' CODE TO SELECT FROM ADDRESS BOOK AND TAKE EMAIL ADDRESS WHEN IT IS AN EXCHANGE USER.
' TAKEN FROM https://stackoverflow.com/questions/30918152/opening-outlook-address-book-from-excel
Dim olApp As Outlook.Application
Dim oDialog As SelectNamesDialog
Dim oGAL As AddressList
Dim myAddrEntry As AddressEntry
Dim exchUser As Outlook.ExchangeUser
Dim TEST_Recipient As Outlook.Recipient
Dim AliasName As String
Dim FirstName As String
Dim LastName As String
Dim EmailAddress As String
Set aOutlook = GetObject(, "Outlook.Application")
Set oDialog = aOutlook.Session.GetSelectNamesDialog
Set oGAL = aOutlook.GetNamespace("MAPI").AddressLists("Global Address List")
With oDialog
.AllowMultipleSelection = True
.InitialAddressList = oGAL
.ShowOnlyInitialAddressList = True
.Caption = "Custom mail merge tool ***** | | ***** SELECT EMAIL FROM ADDRESS BOOK"
.NumberOfRecipientSelectors = olShowToCc
.ToLabel = "Select CC:"
.CcLabel = "Select BCC:"
If .Display Then
AliasName = oDialog.Recipients.Item(1).Name
Set myAddrEntry = oGAL.AddressEntries(AliasName)
Set exchUser = myAddrEntry.GetExchangeUser
If Not exchUser Is Nothing Then
FirstName = exchUser.FirstName
LastName = exchUser.LastName
EmailAddress = exchUser.PrimarySmtpAddress
'MsgBox "You selected contact: " & vbNewLine & _
'"FirstName: " & FirstName & vbNewLine & _
'"LastName:" & LastName & vbNewLine & _
'"EmailAddress: " & EmailAddress
Set TEST_Recipient = oDialog.Recipients.Item(1)
Debug.Print TEST_Recipient.Type
If TEST_Recipient.Type = olCC Then
MsgBox "Carbon Copy"
Else
MsgBox "NOT CC"
End If
End If
End If
End With
Set olApp = Nothing
Set oDialog = Nothing
Set oGAL = Nothing
Set myAddrEntry = Nothing
Set exchUser = Nothing
End Sub
Recipients.Count
, который выведет все детали для каждого пользователя Exchange. Единственная часть, которую я не могу вытащить, это то, выбрал ли пользователь их как CC или BCC. - person SpikeManZombie   schedule 08.06.2020Logon
для входа в определенную учетную запись? - person Eugene Astafiev   schedule 08.06.2020Logon
? - person Eugene Astafiev   schedule 09.06.2020NameSpace.Logon
. Спасибо, что указали мне в этом направлении. Наши корпоративные машины подключены к сети (в настоящее время через VPN через персональный широкополосный доступ, работающий дома) на серверах Exchange, на которых работает Office 365. В информации о продукте указано MS Office Professional Plus 2013. Если я правильно понялLOGON
, потому что Outlook уже работает, я бы не стал необходимо использовать этот метод для инициализации Outlook. Но я собираюсь переписать, чтобы включить и посмотреть, что произойдет - person SpikeManZombie   schedule 09.06.2020LOGON
сработала! Не знаю, почему, но он работает именно так, как нужно. Большое спасибо @Eugene, очень признателен :) - person SpikeManZombie   schedule 09.06.2020