【OUTLOOK2007】VBAを使用して送信済みメールの宛先メールアドレスを取得する方法

このQ&Aのポイント
  • OUTLOOK2007を使用して送信済みメールの宛先のメールアドレスを取得する方法について教えてください。
  • VBAを使用してOUTLOOK2007の送信済みメールの宛先メールアドレスを取得する方法について教えてください。
  • OUTLOOK2007で送信済みメールの宛先を取得するVBAのコードを教えてください。
回答を見る
  • ベストアンサー

【OUTLOOK2007】VBAを使用して送信済みメールの宛先メールア

【OUTLOOK2007】VBAを使用して送信済みメールの宛先メールアドレスを取得したい OUTLOOK2007を使用しています。 以下のVBAを使用して、送信済みメールの宛先の"メールアドレス"を取得しようと 考えています。 Sub getTo() Set myFolder = Application.ActiveExplorer.CurrentFolder For Each myItem In myFolder.Items debug.print myItem.To Next myItem End Sub 送信済みメールフォルダを選択し、上記VBAを実行すると、 狙い通り宛先(myItem.Toの値)は取得できるのですが、 宛先がメールアドレス(例:suzuki@**.com)ではなく、 名前(例:鈴木)になってしまっているメールに関しては、 myItem.Toの値も“メールアドレス”ではなく名前になってしまいます。 どなたか、ご存知でしたら、 確実に宛先のメールアドレスを取得する方法をご教示いただけますでしょうか。 何卒、お願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.1

私はOutlook2003環境なので、2007では動作確認できていませんが…。  myItem.To とする代わりに  myItem.Recipients(1).Address のようにすれば、受信者(宛先)のアドレスを取れると思います。 以下蛇足。 ●Toに複数のアドレスが設定されていた場合… Toプロパティはセミコロンで区切った単一のStringを返しますが Recipientsプロパティはコレクションを返すので 総ての宛先を取得するには、Recipientsコレクションを回してやる必要があります。 '---↓ タトエバ ↓---------------------------------------- Sub getRecp()  Set myFolder = Application.ActiveExplorer.CurrentFolder  For Each myItem In myFolder.Items   For Each myRecp In myItem.Recipients    Debug.Print myRecp.Address   Next myRecp  Next myItem End Sub '---↑ コンナカンジ ↑------------------------------------ ●ToにあるアドレスとCC,BCCにあるアドレスを区別する必要があるなら… 上記ではToにあるアドレスもCC,BCCにあるアドレスも同様に処理してしまうので Toにあるアドレスのみを取得したい場合は 下記のようにRecipientオブジェクトのTypeプロパティで切り分ける必要があります。 '---↓ タトエバ ↓---------------------------------------- Sub getTo2()  Set myFolder = Application.ActiveExplorer.CurrentFolder  For Each myItem In myFolder.Items   For Each myRecp In myItem.Recipients    If myRecp.Type = olTo Then     Debug.Print myRecp.Address    End If   Next myRecp  Next myItem End Sub '---↑ コンナカンジ ↑------------------------------------ 以上ご参考まで。

saru83
質問者

お礼

_Kyleさん 早速のご回答ありがとうございます。 教えていただいた方法で、ばっちりメールアドレスが取得できました! Recipientsプロパティはコレクションを返す上に、CC、BCCも含まれてしまうなんて、 同じmailItemオブジェクトのメンバでも、Toプロパティとはえらい違いなんですねぇ。 それはともかく、大変勉強になりました。 ありがとうございました。

関連するQ&A

  • Outlook2010のメール書き出しVBAについ

    Outlook2010のメール書き出しVBAを作成しました。 1行目に見出しをいれたいのですがうまく入れられません。 また、800件程度のメールを書きだそうとすると、書き出したエクセルの途中の行に7行くらい空の行が入ってしまいます。 どこをどう直せばよいかよくわからず、 どなたか修正いただけると幸いです。 ---------------------------- Sub メール書き出し日にちのみ() On Error Resume Next Set mySelection = Application.ActiveExplorer.Selection '変更 Set xlApp = CreateObject("Excel.Application") Set myBook = xlApp.Workbooks.Add xlApp.Visible = True With myBook.Worksheets(1) i = 1 For Each MyItem In mySelection '変更 '受信日時 .Cells(i, 1) = MyItem.ReceivedTime '送信者名 .Cells(i, 2) = MyItem.SenderName i = i + 1 Next MyItem End With Set xlApp = Nothing End Sub

  • Outlookの宛先が使用できません

    Microsoft office outlook2003を使用しています。 パソコンの引越しを行ない、archiveとOutlookを古いパソコンから新しいパソコンに移動しました。 新しいパソコンでoutlookを立ち上げてみましたら、受信メール、送信メールはうまく引越しできていましたが、メールの新規作成で宛先を選んだところ、「アドレス一覧を表示できませんでした。・・・移動または削除された・・・可能性」とエラーが出でしまいます。 アドレス一覧はどうしたら開けるのでしょうか。教えてください。

  • Outlookで選択したメールのみ書き出すVBA

    こんにちは。 Outlookで選択したメールのみ書き出すVBAを教えてください。 下記のコードまでは作成ができ、書き出すことには成功しました。 ですが、下記コードだとフォルダ内すべてのメールが書き出しされてしまいます。 選択しているメールのみ書き出すコードに書き換えたいのですが、 どこを変えたらよいかわかりません。 どなたかご教示いただけると幸いです。 ------------------------------------------- Sub メール書き出し() On Error Resume Next Set myMFolder = Application.ActiveExplorer.CurrentFolder Set xlApp = CreateObject("Excel.Application") Set myBook = xlApp.Workbooks.Add xlApp.Visible = True With myBook.Worksheets(1) i = 1 For Each myItem In myMFolder.Items '受信日時 .Cells(i, 1) = myItem.ReceivedTime '受信者名 .Cells(i, 2) = myItem.Recipients(1).Name '件名 .Cells(i, 3) = myItem.Subject '送信者名 .Cells(i, 4) = myItem.SenderName '受信者名 .Cells(i, 5) = myItem.Recipients(1).Addresss i = i + 1 Next myItem End With Set xlApp = Nothing End Sub

  • yahoo の送信メールに宛先アドレスが入らない

    yahooメールを作成し、宛先のアドレスを入れるため to +の+をクリックして出てきた宛先の名前(アドレス)をクリックしても 送信メールのtoにアドレスが入らないため送信できない。どうすればいいのか教えてください。

  • Outlookの 送信済みメール 宛先欄

    会社のメールですが、先日、windows live mail の調子が悪く、outlookに変更したところ 「受信トレイ」の宛先は連絡先の表示名で示されますが、「送信済みトレー」の宛先は メールアドレスになります。 表示名に変更するには どうしたらいいでしょうか?

  • メールの宛先を誤って送信してしまいました。

    メール誤送信をしてしまい、困っています。 スマホ(docomo)からパソコン(ocn)にメールを送付する際に、アドレスを間違って入力し、誤送信してしまいました。 送付先にお詫びのメールを入れるため、配信確認と送信確認の履歴がほしかったので、 パソコン(ocn)からお詫びメールを送信したところ、何度送っても、誤送信した宛先に送れません。 以下のメッセージが表示されています。 Recipient address rejected: *****.ocn.ne.jp (in reply to RCPT TO command) しかたなく、スマホ(docomo)からお詫びメールを送りました。 ここで、疑問なのが、そもそもスマホから誤送信したメールは、実はあて先に届いていないという、ことはあり得るのでしょうか。 スマホの場合、メールが送信されていなくても、上記のようなメッセージがでないようなことはあるのでしょうか。

  • 同じメールを複数の宛先に送信したい

    outlook2010で、同じメール(PDF添付あり)をいくつかの差出人から、複数の宛先に送りたいです。 イメージとしては、新規のメールを作り、toとCCと宛名、差出人アドレスをexcelから差しこむようなものを作りたいのですが、 ワードの差し込みだと添付ができず、差出人も変えられない。 エクセルのVBAも作ってみたのですがシートの画面が入ってしまい、差出人も変えられません。 outlookのマクロは書いたことがないので、いまいちイメージがわかず、、、 他のメーラーを使うことは考えてませんので、outlook,excel,wordでできる範囲のことを教えていただければ、、、

  • Outlookの再送信フォームにてマクロで宛先を取得する方法について

    Outlookの再送信フォームにてマクロで宛先を取得する方法について メールサーバーにEXCHANGE SERVER、メールクライアントにOutlook 2003を利用しています。 TOとCCに社外ドメインのアドレスが含まれていないか送信前にチェックするマクロを作成しました。 通常のメールの送信時には問題なく動作しているのですが、 配信不能のメールを再送信する際にエラーが出ます。 再送信フォームにて、メールの送信前に宛先を取得する方法をご存知の方がいらっしゃれば、 ご回答をお願いいたします。 【ソース】 ThisOutlookSessionにマクロを記述 Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)   Dim i As Integer   For i = 1 To Item.Recipients.Count   ← この行でエラーが出ます。     With Item.Recipients.Item(i)     ~ 省略 ~     End With   Next End Sub 【エラーメッセージの内容】 実行時エラー '438': オブジェクトは、このプロパティまたはメソッドをサポートしていません。

  • Outlook Expressをはじめ、ヤフーメールなどに私のメールア

    Outlook Expressをはじめ、ヤフーメールなどに私のメールアドレスではないのに迷惑メールが届きます。どうしてなのでしょうか?届くたびに「送信者を禁止する」設定をするのですが毎回届きます。 きまって宛先は同じで届き先は私のメールアドレスです。どうにかできないでしょうか?教えてください。

  • アクセスVBAでメールを送信(複数宛先・添付)

    vbaを使用しメールを送信しようとしております。 以下に記載のように設定をしておりますが、2点設定の方法がわかりかねております。 大変お手数ですが、ご教示いただければ幸いです。 (1)宛先を複数設定したい場合はどのように設定すればよろしいでしょうか。 別々に送るのではなく、宛先にアドレス1、アドレス2を設定し1通のメールで送信をしたいです。 (2)添付ファイルを複数添付したいのですが、宛先によって添付ファイルの数が異なります。 たとえば、宛先Aには添付ファイルが1,2があるが、Bには添付ファイル1のみであり添付ファイル2フィール付度はNULLです。 この場合、エラーになってしまうのですが、"添付ファイルフィールドがnullでも無視してそのまま送信する"と設定はできるのでしょうか。 --------------------------------------- テーブル名:テーブル1 フィールド:アドレス1、アドレス2、件名、本文、添付ファイル1、添付ファイル2 --------------------------------------- Sub SAMPLE_0216() Dim db As DAO.Database Dim R1 As Recordset Dim AP As Object Dim ML As Object Dim L1 As String Set db = CurrentDb Set R1 = db.OpenRecordset("テーブル1") Set AP = CreateObject("Outlook.Application") R1.MoveFirst Do Until R1.EOF 'メールを作成 Set ML = AP.createitem(0) 'アドレスをセット ML.To = R1!アドレス1 '件名をセット ML.Subject = R1!件名 '本文をセット ML.Body = R1!本文 'ファイルを添付1 L1 = R1!添付ファイル1 ML.Attachments.Add L1 'ファイルを添付2 L1 = R1!添付ファイル2 ML.Attachments.Add L1 'メールを送信 ML.Send R1.MoveNext Loop End Sub ----------------------------------------- どうぞよろしくお願いいたします。

専門家に質問してみよう