PR

VBA Thunderbirdでメール作成する方法 複数ファイル添付 差出人設定

Excel VBAでThunderbird(サンダーバード)を使ってメール作成し、複数のファイル添付する方法です。

Excel VBAでThunderbird(サンダーバード)を使ってメール作成して複数のファイル添付する方法

Excel VBAでThunderbirdメールを作成するには「shell関数」を使うことで実現できます。

定型的な業務連絡やリマインドメールなんかは、この方法で自動化すれば効率がグッと上がります。

ただし、Thunderbirdはメール作成はできますが、メール送信するコマンドがないので、自動送信や複数メール作成するならOutlookがおすすめです。

ここでは Excel VBAでThunderbird(サンダーバード)メールを作成し、複数のファイル添付する方法 を紹介します。

メール文書を用意する

書式はなんでもいいですが、メール文書を用意しておきましょう。宛先・件名・本文などですね。コードに直接書くと汎用性がないので、Excelに書いておきます。

ここでは下図のような書式を用意しました。

宛先・件名・本文などを書いたメール文書を用意する

差出人はなくてもOKです。空白の場合やサンダーバードに設定のないアカウントの場合、サンダーバードの既定アカウントが自動設定されます。 

宛先・件名・本文は必須です。なくても今回のコードは動きますが、意味がないのでやめましょう。

そして添付ファイルがあればファイルパスを設定します。今回は3つまで添付できる仕様にしました。

Thunderbirdを使ってメール作成するコード

メール文書を読み取って「Thunderbirdを使ってメール作成する」コードを掲載します。

標準モジュールを追加して貼り付けてください。


'
' 処理 :Thunderbirdを使ってメール作成する
'
Public Sub SendMailThunderbird()
On Error GoTo SendMailThunderbirdError

  ' メール文書のセルから値を取得
  Dim Sheet As Worksheet: Set Sheet = Worksheets("Sheet1")
  Dim FromAddr As String: FromAddr = Sheet.Cells(1, "B").Value      ' 差出人
  Dim ToAddr As String: ToAddr = Sheet.Cells(2, "B").Value          ' 宛先
  Dim CcAddr As String: CcAddr = Sheet.Cells(3, "B").Value          ' CC
  Dim Subject As String: Subject = Sheet.Cells(4, "B").Value        ' 件名
  Dim Body As String: Body = Sheet.Cells(5, "B").Value              ' 本文
  Dim Attachments As String: Attachments = "'"                      ' 添付ファイル
  Dim Sepa As String
  Dim i As Long
  For i = 0 To 2
    If Sheet.Cells(i + 6, "B").Value <> "" Then
      Attachments = Attachments & Sepa & Sheet.Cells(i + 6, "B").Value
      Sepa = ","
    End If
  Next i
  Attachments = Attachments & "'"

  ' Thunderbird起動コマンド
  Dim Path As String: Path = """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose "
  
  ' メール作成
  Shell Path & "from=" & FromAddr & _
               ",to=" & ToAddr & _
               ",cc=" & CcAddr & _
               ",body=" & Body & _
               ",attachment=" & Attachments & _
               ",subject=" & Subject

  Exit Sub

SendMailThunderbirdError:
  MsgBox Err.Description, vbCritical, "Thunderbirdメール作成"
End Sub

ソースコードの説明

続いてコードの説明をしていきます。

メール文書のセルから値を取得

前半部分は、メール文書を設定したセルから値を取得するコードになります。


  ' メール文書のセルから値を取得
  Dim Sheet As Worksheet: Set Sheet = Worksheets("Sheet1")
  Dim FromAddr As String: FromAddr = Sheet.Cells(1, "B").Value      ' 差出人
  Dim ToAddr As String: ToAddr = Sheet.Cells(2, "B").Value          ' 宛先
  Dim CcAddr As String: CcAddr = Sheet.Cells(3, "B").Value          ' CC
  Dim Subject As String: Subject = Sheet.Cells(4, "B").Value        ' 件名
  Dim Body As String: Body = Sheet.Cells(5, "B").Value              ' 本文
  Dim Attachments As String: Attachments = "'"                      ' 添付ファイル
  Dim Sepa As String
  Dim i As Long
  For i = 0 To 2
    If Sheet.Cells(i + 6, "B").Value <> "" Then
      Attachments = Attachments & Sepa & Sheet.Cells(i + 6, "B").Value
      Sepa = ","
    End If
  Next i
  Attachments = Attachments & "'"

VBAの基礎知識がある方が読んでいると思うので、この辺りの説明は割愛します。

Thunderbird起動

Thunderbird起動するコマンドです。Shell関数を使って起動します。


  ' Thunderbird起動コマンド
  Dim Path As String: Path = """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose "
  Shell Path

差出人の設定

差出人を設定するコードです。サンダーバードに設定されている差出人が利用できます。設定のないメールアドレスが指定された場合、既定のメールアドレスが自動で設定されます。


  Shell Path & "from=" & FromAddr
  'Shell Path & "from=" & "vegeta@saiyan.com"

宛先の設定

宛先を設定するコードです。複数人に送る場合は「";"(セミコロン)」で区切ります。


  Shell Path & "to=" & ToAddr
  'Shell Path & "to=" & "nappa@saiyan.com" & ";" & raditz@saiyan.com

写し(CC)の設定

写し(CC)を設定するコードです。複数人に送る場合は「";"(セミコロン)」で区切ります。


  Shell Path & "cc=" & CcAddr
  'Shell Path & "cc=" & "dodoria@friezaforce.com" & ";" & "zarbon@friezaforce.com"

BCCの設定

BCCを設定するコードです。複数人に送る場合は「";"(セミコロン)」で区切ります。


  Shell Path & "cc=" & CcAddr
  'Shell Path & "cc=" & "frieza@friezaforce.com" & ";" & "cui@friezaforce.com"

件名の設定

件名を設定するコードです。


  Shell Path & "subject=" & Subject
  'Shell Path & "subject=" & "うごけないサイヤ人など必要ない!!!"

本文の設定

本文を設定するコードです。


  Shell Path & "body=" & Body
  'Shell Path & "body=" & "へっ!きたねえ花火だ"

添付ファイルの設定

添付ファイルを設定するコードです。全体を”‘”(アポストロフィ)で括ります。複数設定する場合は”,”(コンマ)区切りで設定します。ファイルが存在しない場合はエラーメッセージが表示されます。


  Shell Path & "attachment=" & Attachments
  'Shell Path & "attachment=" & "'" & "C:/saiyaman1.txt" & "," & "C:/saiyaman2.txt" & "'"

メールを新規作成して内容を記載する。

上の設定をまとめたのがこちら。「Shell Path」で新規メール作成をし、宛先・件名・本文・添付ファイルなどの設定をおこないます。送信形式は本文により自動設定となります。標準はテキスト形式ですが、HTMLタグを含めることでHTML形式のメールも送信可能です。


  ' メール作成
  Shell Path & "from=" & FromAddr & _
               ",to=" & ToAddr & _
               ",cc=" & CcAddr & _
               ",body=" & Body & _
               ",attachment=" & Attachments & _
               ",subject=" & Subject

Thunderbirdを使ってメール作成するマクロの登録

Excel側の作成ボタンを右クリックしてマクロを登録します。

Excel側の送信ボタンを右クリックしてマクロを登録をクリックする

マクロ名SendMailThunderbirdを選択してOKボタンを押下する

作成ボタンを押下してみよう。すると・・・・。

Thunderbirdを使ってメール作成するマクロを実行した結果

おおおー、メール作成されたー!!

あとは、送信ボタンを押したら送信できます。

サンプルのダウンロード

とりあえずサンプルを用意したので、ダウンロードしたい方はどうぞ。

VBAでメール作成して自動送信する方法 複数ファイル添付 Thunderbird版

ダウンロードした後は、ファイルを右クリックしてプロパティを開き、下図の赤枠部分の「許可する」にチェックを入れて使えるようにしないとマクロが動作できないのでご注意を。

ダウンロードした後はファイルを右クリックしてプロパティを開いてセキュリティの許可するにチェックを入れる

悪意あるコードは書いてないけど、利用は自己責任でお願いします。当方では一切の責任を負いません。

まとめ

Excel VBAでExcel VBAでThunderbird(サンダーバード)メールを作成し、複数のファイル添付する方法を紹介しました。

これで業務効率の向上も間違いなし!今回はThunderbird(サンダーバード)でしたが、Outlookを使ってメール送信する方法もあります。

最初に書いた通り、Thunderbirdはメール作成はできるけど、メール送信ができない。自動送信や複数メール作成するならOutlookを使うしかないです。

こちらを参考にどうぞ。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。