【Excel/VBA】CODを利用してメールを作成、送信する【Outlook不要】

VBAから
 ・メールを作成し送信
できます!

メールを作成し送信する方法は
 ・CODを使用する方法
 ・Outlookを使用する方法
の2種類あります!

この記事では
 ・CODを使用する方法
を記載します!
※ 今回は例として、送信元をGmailのメールアドレスにします。

Outlookを使用する方法は、
以下の記事をご確認ください!



PR

前提

CDO(Microsoft Collaboration Data Objects)を使用します。
 ※CODはWindowsに標準で備わっています。インストールや設定は不要です。

・今回は例として、送信元をGmailのメールアドレスにします。
 ※VBAからGmailを使用できるように、Googleアカウントのセキュリティ設定を変更します。

・送信先はどこでも良いです。
 ※今回はキャリアのメールアドレスへ送信します。

Outlookを使用しないため、Outlookが無くともメールを送信できます。
※特別なソフトウェア(メーラー)が無くてもメールを送信できます。

PR

準備(セキュリティ設定の変更)

VBAからGmailを使用できるように、Googleアカウントのセキュリティの設定を変更します。
※Gmailを使用しない場合、この手順は不要です。

変更手順を以下に記載します。

変更手順①

Googleアカウントへアクセスして、左側にある「セキュリティ」をクリックする。

Googleアカウントの「セキュリティ」
Googleアカウントの「セキュリティ」


変更手順②

「安全性の低いアプリのアクセス」を「オフ」→「オン」へ変更する。

「安全性の低いアプリのアクセス」を「オン」へ変更
「安全性の低いアプリのアクセス」を「オン」へ変更

VBAからメールを送信できることを確認した後、上記のセキュリティ設定を元に戻しましょう(オフに戻しましょう)。
※セキュリティは高い方が安心のため。オフが推奨されているため。

PR

VBAコード

ここでは例として、
 ・CODとGmailを利用して
 ・メールを作成し送信
します。

Option Explicit

Sub sendMail()
    
    Dim objMail As Object
    Dim fromMail As String
    Dim tomMail As String
    Dim subject As String
    Dim body As String
    Dim strConfigurationField  As String
    
    'CODオブジェクトを取得
    Set objMail = CreateObject("CDO.Message")
    
    '送信元を指定
    fromMail = "XXXXXX@gmail.com"
    '宛先を指定
    tomMail = "XXXXXX@XXX.XXX.XXX"
    '件名を指定
    subject = "テスト"
    '本文を指定
    body = "テストメールです"
    
    With objMail
        '送信元
        .From = fromMail
        '宛先
        .to = tomMail
        '件名
        .subject = subject
        '本文
        .TextBody = body
        '文字コード
        .TextBodyPart.Charset = "ISO-2022-JP"
    End With
    
    strConfigurationField = "http://schemas.microsoft.com/cdo/configuration/"
    
    With objMail.Configuration.Fields
        '認証方法
        '┗1:Basic認証
        .Item(strConfigurationField & "smtpauthenticate") = 1
        '使用するのSMTPサーバの種類
        '┗1:内部のSMTPサーバ
        '┗2:外部のSMTPサーバ
        .Item(strConfigurationField & "sendusing") = 2
        'SMTPサーバ
        .Item(strConfigurationField & "smtpserver") = "smtp.googlemail.com"
        'STMPサーバのポート番号
        .Item(strConfigurationField & "smtpserverport") = 465
        'SSLを許可
        .Item(strConfigurationField & "smtpusessl") = True
        'SMTPサーバのユーザー名
        .Item(strConfigurationField & "sendusername") = fromMail
        'SMTPサーバのパスワード
        .Item(strConfigurationField & "sendpassword") = "XXXXXX"
        '設定を更新
        .Update
    End With
    
    '送信
    objMail.Send
    
    '後片づけ
    Set objMail = Nothing
    
End Sub

「送信元」に自身のメールアドレスを指定します(16行目)。

「宛先」に相手のメールアドレスを指定します(18行目)。

「使用するのSMTPサーバの種類」は、環境に合わせて修正してください(46行目)。
※上記は「2:外部のSMTPサーバ」にしています。

「SMTPサーバ」と「STMPサーバのポート番号」は、環境に合わせて修正してください(48、50行目)。
※上記は「smtp.googlemail.com」と「465」にしています。

「SMTPサーバのパスワード」を指定します(56行目)。
※「SMTPサーバのユーザー名」には「送信元(=自身のメールアドレス)」を設定します。

PR

実行結果

CODを利用して、メールを送信できました。
※Outlookを使用せずともメールを送信できました。
※今回はキャリアのメールアドレスへ送信して、スマホで受信しました。

メールを受信した画面
メールを受信した画面
PR

参考①

Outlookを使用して、メールを送信することもできます。

詳細は以下の記事をご確認ください。

PR

参考②

Outlookを使用して、会議依頼メールを送信することもできます。

詳細は以下の記事をご確認ください。