Excel マクロからメールを送信する際に送信アカウントを指定する方法


コメントにて以下のご要望をいただきました。


初歩的な質問で申し訳ありません。
  小生の環境は、Windows10/Office365です。
Excel VBAは趣味として長くやっており、また、Excel VBAからOutlookでの送信も行ったことが多数あります。

質問内容は以下の通りです。
Outlookで2つのアドレス”A@Outlook.jp”と”B@Outlook.jp”を持っており、”A@Outlook.jp”が元々あったアドレスです。
”A”は個人用に使っており、ボランティアとして参加している団体との送受信用に”B”を使いたいと考えています。
Excel VBAから差出人を”B@Outlook.jp”としてメールを送信したいのですが、”.Save”で下書きを作り、プルダウンで差出人を切り替えて送信することはできるのですが、どうせなら直接”B”から”.Send”で送信したいと思っております。.Senderとか.SendUsingAccount、.SentOnBehalfOfNameを試しているのですが、いまいち上手くいきません。どうしたらよいのか、お教えください。
また、その際、表示される名前も”????”ではなく、指定する表示名で相手先に送信したいと思っています。何かいい方法はないでしょうか?


送信の際のアカウントを指定するには、「特定の受信者に送信する際に自動的に送信アカウントを変更するマクロ」で紹介した SendUsingAccount を使うのですが、上記のマクロと同じやり方を Excel などでやろうとするとエラーが発生してしまいます。
というのも、このマクロは Outlook 上で使用することを前提としており、省略されている記述があるためです。
このマクロのアカウントの取得は Session.Accounts(アカウント名) という記述を使っていますが、これを Outlook 以外の環境で使用する場合は、Session.Accounts.Item(アカウント) というように記述する必要があるのです。
以下は Excel など Outlook 以外のアプリケーションのマクロからアカウントを指定してメールを送信するマクロのサンプルです。

' ここをトリプルクリックでマクロ全体を選択できます。

Public Sub SendUsingAccountFromExcel()
    Const SEND_ACCOUNT = "sender@example.com"
    Const SEND_TO_ADDRESS = "to@example.com"
    Const MAIL_SUBJECT = "テスト メッセージ"
    Const MAIL_BODY = "Excel から送信しました。"
    Dim olkApp
    Dim objItem
    Dim acctToSend
    ' Outlook のオブジェクトを取得
    Set olkApp = CreateObject("Outlook.Application")
    ' メールアイテムを作成
    Set objItem = olkApp.CreateItem(0)
    ' 宛先、件名、本文を指定
    objItem.To = SEND_TO_ADDRESS
    objItem.Subject = MAIL_SUBJECT
    objItem.Body = MAIL_BODY
    ' 送信アカウントを取得
    Set acctToSend = olkApp.Session.Accounts.Item(SEND_ACCOUNT)
    ' 送信アカウントを指定
    Set objItem.SendUsingAccount = acctToSend
    ' メールを送信
    objItem.send
End Sub

マクロの登録方法やメニューへの追加について

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中