2017-04-19 116 views
1

Forループなしで電子メールアドレスを使用して連絡先のOutlookアドレスボックスを検索する方法はありますか?私たちのグローバル・コンタクト・リストにはたくさんの連絡先があり、リストを通るのは永遠に必要です。連絡先リストに適用できる検索機能や検索機能はありません。Outlookのアドレス帳検索(ルーピングなし)

連絡先リストにユーザーが見つかった場合は、電話番号やオフィスなどの情報を入手したいと考えています。

私が見つけたすべての解決策には、連絡先リストをループすることが含まれます。 http://www.ozgrid.com/forum/showthread.php?t=76588

https://msdn.microsoft.com/en-us/library/office/ff869721.aspx

答えて

0

使用Namespace.CreateRecipient/Recipient.Resolveアドレス帳に名前(またはアドレス)を解決します。 SMTPアドレスを渡しても、一致する場合はGALユーザーに解決されます。

+0

ドミトリー、私は元の質問にこれを置いていなかったと思います。私はユーザーの電子メールを持っており、アドレス帳でそれを探したい。その後、電話番号やオフィスなどの情報を入手します(メインポストを更新しました)。 outlook.recipientの名前の他に情報を抽出できるかどうかはわかりません。 –

+0

もちろん、Recipient.AddressEntryを使用することができます。そこから、AddressEntry.GetExchangeUserまたはAddressEntry.PropertyAccessor.GetPropertyのいずれかを使用してMAPIプロパティを読み取ることができます(OutlookSpyを使用して利用可能なものが表示されます)。 –

+0

ありがとうございます。これは最高です。これは私が必要とするもののために働くはずです。私はそれを完了した後にコードを投稿します。 –

0

これは、Dmitry Streblechenkoアプローチを使用して、グローバルアドレス帳の電子メールアドレスを使用して連絡先の電話番号を取得するためのソリューションです。

Sub GetPhone(EmailAddress As String) 'Gets the phone # for contact 
Dim OutApp As Outlook.Application 
Dim OutMail As Object 
Dim OutRecipients As Outlook.Recipient 
Dim PhoNe As String 


On Error Resume Next 
Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 

Set OutRecipients = OutMail.Recipients.Add(EmailAddress) 
OutRecipients.Resolve 

PhoNe = OutRecipients.AddressEntry.GetExchangeUser.BusinessTelephoneNumber 
Set OutRecipients = Nothing 
Set OutMail = Nothing 
Set OutApp = Nothing 
On Error GoTo 0 
End Sub 
+0

ダミーのメールを作成する理由はまったくありません。 Namespace.CreateRecipient/Recipient.Resolveを使用します。 –

+0

Namespace.CreateRecipientを使って試しましたが、エラーが発生しました。私はそれを楽しむ時間がありませんでした。私は本当に機能的なマクロが必要でした。以前はメールで受信者を解決していたので、そのルートに行ったのです。私はチャンスがあるときに、Namespace.CreateRecipientでもう一度試してみます。 –

関連する問題