• ベストアンサー
  • すぐに回答を!

【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の値も“メールアドレス”ではなく名前になってしまいます。 どなたか、ご存知でしたら、 確実に宛先のメールアドレスを取得する方法をご教示いただけますでしょうか。 何卒、お願い申し上げます。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数2581
  • ありがとう数6

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

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

私は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 '---↑ コンナカンジ ↑------------------------------------ 以上ご参考まで。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

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

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

  • 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で選択したメールのみ書き出す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

  • メールを送信するときの宛先について・・・。

     メールを送信するとき、今まで打った宛先だと宛先を入れるところの空白部をダブルクリックしたらズラズラと今まで送ったメールアドレスが出てきますよね?それが出るのと出ないのがあるのですが、全部出すにはどうしたらいいのでしょうか?困っています教えてください。

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

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

  • outlook送信したい

    outlookたぶん2007を使っていて ".@"を使っている人にメールを送るためにヤフーメールでメールアドレスを取得しPOP設定をしましたがoutlookでは送信できません。受信はできます。 ためしに".@"を使ってない人にoutlookで送ってみたら送れました。 私としてはoutlookで送信もしたいのですがどうすればいいでしょう?

  • 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': オブジェクトは、このプロパティまたはメソッドをサポートしていません。

  • VBAでメール送信(CDO)

    お世話になります ExcelのVBAでCDOを使用してメールの送信を行おうとしております Excelファイルを配り、Excel内のアンケートに答えていただいた 後にVBAで作成したメール送信ボタンを実行すると、指定先にメール を送るということを考えております ただ、ソース内でSMTP情報と相手のメールアドレスの設定をしないと いけないのですが、この2点をどのようにVBAを使用して設定すれば良いの かが分かりません。そもそも出来るのかもわからないのですが ご存知の方可能なのであれば取得方法をご教授頂きたいと思います

  • エクセルでメールの宛先に送信ができません。

    ソニーのVGN-SZ74Bを使用しています。Outlook、Excelともに2007です。 エクセルをシートとして送信したいのですが、「Excelのオプション」より、ユーザー設定→コマンドの選択をすべてのコマンド→メールの宛先に送信を追加→OKにて、クイックアクセスツールバーに「メールの宛先に送信」の模様が出てきたのですが、クリックできません。 クリックできるようにするにはどうすれば良いでしょうか。ちなみにインターネットオプションのプログラムは、Outlookになっております。 教えてください。宜しくお願いいたします。

  • 送信者・宛先・内容無しのメールについて

    プロバイダーのメールアドレスに 「送信者・宛先・メール内容ナシのメール」が毎日のように頻繁に送られてきます。 ヘッダ表示すると、各メールごとに送信者(メールアドレス)が違うようです。(プロバーイダーも各メールごとに異なる) これはいったい何でしょうか?