エクセル上でセルを編集した時やボタンをクリックした時にメールを送信する仕組みを作りたい場合はVBA(Visual Basic for Applications)でCDO(Microsoft Collaboration Data Objects)を使用します。
CDOとはメッセージングアプリやコラボレーションアプリを構築するための技術でWindowsの標準で搭載されインストールや設定が不要です。
今回、VBAでCDOを使用したメール送信プログラムのコード例を紹介します。
Table of Contents
Microsoft CDO for Windows 2000Librarv参照設定
CDOを使用する場合、「Microsoft CDO for Windows 2000Librarv」の参照設定を追加します。
「ツール(T)」→「参照設定(R)」をクリックして「Microsoft CDO for Windows 2000Librarv」にチェックを入れます。
メール送信のサンプルコード
以下CDOを使用したサンプルプログラム
「25」に設定しているポート番号についてはメールサーバーによって変わります。
Sub SendMail()
Dim objCDO As New CDO.Message
With objCDO
With .Configuration.Fields '設定項目
.Item(cdoSMTPServer) = "SMTPサーバー名" 'SMTPサーバ名
.Item(cdoSendUsingMethod) = cdoSendUsingPort '外部SMTP指定
.Item(cdoSMTPServerPort) = 25 'ポート番号
.Item(cdoSMTPConnectionTimeout) = 60 'タイムアウト
.Item(cdoSMTPAuthenticate) = cdoBasic 'SMTP認証
.Item(cdoSMTPUseSSL) = True 'SSL指定
.Item(cdoSendUserName) = "送信ユーザー名" '送信ユーザー
.Item(cdoSendPassword) = "送信パスワード" '送信パスワード
.Item(cdoLanguageCode) = CdoCharset.cdoShift_JIS '文字セット指定
.Update '設定更新
End With
.From = "送信者のメールアドレス" '送信者アドレス
.To = "受信者のメールアドレス" '受信者アドレス
.Subject = "テスト送信" '題名
.TextBody = "こんにちは" & k & "sss" '本文
.Send '送信
End With
Set objCDO = Nothing
End Sub
添付ファイルを付けたい場合
エクセルと同じフォルダ内に添付ファイルがある場合は下記のコードを使います。
「.Send」送信処理の前に追加します。
.AddAttachment (ThisWorkbook.Path & "\" & "ファイル名")
.Send
文章を改行したい場合
改行したい場合は「vbCrLf」改行コードを使用します。
.TextBody = "こんにちは" & vbCrLf & "改行します。"
さいごに
CDOを利用するとエクセル上でメール送信プログラムを簡単に作成することができます。今回紹介したサンプルを利用してエクセル上で自動報告メールのプログラム開発の参考になれば幸いです。