Thunderbirdメール自動作成マクロで複数アドレス指定に対応するのは簡単だった
Thunderbirdで複数の宛先を指定するのは簡単だった
Shell関数でThunderbirdのメールを作成する
このときにも紹介したが、VBAでThunderbirdのメールを作成するには、次のようなコードを書けば良い。
リスト1
Shell "Thunderbird実行ファイルのフルパス -compose _
to=送信先メールアドレス, _
cc=CCアドレス, _
subject=メール件名, _
body=本文文字列, _
attachment='添付ファイルフルパス'"
普通、複数の宛先を設定するときには「,」(半角カンマ)でアドレスを区切ったら良さそうなものなんだが(実際、LotusNotesの場合はそれでうまく行く)、Thunderbirdだとうまく行かない。
実験
リスト2
Public Sub testHoge() Dim tbPath As String tbPath = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" tbPath = """" & tbPath & """ -compose """ Dim mailTo As String mailTo = "hoge@foo.bar.jp,fuga@foo.bar.jp" '……(1)' Dim mailSubj As String mailSubj = "ち~んw" Dim mailBody As String mailBody = "ち~んw" Shell tbPath & _ "to=" & mailTo & "," & _ "subject=""" & mailSubj & """," & _ "body=""" & mailBody & """" End Sub
たとえば、(1)のように送信先アドレスに半角カンマ区切りで複数のアドレスを与えたつもりでも、これを実行すると、
こうなる。一つ目のアドレスにしか反応しとらん。
対応
あれこれとggっていて、このページにたどりついた。
カンマではなく、セミコロン ";" で連結するのでは?
ということだったので、そうしてみた。
リスト3
Public Sub testHoge() Dim tbPath As String tbPath = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" tbPath = """" & tbPath & """ -compose """ Dim mailTo As String mailTo = "hoge@foo.bar.jp;fuga@foo.bar.jp" '……(1)' Dim mailSubj As String mailSubj = "ち~んw" Dim mailBody As String mailBody = "ち~んw" Shell tbPath & _ "to=" & mailTo & "," & _ "subject=""" & mailSubj & """," & _ "body=""" & mailBody & """" End Sub
変えたのは(1)のところのみ。「,」(半角カンマ)を「;」(半角セミコロン)に変えただけ。
実行結果
コードを実行してみると、
おおっ! ちゃんと2箇所あてのメールになっとる!
感想
めちゃくちゃ簡単でした。
幸せというものは、案外足下に転がっているものなんだなあ。。。(『青い鳥』風)
これで、このときのThunderbirdメール作成メソッドで、メールアドレスを渡す部分
Shell thunderbirdPath & _ "to=" & mailTo_ & "," & _ "cc=" & CC_ & "," & _ "bcc=" & BCC_ & "," & _ "subject=""" & mailSubject_ & """," & _ "body=""" & strBody & """," & _ "attachment=""" & strAttFile & """" End Sub
を、
Shell thunderbirdPath & _ "to=" & Replace(mailTo_, ",", ";") & "," & _ "cc=" & Replace(CC_, ",", ";") & "," & _ "bcc=" & Replace(BCC_, ",", ";") & "," & _ "subject=""" & mailSubject_ & """," & _ "body=""" & strBody & """," & _ "attachment=""" & strAttFile & """" End Sub
に変えるだけで複数アドレス指定に対応できるなあ。