我对 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
我最终找到了一种方法来使其工作,通过使用遇到与 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