『VBAプログラミング』Excelでyahooメールを送信してみよう!

『VBAプログラミング』Excelでメールを送信してみよう!
提供:photoAC「Wassy-ST様」

Excelといえば表計算ですが、できるのはそれだけじゃありません。

『VBA』というExcelの拡張機能でプログラミングも可能なのです。

もちろんExcelさえパソコンに入っていれば、すぐにでも練習可能。

ゆえに、もうプログラミングの手前(開発環境の構築とか)で悩む必要なんてありません。

それにVBAなら情報量が豊富ですし、デバック(プログラム内のバグを改修する作業)も比較的わかりやすく、しかもつくった作品で会社のExcel業務がぐっと楽になるかもしれないのです。

ですので……

「プログラマーに興味があるけど、その前に体験してみたい……」

「会社でも使える実用的なモノをつくってみたい」

「手軽にプログラミング学習できたらなぁ……」

そんな方に『VBA』はうってつけです。

とまぁ、前置きはこれくらいにして、今日からあなたもVBAプログラマー。

さっそく何かプログラミングしてみましょう!

 どこでも食っていけるWeb人間になれる【Web食いオンラインスクール】

ちなみにVBAの初心者向けサイトはネット上にたくさんありますので、基礎的な部分はそちらを参考にしてください(丸投げですみません)。

では。

いきなりですがVBAでyahooメールを使って(送信元にして)メールの送信をしてみましょう!(なんでメール?というツッコミはご容赦ください。なんとなくです)

でもその前にyahooメールの設定を変更する必要があります。

yahooメールを開いて、設定(歯車のマーク)をクリックしてください。

『VBAプログラミング』Excelでyahooメール【メールの設定画面】

次にIMAP/POP/SMTPアクセスをクリックして下記のように設定を変更してください。

『VBAプログラミング』Excelでyahooメール【メールの設定画面】

yahooメールの設定はこれで準備OKです。

下記がVBAのコードになります。

Option Explicit

Sub excelMail()
    
    Dim mailObj As Object
    Dim mailFrom As String
    Dim mailFromPassword As String
    Dim mailFromSmtp As String
    Dim mailFromPort As String
    Dim mailCharset As String
    Dim mailTo As String
    Dim mailSubject As String
    Dim mailBody As String
    Dim errNumber As Long
    
    
    '※※は変更してください
    '-------------------------------------
    
    '※※yahooメールのアドレス(送信用)
    mailFrom = "xxxxxxxxxxxxxxx@yahoo.co.jp"
    
    '※※yahooメールのSMTPパスワード(yahooメールのパスワード)
    'パスワードを数回間違えるとしばらくの間、
    'SMTPサーバーに接続できなくなります
    'もしそうなったら、一定時間(どのくらいかは不明)経過後、
    'yahooアカウントを一旦ログアウト、再度ログインしてお試しください
    mailFromPassword = "xxxxxxxxxxxxxx"
    
    '※※宛先
    mailTo = "xxxxxxxxxxxxxx@xxxxx.xxx"
    
    '送信用メールのSMTPサーバ(yahooメール以外の場合は変更が必要)
    mailFromSmtp = "smtp.mail.yahoo.co.jp"
    
    '送信用メールのポート番号(yahooメール以外の場合は変更が必要)
    mailFromPort = "465"
    
    'メールの文字コード
    mailCharset = "ISO-2022-JP"
    
    '※※メールのタイトル
    mailSubject = "テストメールその1"
    
    '※※メールの本文
    mailBody = "テストメールの本文です"

    '-------------------------------------
    
    'エラー番号
    errNumber = 0
    'CDOのオブジェクトを作成する
    Set mailObj = CreateObject("CDO.Message")
    
    With mailObj
        '送信元
        .from = mailFrom
        '宛先
        .to = mailTo
        '件名
        .subject = mailSubject
        '本文
        .TextBody = mailBody
        '文字コード
        .TextBodyPart.Charset = mailCharset
    End With
    
    With mailObj.Configuration.Fields
        'SMTPのユーザー名
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = mailFrom
        'SMTPのパスワード
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = mailFromPassword
        '認証方法
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        'SMTPサーバの種類
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        'SMTPサーバ
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mailFromSmtp
        'STMPの送信用ポート番号
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = mailFromPort
        'SSLを許可
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
        '設定を更新
        .Update
    End With

    '重要度を変更
    mailObj.Fields.Item("urn:schemas:mailheader:X-Priority") = 1
    mailObj.Fields.Update
    On Error GoTo ErrorTrap
    '送信
    mailObj.Send
    If errNumber = 0 Then
        MsgBox "メールを送信しました"
    End If
    '初期化
    Set mailObj = Nothing
    errNumber = 0
    Exit Sub

ErrorTrap:
    errNumber = Err.Number
    MsgBox "エラーの番号:" & Err.Number
    MsgBox "エラーの概要:" & Err.Description
    Resume Next
    
End Sub

Excelというか、Excelに付属しているVBE(Visual Basic Editor)上でのみ実行可能なyahooメールを使ってメールを送信するだけのコードですが、改良すれば見た目も、機能もそれっぽくなりますよ!(^^)!

たとえば指定した日時以降にExcelファイルが更新されたらファイルを自動送信するとか。

特定のセルの値が変更されたら、その内容を自動送信するとか。

あるいはシートごとにメールのフォーマットと送信ボタンを用意しておくとか。

考え方次第で色んなことができるはずです。

結構楽しいですし、会社で一目置かれるようになるかもしれませんよ~(^^)

まずはVBAでプログラミングをやってみましょう!

タイトルとURLをコピーしました