尝试通过从全局地址簿中选择地址来在用户表单中设置标签标题

问题描述 投票:0回答:1

我对 VBA 很陌生,我正在努力解决一些我认为应该很简单的事情。 在 Outlook 用户表单中,我想使用从全局地址列表中选择的电子邮件地址为标签(“CourrielSup”)添加标题。

我尝试使用微软知识库中的 SelectNamesDialog.Display 方法来访问全局地址簿。就这样,当我单击命令按钮“ListeAdresse”时,会弹出显示地址簿的对话框。 不过,我无法找到一种方法让所选的电子邮件地址成为我的标签的标题。 考虑到我有多环保,我正在尝试随机的事情来看看它是否有效,但我很困惑,而且我找不到在线资源来帮助我实现目标。 这是我的非功能代码:

Private Sub ListeAdresse_Click()
 Dim Courriel As String
 Dim oDialog As SelectNamesDialog
 Set oDialog = Application.Session.GetSelectNamesDialog
 With oDialog
 .InitialAddressList = Application.Session.GetGlobalAddressList
 If .Display Then
    CourrielSup.Caption = .Recipients
 End If
 End With
End Sub
vba outlook userform
1个回答
0
投票

我最终找到了一种方法来使其工作,通过使用遇到与 SelectNamesDialog.Display 相关的另一个问题的人的一些行来制作弗兰肯代码。 我完全意识到生成的代码非常难看。如果有人好心地帮助我让它变得漂亮,或者向我解释我最初所做的代码之间的逻辑差异,我会很兴奋。

Private Sub ListeAdresse_Click()

 Dim EmailAddress As String
 Dim myAddrEntry As AddressEntry
 Dim exchUser As Outlook.ExchangeUser
 Dim oDialog As SelectNamesDialog
 Set oDialog = Application.Session.GetSelectNamesDialog
 
 With oDialog
 .InitialAddressList = Application.Session.GetGlobalAddressList
 .ShowOnlyInitialAddressList = True

        If .Display Then

          AliasName = oDialog.Recipients.Item(1).Name

            Set myAddrEntry = Application.Session.GetGlobalAddressList.AddressEntries(AliasName)
            Set exchUser = myAddrEntry.GetExchangeUser

            If Not exchUser Is Nothing Then
               EmailAddress = exchUser.PrimarySmtpAddress

            End If
            CourrielSup.Caption = EmailAddress
   End If
    End With
Set olApp = Nothing
Set oDialog = Nothing
Set oGAL = Nothing
Set myAddrEntry = Nothing
Set exchUser = Nothing

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.