VBA メール送信!CDOを使用する方法

メール送信

エクセル上でセルを編集した時やボタンをクリックした時にメールを送信する仕組みを作りたい場合はVBA(Visual Basic for Applications)でCDO(Microsoft Collaboration Data Objects)を使用します。

CDOとはメッセージングアプリやコラボレーションアプリを構築するための技術でWindowsの標準で搭載されインストールや設定が不要です。

今回、VBAでCDOを使用したメール送信プログラムのコード例を紹介します。

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を利用するとエクセル上でメール送信プログラムを簡単に作成することができます。今回紹介したサンプルを利用してエクセル上で自動報告メールのプログラム開発の参考になれば幸いです。