エクセルでメールの自動送信

 

エクセルVBAとフリーソフトBASP21を利用した方法、設定がかなり難しいが一応動く。

 

1 フリーソフトBASP21をインストール

http://www.hi-ho.ne.jp/babaq/basp21.html

上記からBASP21をインストール

Bsmtp.dllwindowssystem32に配置されることが重要である。

 

2 エクセルでBASP21を参照

エクセルのコード表示から「ツール」を選択し「参照設定」でBASP21 1.0 Type Librarywindowssystem32 Bsmtp.dll)を追加参照設定する。これは非常に重要である。

 

3 参照したエクセルでVBA作成

以下にプログラムが分かりやすく書いてあるがIDとパスワードの設定が書いていない。

http://officetanaka.net/excel/vba/tips/tips45.htm

IDとパスワードを含むプログラム方法は以下に記載されている。

http://www.hi-ho.ne.jp/babaq/basp21.html

yahooメールの設定は以下のとおり。

http://help.yahoo.co.jp/help/jp/mail/anti-spam/anti-spam-49.html

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1367789253

 

4 プログラム例

ビデオ予約設定例、vardiaネット操作参照、予約が多いと自動化しないと大変。

Sub Sample()

    Dim bobj, msg As String

    Dim Server As String, Mailto As String, MailFrom As String, Subject As String, Body As String

    Server = "smtp.mail.yahoo.co.jp" & vbTab & "587" & vbTab & "60"           ''SMTPサーバー

    Mailto = "xxxxxx@yahoo.co.jp(発信先メールアドレス)"

    MailFrom = "yyyyyyyy@yahoo.co.jp(送信元メールアドレス)" & vbTab & " yyyyyyyyID" & ":" & "(パスワード)" & vbTab & "LOGIN"

    Subject = "タイトル"

    n = 1

    Do Until Me.Cells(n, 1) = ""  空欄になるまで続ける

    Set bobj = CreateObject("basp21")   ''BASP21オブジェクト

    Body = ""

  (ビデオ用各種設定データ作成)

    For m = 5 To 12

    Body = Body & Me.Cells(n, m) & " "

    Next

    Body = Body & Me.Cells(n, 13)

    Me.Cells(n, 14) = Body

    msg = bobj.SendMailEx("C:\log.txt", Server, Mailto, MailFrom, Subject, Body, "")

    Set bobj = Nothing

    If msg <> "" Then MsgBox msg

    n = n + 1

    Loop

    Exit Sub

 End Sub

 

備忘録