【VBA】CDOでメールを自動送信する方法(Outlook以外からも送信可能!マクロ)
VBAでメールをメーラインストール無しで自動送信したい人
サーバからメール送信したいがサーバにメーラーがない人
Outlook以外から自動メール送信をしたい方人向けに書いています。
「毎回同じ内容のメールを手作業で送るのが面倒だ」と感じたことはありませんか?
特に忙しい業務の中で、メール対応に多くの時間を取られるのは大きな負担ですよね。そこで、VBAとCDOを使ったメール送信の自動化が役立ちます!
この記事では、VBAを使ってCDO経由でメールを自動送信する具体的な手順を解説します。
本記事を読むことで、あなたは「メール業務を劇的に効率化できる方法」を手に入れ、他の重要な仕事に集中できるようになるでしょう。
最終的に、手間を減らし、業務全体をスムーズに進めるための第一歩を踏み出せます。
それでは早速、VBAとCDOを使った便利な自動化の世界を一緒に学んでいきましょう!
本記事の内容
Windows環境でCDO(Microsoft Collaboration Data Objects)によるVBAの自動メール送信方法を紹介します。
・Yahooメールで自動送信する場合の送信設定方法
・Gmailで自動送信する場合の送信設定方法
業務効率化のためにWindows環境上でVBAの自動メール送信したいと思ったことはありませんか?
サーバや端末にメーラーをインストールしておらず、自動メール送信できないと思ったことはありませんか?
Windows環境からメーラーインストールなしでVBAによる自動メール送信する方法を紹介します。
もし、PCやサーバにインストールしているOutlookから自動メール送信したい場合は以下のリンクで送信方法を説明しています。
→【VBA】Outlookから自動メール送信する方法について(Outlookインストール必要)
CDOとは
CDOとは「Microsoft Collaboration Data Objects」の略で、メッセージングアプリケーションやコラボレーションアプリケーションを構築するための技術です。 Windows環境には標準で搭載されており、特にインストールや設定は必要ありません。
VBAからCDO(Microsoft Collaboration Data Objects)で自動メール送信する方法
CDO(Microsoft Collaboration Data Objects)を使い、VBAでメール送信する方法を説明します。
今回、送信元メールアドレスはYahooのメールアドレスとGmailのメールアドレスで行います。(Outlookでも送信可能です)
以下にYahooメールとGmailの設定とVBAプログラムを記載します。
Yahooメールの場合の設定(IMAP/POP/SMTPアクセス設定)
Yahooメールからメールを自動送信する場合は以下の設定が必要になります。
以下の手順の設定が必要です。
1.Yahooメールの設定ボタンをクリックする
Yahooメールページへはこちら
2.「IMAP/POP/SMTPアクセス」をクリックして、「Yahoo! JAPAN公式サービス以外からのアクセスも有効にする」を選択する
3.IMAP、POP、SMTP項目をそれぞれ有効にして保存ボタンをクリックする
Yahooメール設定の詳しい説明はこちらをクリックください。
以後で出てくるSMTPサーバのパスワードはYahoo! JAPAN IDのパスワードです。
Gmailの場合の設定(セキュリティ設定)
Gmailからメールを自動送信する場合は以下の設定が必要になります。
Googleアカウントの「セキュリティ」で設定を行います。
Googleアカウント作成・ログインはこちらから行えます。
1.Googleセキュリティを開く
Googleセキュリティはこちらから開けます。
2.「セキュリティ」から「Googleへのログイン」の「2段階認証プロセス」の順に開き、2段階認証(携帯番号での認証)の設定を行う
3.「セキュリティ」から「Googleへのログイン」の「アプリ パスワード」の設定を開く
4.アプリ名を入力する
目的を入力します。任意の名前ですので、「アプリ選択」をメール、「デバイス選択」をWindows パソコンとかで選択するとよいと思います。
5.パスワードが発行されるのでメモして完了ボタンを押す
VBAプログラム(CDO.Messageを利用)
CDOによるメール送信のVBAプログラムです。
標準機能でメール送信できるCDO.Messageを利用すると簡単に送信することができます。(SMTPへのアクセスだけですので、メールの受信はできません。)
Yahooメールの場合
- '*****************************************
- '* Yahooメール送信
- '*****************************************
- Sub YahooMailSend()
- Dim objMail As Object
- Dim fromMail As String
- Dim toMail As String
- Dim ccMail As String
- Dim bccMail As String
- Dim strMessage As String
- Dim Subject As String
- 'CODオブジェクトを取得
- Set objMail = CreateObject(“CDO.Message")
- '送信元を指定
- fromMail = “送信元メールアドレス"
- '宛先を指定 ※送信アドレスが複数の場合はセミコロンで区切る
- toMail = “送信宛先メールアドレス"
- ccMail = “送信CC先メールアドレス"
- bccMail = “送信BCC先メールアドレス"
- '件名を指定
- Subject = “件名"
- '本文を指定
- strMessage = “メール本文"
- strMessage = strMessage & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
- strMessage = strMessage & “※このメールはシステムから自動送信しています。" & vbCrLf
- strMessage = strMessage & “"
- '送信元メールアドレス
- objMail.From = fromMail
- '送信先メールアドレス
- objMail.to = toMail
- objMail.cc = ccMail
- objMail.bcc = bccMail
- '件名
- objMail.Subject = Subject
- 'メール本文
- objMail.TextBody = strMessage
- '添付ファイル
- objMail.AddAttachment “添付ファイルのファイルパス"
- '文字コード
- objMail.TextBodyPart.Charset = “ISO-2022-JP"
- '認証方法 1:Basic認証
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
- 'SMTPサーバの種類 1:内部SMTPサーバ 2:外部SMTPサーバ
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
- 'SMTPサーバのホスト名やIPアドレス
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpserver") = “smtp.mail.yahoo.co.jp"
- 'SMTPサーバの送信用ポート番号
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
- 'SSLを許可
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
- 'SMTPサーバのユーザー名
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/sendusername") = fromMail
- 'SMTPサーバのパスワード
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/sendpassword") = “SMTPサーバパスワード"
- '設定を更新
- objMail.Configuration.Fields.Update
- '送信
- objMail.Send
- Set objMail = Nothing
- End Sub
17行目:送信元のメールアドレスを指定します
19行目:送信先のメールアドレスを指定します
20行目:CC先のメールアドレスを指定します
21行目:BCC先のメールアドレスを指定します
24行目:件名を指定します
26行目:本文を指定します
47行目:添付ファイルを指定します
56行目:SMTPサーバのホスト名やIPアドレスを指定します
58行目:SMTPサーバの送信用ポート番号を指定します
64行目:SMTPサーバのパスワードを指定します
Gmailの場合
- '*****************************************
- '* Gmail送信
- '*****************************************
- Sub GmailSend2()
- Dim objMail As Object
- Dim fromMail As String
- Dim toMail As String
- Dim ccMail As String
- Dim bccMail As String
- Dim strMessage As String
- Dim Subject As String
- 'CODオブジェクトを取得
- Set objMail = CreateObject(“CDO.Message")
- '送信元を指定
- fromMail = “送信元メールアドレス"
- '宛先を指定 ※送信アドレスが複数の場合はセミコロンで区切る
- toMail = “送信宛先メールアドレス"
- ccMail = “送信CC先メールアドレス"
- bccMail = “送信BCC先メールアドレス"
- '件名を指定
- Subject = “件名"
- '本文を指定
- strMessage = “メール本文"
- strMessage = strMessage & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
- strMessage = strMessage & “※このメールはシステムから自動送信しています。" & vbCrLf
- strMessage = strMessage & “"
- '送信元メールアドレス
- objMail.From = fromMail
- '送信先メールアドレス
- objMail.to = toMail
- objMail.cc = ccMail
- objMail.bcc = bccMail
- '件名
- objMail.Subject = Subject
- 'メール本文
- objMail.TextBody = strMessage
- '添付ファイル
- objMail.AddAttachment “添付ファイルのファイルパス"
- '文字コード
- objMail.TextBodyPart.Charset = “ISO-2022-JP"
- '認証方法 1:Basic認証
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
- 'SMTPサーバの種類 1:内部SMTPサーバ 2:外部SMTPサーバ
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
- 'SMTPサーバのホスト名やIPアドレス
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpserver") = “smtp.gmail.com"
- 'SMTPサーバの送信用ポート番号
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
- 'SSLを許可
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
- 'SMTPサーバのユーザー名
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/sendusername") = fromMail
- 'SMTPサーバのパスワード
- objMail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/sendpassword") = “Googleアカウントアプリパスワード"
- '設定を更新
- objMail.Configuration.Fields.Update
- '送信
- objMail.Send
- Set objMail = Nothing
- End Sub
17行目:送信元のメールアドレスを指定します
19行目:送信先のメールアドレスを指定します
20行目:CC先のメールアドレスを指定します
21行目:BCC先のメールアドレスを指定します
24行目:件名を指定します
26行目:本文を指定します
47行目:添付ファイルを指定します
56行目:SMTPサーバのホスト名やIPアドレスを指定します
58行目:SMTPサーバの送信用ポート番号を指定します
64行目:Googleアカウントのアプリパスワードを指定します
本方法では送信履歴が残りません。
CCやBCCにご自身のメールアドレスも入れておくことをおすすめします。
本記事の方法はVBAの定期自動実行処理結果(処理完了やエラー)の通知メール送信時に使用できます。
以下のリンクで紹介していますので、もしよろしければこちらもご覧ください。
→「【VBA】定期自動起動処理のエラー対応処理(処理結果メール送信)」
まとめ
VBAでのメール送信を自動化する方法を学ぶことで、日々の業務をもっと効率化できると感じませんか?
本記事では、CDOを活用したシンプルなメール送信の仕組みをわかりやすく解説しました。Windows環境上でメーラーインストールなしで自動メール送信する方法です。
Outlook等のメールソフトのインストールなし(Outlookなし)でも送信することができます。
サーバ上で自動実行する際、サーバにメーラーのインストールされていないことはけっこうあると思います。Windows環境上という条件はありますが。。
効率化のためのVBA自動実行処理の際、メールを送らなければならない場合、こちらのやり方で試してみてください。
自動化が進むことで、手作業の負担を減らし、本当に重要な業務に集中できるようになります。
ぜひ今回の知識を実践して、作業の効率を向上させてみてください!
最後まで拝見していただき、ありがとうございました。
定期的に自動でメール送信したい方は以下のリンクで定期自動実行方法を紹介していますので、ご覧ください。
→「ExcelVBA(マクロ)定期自動実行方法【batファイル VBScriptファイル タスクスケジューラ】」
→「AccessVBA定期自動実行方法【batファイル vbsファイル タスクスケジューラ】」
「VBAでOutlookから自動メール送信する方法」
「【VBA】定期自動起動処理のエラー対応処理(処理結果メール送信)」
も紹介していますので、もしよろしければ御覧ください。
また、「VBAからOracle Databaseに接続する方法」、
「VBAからSQLServerに接続する方法」も紹介しています。
もしよろしければこちらも御覧ください。
最近のコメント