VBAやVBScriptでCDOを使用してVBAでメール送信をする方法について覚書。
Windows 2000/XP/Server 2003には、CDO(Collaboration Data Objects)と呼ばれるメッセージング・コンポーネント(CDOSYS.DLL)が標準で搭載されている。
これを利用すればWindows Script HostやVBS、ExcelやAccessのVBAなどからメール送信ができる。
ただし、実行するPCでSMTPサービスが実行されていないと動作しません。 今までbasp21を使用してたけどWindows 2000以上であれば必要ない。
VBAでCDOを使用してメール送信するサンプルプログラム
以下CDOを使用したVBAのサンプルプログラム。
Sub SendMessage()
Dim oMsg As Object
Set oMsg = CreateObject("CDO.Message")
oMsg.From = "yyyyy@xxx.co.jp"
oMsg.To = "xxxxx@xxx.co.jp"
oMsg.Subject = "Test "
oMsg.TextBody = "テストメッセージです" & vbCrLf & Now
oMsg.Send
End Sub
ファイルを添付する場合
送信するメールにファイルを添付して送る場合のサンプルプログラム。 AddAttachmentをSendの前に挿入するだけ。
Sub SendMessage()
Dim oMsg As Object
Set oMsg = CreateObject("CDO.Message")
With oMsg
.From = "yyyyy@xxx.co.jp"
.To = "xxxxx@xxx.co.jp"
.Subject = "Test "
.TextBody = "テストメッセージです" & vbCrLf & Now
.AddAttachment ("file://C:¥test.txt")
.Send
End With
End Sub
サンプルを実行してもうまくメールが送信されない場合は、常駐しているウィルスチェックプログラムをチェックしてください。
ウィルスチェックプログラムのほうで送信をブロックする設定がされている場合があります。
参考サイト
@ITの記事を参考にしました。
Windows標準機能とWSHを使ってメールを送信する
コマンド・プロンプトでメールを送信できれば、さまざまな管理業務などに応用することができる。その場合、Windowsの標準機能だけで送信できるようになっていると、OSプラットフォームを問わずに利用できる。Windowsシステムに含まれるCDO...
コメント