エクセルでメールの自動送信
エクセルVBAとフリーソフトBASP21を利用した方法、設定がかなり難しいが一応動く。
1 フリーソフトBASP21をインストール
http://www.hi-ho.ne.jp/babaq/basp21.html
上記からBASP21をインストール
Bsmtp.dllがwindowsのsystem32に配置されることが重要である。
2 エクセルでBASP21を参照
エクセルのコード表示から「ツール」を選択し「参照設定」でBASP21 1.0 Type Library(windowsのsystem32
の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 &
" yyyyyyyy(ID)" & ":" &
"(パスワード)" & 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
Exit Sub
End Sub