13

このコードを使用して、VBAをある程度使用しています。

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

ただし、これにより、実際の電子メール アドレスではなく、電子メール アドレスの名前として出力が得られます"something@this.domain"

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

ありがとう

4

5 に答える 5

20

メールアイテムのRecipientsコレクションオブジェクトを確認してください。これにより、アドレスを取得できるようになります:http: //msdn.microsoft.com/en-us/library/office/ff868695.aspx


2017年8月10日更新

この答えを振り返ってみると、どこかにリンクするだけで、もう少し情報を提供しないことで悪いことをしたことに気づきました。

上記のMSDNリンクのコードスニペットを次に示します。これは、Recipientsオブジェクトを使用して電子メールアドレスを取得する方法を示しています(スニペットは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 
于 2012-09-28T14:42:24.183 に答える