2012-09-28 19 views
6

私はこのコードを使用して、ある程度VBAを使用している:Outlookの[To]フィールドからどのように電子メールアドレスを抽出しますか?

Sub ExtractEmail() 
Dim OlApp As Outlook.Application 
Dim Mailobject As Object 
Dim Email As String 
Dim NS As NameSpace 
Dim Folder As MAPIFolder 
Set OlApp = CreateObject("Outlook.Application") 
' Setup Namespace 
Set NS = ThisOutlookSession.Session 
' Display select folder dialog 
Set Folder = NS.PickFolder 
' Create Text File 
Set fs = CreateObject("Scripting.FileSystemObject") 
Set a = fs.CreateTextFile("c:\mydocuments\emailss.txt", True) 
' loop to read email address from mail items. 
For Each Mailobject In Folder.Items 
    Email = Mailobject.To 
    a.WriteLine (Email) 
Next 
Set OlApp = Nothing 
Set Mailobject = Nothing 
a.Close 
End Sub 

しかし、これは電子メールアドレスではなく"[email protected]"と実際の電子メールアドレスの名前として出力を提供します。

電子メールアドレスを許可するメールオブジェクトの属性はありますか?'To'テキストボックスから名前を書き込むことはできません。

おかげ

答えて

10

は、あなたがアドレスを取得できるようにする必要があり、あなたのメールアイテムのために受信者コレクションオブジェクトをチェックアウト:http://msdn.microsoft.com/en-us/library/office/ff868695.aspx探し


アップデート2017年8月10日

をこの答えに戻って、私はどこかにリンクして、少しだけ詳しい情報を提供しないことで、悪いことをやったことに気付きました。ここで

は、上記のMSDNのリンクは、受信者オブジェクトをどのように示すことは、電子メールアドレスを取得するために使用することができることから、コードスニペット(スニペットは、VBAにある)です。

Sub GetSMTPAddressForRecipients(mail As Outlook.MailItem) 
    Dim recips As Outlook.Recipients 
    Dim recip As Outlook.Recipient 
    Dim pa As Outlook.PropertyAccessor 
    Const PR_SMTP_ADDRESS As String = _ 
     "http://schemas.microsoft.com/mapi/proptag/0x39FE001E" 
    Set recips = mail.Recipients 
    For Each recip In recips 
     Set pa = recip.PropertyAccessor 
     Debug.Print recip.name &; " SMTP=" _ 
      &; pa.GetProperty(PR_SMTP_ADDRESS) 
    Next 
End Sub 
+1

おかげで、あまりにも非常にタイムリーな私がまさに必要たくさんと – surfer190

+0

非常に便利な投稿です! – Neophile