我是使用VBA和宏的新手,想知道是否有方法在Excel中添加「檢查姓名」功能(類似於Outlook中的功能)。我正在處理的部分表單需要我輸入員工姓名,我希望能夠點擊一個按鈕以確保我的拼寫正確,並且他們在我們的電子郵件系統中。任何幫助或指針在正確的方向將不勝感激!在Excel中創建「檢查姓名」按鈕
回答
一對夫婦的答案在這裏:
編輯:創建Excel 2010中(不知道是否會在2003年的工作)。
如果名稱可以在Outlook中解析,則第一個將返回TRUE或FALSE。
'----------------------------------------------------------------------------------
' Procedure : ResolveDisplayNameToSMTP
' Author : Sue Mosher - updated by D.Bartrup-Cook to work in Excel late binding.
'-----------------------------------------------------------------------------------
Public Function ResolveDisplayName(sFromName) As Boolean
Dim OLApp As Object 'Outlook.Application
Dim oRecip As Object 'Outlook.Recipient
Dim oEU As Object 'Outlook.ExchangeUser
Dim oEDL As Object 'Outlook.ExchangeDistributionList
Set OLApp = CreateObject("Outlook.Application")
Set oRecip = OLApp.Session.CreateRecipient(sFromName)
oRecip.Resolve
If oRecip.Resolved Then
ResolveDisplayName = True
Else
ResolveDisplayName = False
End If
End Function
第二要解決的名稱,並返回的電子郵件地址:
'----------------------------------------------------------------------------------
' Procedure : ResolveDisplayNameToSMTP
' Author : Sue Mosher - updated by D.Bartrup-Cook to work in Excel late binding.
'-----------------------------------------------------------------------------------
Public Function ResolveDisplayNameToSMTP(sFromName) As String
Dim OLApp As Object 'Outlook.Application
Dim oRecip As Object 'Outlook.Recipient
Dim oEU As Object 'Outlook.ExchangeUser
Dim oEDL As Object 'Outlook.ExchangeDistributionList
Set OLApp = CreateObject("Outlook.Application")
Set oRecip = OLApp.Session.CreateRecipient(sFromName)
oRecip.Resolve
If oRecip.Resolved Then
Select Case oRecip.AddressEntry.AddressEntryUserType
Case 0, 5 'olExchangeUserAddressEntry & olExchangeRemoteUserAddressEntry
Set oEU = oRecip.AddressEntry.GetExchangeUser
If Not (oEU Is Nothing) Then
ResolveDisplayNameToSMTP = oEU.PrimarySmtpAddress
End If
Case 10, 30 'olOutlookContactAddressEntry & 'olSmtpAddressEntry
ResolveDisplayNameToSMTP = oRecip.AddressEntry.Address
End Select
End If
End Function
這裏展示瞭如何使用這兩種功能的測試過程:
Sub Test()
MsgBox ResolveDisplayName("Marty Moesta")
MsgBox ResolveDisplayNameToSMTP("Marty Moesta")
End Sub
此解決方案非常有幫助,謝謝! –
請記住Namespace.CreateRecipient/Recipient.Resolve不會顯示不明確的名稱對話框。 –
我從來沒有考慮過@德米特里 - 我將不得不爲此努力。找到這個鏈接可能指向我的方向 - https://msdn.microsoft.com/en-us/library/bb646055(v=office.12).aspx –
- 1. 如何在Excel中創建姓氏,姓氏的帳戶名稱
- 2. 創建退出按鈕,在Excel中2010
- 3. 在Excel中通過PhpExcel創建按鈕
- 4. VBA在excel中創建動態按鈕
- 5. 創建動態檢查框和按鈕
- 6. Minecraft村民姓名檢查
- 7. TCL:如何創建一個選擇其他檢查按鈕的檢查按鈕
- 8. 在CheckBox檢查後在C#中運行時創建按鈕?
- 9. 檢查用戶名按提交按鈕
- 10. Excel VBA創建命令按鈕
- 11. 在java中創建按鈕
- 12. 在Javascript中創建按鈕
- 13. 在Xcode中創建按鈕
- 14. 創建一個按鈕,創建按鈕
- 15. 創建域名檢查器
- 16. 名姓到姓氏,名字在Excel電子表格
- 17. c#excel在excel工作表上創建一個按鈕
- 18. OpenLayers:創建按鈕來檢查/取消選中所有圖層
- 19. 如何在Excel中給姓氏上色姓名
- 20. excel - 使用第一個姓氏和名字從全名創建用戶名
- 21. 用名字和姓氏查找姓名
- 22. Silverlight的 - 按姓名查找控件(串)
- 23. 按ID和姓名排序查詢
- 24. 如何在excel中創建一個動態按鈕
- 25. 在Google文檔電子表格中創建按鈕,如EXCEL
- 26. 在Excel中創建基於條件標準的打印按鈕
- 27. 創建按鈕
- 28. 創建按鈕
- 29. 創建按鈕
- 30. 在Wordpress中按姓名排序
根據有多少名字,你可以在Excel中使用一個列表(隱藏在您的個人工作簿中?),並使用For循環和IF標誌,如果不在列表中,或者如果不是很多,則可以在VBA中編寫CASE語句。然後,你標誌,如果他們不在'覈准'名單 – Trum
你能不能設計一個前瞻形式查詢集中存儲的Excel數據?這樣你就可以擁有所有的Outlook郵件功能,而且我相信這是更實際的,因爲查詢Outlook名稱需要訪問Outlook的授權(?) – Krishna
您需要在哪裏查看名稱?在Outlook通訊簿或AD? –