OutlookでVBAを使用して電子メールを送信するにはどうすればよいですか?

更新:2021年8月; Microsoft Outlook365 / 2019/2016に適用可能

これが読者からのメモです。

非常に便利なOutlookコーディングのヘルプをありがとうございます。Outlookでの電子メールの送信を自動化するのに役立つコードを共有できるかどうか疑問に思っていますか?定期的なメッセージを送信する方法はいくつかあることは知っていますが、このタスクにVBAを使用することに特に興味があります。

質問ありがとうございます。電子メールの自動送信は、VBAを使用して自動化できる最も便利で人気のあるタスクの1つと思われます。詳細と簡単なスクリプトを読んで、ここから始めましょう。

Outlookメールを送信するためのVBAの作成

以下のかなり単純な例では、次の手順について説明します。

  1. まず、VBAOutlookオブジェクトモデルを使用して新しい電子メールアイテムを作成します。
  2. 次に、メッセージの重要度、受信者(セミコロンで区切る)、本文のスタイルとコンテンツを設定します。
  3. 次に、MicrosoftOutlookアプリケーションにメッセージを表示します。
  4. 最後に、先に進んで受信者に送信します。

簡単なメールを自動的に作成して送信するための簡単なVBAコードは次のとおりです。このスクリプトを簡単に改善して、添付ファイルやタスクなどを含めることができますが、非常に基本的なスクリプトから始めましょう。

Sub SendMail()
Dim MyEmail As MailItem
Set MyEmail = Application.CreateItem(olMailItem)

With MyEmail
.To = ""
.Importance = olImportanceHigh
.Subject = ""
.Body = ""
.BodyFormat = olFormatHTML
.Display
End With

'I purposely commented the next line, uncomment it by removing the "'" sign to send your email.
' MyEmail.Send
End Sub

OutlookVBAマクロショートカット

作成したVBAコードをOutlookのコマンドボタンに関連付けることを検討することをお勧めします。これにより、Outlookリボンに配置されたショートカットから簡単に起動できます。

その方法は次のとおりです。

  1. まず、先に進んでMicrosoftOutlookを開きます。
  2. [ファイル]をクリックし、[オプション]を選択します
  3. 次に、[リボンのカスタマイズ]を選択します。
  4. [リボンのカスタマイズ]セクションに、[コマンドの選択]リストボックスがあります。
  5. マクロを選択
  6. 次に、新しく作成したVBAコードを選択します。この場合、名前はSendMailである必要があります。
  7. 次に、[追加]、[OK]の順に押します。オプションで、マクロにアイコンを割り当てることができます。
  8. マクロは、Outlookアプリケーションの左上にあるクイックアクセスツールバーで利用できるようになります。

VBAマクロ設定で発生する可能性のある問題

マクロを実行するには、Outlookのマクロ設定を調整する必要がある場合があります。もしそうなら、これがそれを行う方法です。

ボーナス: PowerShell を使用して Outlook から電子メールを送信する

PowerShell では、 Send-MailMessage コマンドレット を使用して電子メールを送信できます。ただし、メール サーバーに対する認証が必要であり、OAuth や Microsoft Modern Authentication などの最新の認証方法はサポートされていません。したがって、コンピュータに Outlook プロファイルが設定されている場合は、電子メールを送信するのがはるかに簡単になります。

これは、Excel  ファイルからデータを読み取り、Outlook プロファイルを使用して電子メールを送信するPowerShell スクリプトの例です。各ユーザー:

# Excel ファイルを開きます
$ExcelObj = New-Object -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Sheet1")
# xlsx ファイル内の埋められた行の数を取得します
$rowcount=$ExcelWorkSheet.usedRange.Rows.Count
# 2 行目から始めて、列 1 のすべての行をループします (これらのセルにはユーザー名と電子メールが含まれます)。
for($i=2;$i -le $rowcount;$i++){
$useremail = $ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
$FullUsername = $ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Text
$Status = $ExcelWorkSheet.Columns.Item(4).Rows.Item($i).Text
$pwdchange = $ExcelWorkSheet.Columns.Item(3).Rows.Item($i).Text
# メッセージ本文の生成
$strSubj = " woshub.com ドメイン "
でのアカウント ステータス $strBody = "親愛なる" + $FullUsername
$strBody = $strBody + " `r`n woshub.com ドメインのアカウントは " にあります。 + $ステータス
$strBody = $strBody + "`r`n 最後のパスワード変更の日時は次のとおりです: " + $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Outlook が実行されていると仮定しますが、実行されていない場合は、コマンド $outlook = new-object -comobject Outlook.application
を使用して起動する必要があります。 $outlook = [Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
$email = $outlook.CreateItem(0)
$email.To = $useremail
$email.Subject = $strSubj
$email.Body = $strBody
# ファイルを添付します (必要な場合)
$email.Attachments.add($strfile)
#電子メールメッセージを送信
$email.Send()
}
$ExcelWorkBook.close($true)

Outlook の設定済みプロファイルから電子メールを送信するための PowerShell スクリプト

この PowerShell スクリプトは、コンピューター上で Outlook が実行されていることを前提としています。スクリプトは、受信者の SMTP アドレスごとに電子メールの件名と本文を XLSX ファイルに生成し、ファイルを添付します。その後、電子メールを送信します。


Microsoft Outlook.com 365で電子メールテンプレートを作成するにはどうすればよいですか?

Microsoft Outlook.com 365で電子メールテンプレートを作成するにはどうすればよいですか?

Microsoft Outlook.com 365で電子メールテンプレートを作成するにはどうすればよいですか?

Wordで弾丸の色を変更するにはどうすればよいですか?

Wordで弾丸の色を変更するにはどうすればよいですか?

この投稿では、Excel、PowerPoint、およびWord365 / 2016/2019で箇条書き/ポイントの色とサイズを変更する方法を学習します。

Outlook2016および2019で重複する電子メールメッセージを停止して削除する

Outlook2016および2019で重複する電子メールメッセージを停止して削除する

メールボックスに重複した電子メールエントリが散らかっていませんか?MACとWindowsの両方のOutlook 365/2019/2016メールボックスで、冗長なメッセージの受信を停止して削除する方法を学びます。

Outlook 2016/2019の電子メール本文または署名にgif画像を追加するにはどうすればよいですか?

Outlook 2016/2019の電子メール本文または署名にgif画像を追加するにはどうすればよいですか?

Outlook2016および2019の送信メールにgif画像を追加/埋め込みして送信する方法を学びます。

Outlookの受信トレイのメールが自動的に更新されないときに更新するにはどうすればよいですか?

Outlookの受信トレイのメールが自動的に更新されないときに更新するにはどうすればよいですか?

Outlookの受信トレイが自動的に更新されませんか?Outlook 365/2019/2016/2013の受信トレイを自動的に更新する方法を学びます。

Outlook365 / 2019/2016の会議および予定のカレンダー通知がポップアップ表示されないようにする

Outlook365 / 2019/2016の会議および予定のカレンダー通知がポップアップ表示されないようにする

WindowsとMACの両方で、Outlook2016 / 2019カレンダーからのリマインダーと通知を無効にする方法を学びます。

OutlookでVBAを使用して電子メールを送信するにはどうすればよいですか?

OutlookでVBAを使用して電子メールを送信するにはどうすればよいですか?

電子メールの送信を自動化するためのOutlookマクロの作成方法を学びます。

Outlookがオフラインまたは切断されている理由と、再接続する方法を教えてください。

Outlookがオフラインまたは切断されている理由と、再接続する方法を教えてください。

Windows10でさまざまなMicrosoftOutlookクライアントの切断の問題を診断およびトラブルシューティングする方法を学びます。

Outlookフォーム:Microsoft Office 2016/2019で入力可能なフォームを作成するにはどうすればよいですか?

Outlookフォーム:Microsoft Office 2016/2019で入力可能なフォームを作成するにはどうすればよいですか?

Outlookカスタムユーザーフォームを設計および作成する方法を学びます。

Microsoft Outlookをより高速に実行するにはどうすればよいですか(バージョン2019/365/2016)?

Microsoft Outlookをより高速に実行するにはどうすればよいですか(バージョン2019/365/2016)?

Outlookのパフォーマンスを向上させる方法を学びます。