サンダーバードって使いやすいですよね。
サンダーバードで自動化でメールが送れたらな~と思って色々と調べてみました。
Outlookを使ったメール操作のVBAマクロは多かったのですが、サンダーバードでメールを送るVBAマクロは、ウェブ上や、本を探しても断片的な情報が多く、コーディングにとても時間がかかってしまったので、自分でまとめました。
細かく場合分けをしているので、必要なVBAマクロをコピーして使って下さい。
ただサンダーバードはメールを作成する所まではできますが、「送信」ができないので、マクロを組むならOutlookの方がお勧めです。
サンダーバードを立ち上げる
まず、VBAでサンダーバードを立ち上げるには、shell関数を用います。
sub Thunderbird_VBA() Dim sPath as strings Path = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” Shell sPath |
宛先(To)を入れる
次に立ち上げたメールにbiginner@luck.co.jpという宛先がすでに入ったVBAを作成します。
※biginner@luck.co.jp は架空のアドレスです。
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” mailadto = “biginner@luck.co.jp” |
複数のToを入れる
立ち上げたメールに複数の宛先(TO)が入ったVBAを作成します。
参考に biginner@luck.co.jp と intermediate@luck.co.jp という宛先がすでに入ったVBAを作成します。
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” mailadto = “biginner@luck.co.jp” & ” ; ” & “intermediate@luck.co.jp” |
複数のTOを加えるには、メールアドレスの間をセミコロンで区切るだけで良いです。
mailadto = “biginner@luck.co.jp;intermediate@luck.co.jp” という書き方でももちろん上手く起動してくれます。
宛先及びccを入れる
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string Dim mailadcc as string sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” mailadto = “biginner@luck.co.jp” Shell sPath & “to=” & mailadto & “,” & “cc=” & mailadcc |
宛先及びcc、bccを入れる
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string Dim mailadcc as string Dim mailadbcc as string sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” mailadto = “biginner@luck.co.jp” Shell sPath & “to=” & mailadto & “,” & “cc=” & mailadcc & “,” & “bcc=” & mailadbcc |
エクセルのセルから取得した値を用いる
たとえば、下記の様にSheet1のA1セルに[biginner@luck.co.jp]、A2セルに[intermidiate@luck.co.jp]、A3セルに[senior@luck.co.jp]が入っている場合、
下記の様に記述できます。
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string Dim mailadcc as string Dim mailadbcc as string sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” mailadto = WorkSheets(“sheet1”).Range(“A1”).value Shell sPath & “to=” & mailadto & “,” & “cc=” & mailadcc & “,” & “bcc=” & mailadbcc |
件名を入れる
続いて、件名を入れてみます。
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string Dim mailadcc as string Dim substring as string sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” mailadto = “biginner@luck.co.jp” Shell sPath & “to=” & mailadto & “,” & “cc=” & mailadcc & “,” & “subject=” & substring |
件名、本文を入れる
さらに、本文を入れてみます。
VBA中に本文を記述したい時は、改行に”vbNewLine”という定数を用います。
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string Dim mailadcc as string Dim substring as string Dim bodystring as string sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” mailadto = “biginner@luck.co.jp” Shell sPath & “to=” & mailadto & “,” & “cc=” & mailadcc & “,” & “subject=” & substring &”,”& “body=” & bodystring |
添付ファイルを送る
添付ファイルを送るには下記の様に記述します。
添付のファイル名は拡張子を含めたファイルのパス全文を記述する必要があります。
このVBAをテストする前には、 Cドライブ の Program Files に “test.txt” を作成して下さい
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string Dim mailadcc as string Dim substring as string Dim bodystring as string Dim attachPath as string sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” mailadto = “biginner@luck.co.jp” |
複数の添付ファイルを送る
複数の添付ファイルを送るにはファイル名間に”,”(コンマ)を入れ、かつ全体を”‘”(アポストロフィ)で括ります。
このVBAをテストする前には、 Cドライブ の Program Files に “test.txt” 及び “test2.txt” を作成して下さい
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string Dim mailadcc as string Dim substring as string Dim bodystring as string Dim attachPath as string sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” mailadto = “biginner@luck.co.jp” |
エクセルのセルから取得した値を用いる2
これまでVBAに記述してきた宛先(TO)、(CC)、添付ファイル、件名、本文の値をエクセルから取得します。
用いるエクセルデータは下記の通りです。
VBA中に直接本文を記述した時はvbNewLineという定数を用いましたが、セル中に記載する場合は、&Char(10)という定数を用います。
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string Dim mailadcc as string Dim substring as string Dim bodystring as string Dim attachPath as string sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” mailadto = WorkSheets(“sheet1”).Range(“C1”).value Shell sPath & “to=” & mailadto & “,” & “cc=” & mailadcc & “,” & “subject=” & substring & “,” & “body=” & bodystring & “,” & “attachment=” & attachPath |
複数のメールを作成する
最後に、複数メールを一度に作成する方法を紹介します。
ただVBAでは、サンダーバードでメールを作成する事は出来ますが、送る所までは出来ません。
そのため、あまり多くのメールの作成には向いてません。
複数メールを送る際は、Outlookを使うことを強くお勧めします。
今回は、下記のデータを用います。テストする場合は、このままコピー&ペーストすれば大丈夫だと思います。
TO | CC | 件名 | 本文 |
---|---|---|---|
Senior1@luck.co.jp | boss@luck.co.jp | ○○に関しまして | =”Senior1様”&CHAR(10)&CHAR(10)&”標題について、ご連絡致します。” |
Senior2@luck.co.jp | boss@luck.co.jp | ○○に関しまして | =”Senior2様”&CHAR(10)&CHAR(10)&”標題について、ご連絡致します。” |
Senior3@luck.co.jp | boss@luck.co.jp | ○○に関しまして | =”Senior3様”&CHAR(10)&CHAR(10)&”標題について、ご連絡致します。” |
Senior4@luck.co.jp | boss@luck.co.jp | ○○に関しまして | =”Senior4様”&CHAR(10)&CHAR(10)&”標題について、ご連絡致します。” |
Senior5@luck.co.jp | boss@luck.co.jp | ○○に関しまして | =”Senior5様”&CHAR(10)&CHAR(10)&”標題について、ご連絡致します。” |
sub Thunderbird_VBA()Dim sPath as string Dim mailadto as string Dim mailadcc as string Dim substring as string Dim bodystring as string Dim i as Integer sPath = “””C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe”” -compose ” For i = 2 to 6 Shell sPath & “to=” & mailadto & “,” & “cc=” & mailadcc & “,” & “subject=” & substring & “,” & “body=” & bodystring & “,” |