本日はエクセルからメール(Thunderbird )を送るVBAをご紹介。
CDOでメール送信しても良かったんですが、人によって署名が違うしころころ変えるので、弊社一押しメーラー(サンダーバード)からの送信にしました。
実行環境
Windows 10 Pro(64ビット): 1803
Microsoft Office Professional Plus 2010: 14.0.4760.1000(32ビット)
Thunderbird: 60.8.0(32ビット)
メール送信VBA:SendToTB
VBE標準モジュールに下記コードをコピペします。コピペでそのまま使えます!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Sub SendToTB() Dim strTBPath As String ' サンダーバードパス Dim strTo As String ' 宛先 Dim strCC As String ' CC Dim strBCC As String ' BCC Dim strSubject As String ' 件名 Dim strBody As String ' 本文 Dim strFilePath As String ' 添付ファイルパス ' exeの場所が違うと立ち上がらないので注意 strTBPath = """C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"" -compose " ' 宛先系複数送信時はカンマ区切り strAdress = "'hamami@hamalabo.com'" strCC = "''" strBCC = "''" strSubject = "【日報 " & Month(Date) & "/" & Day(Date) & "】" strBody = "こんにちは。%0d%0aはまみです。" strFilePath = "" Shell strTBPath & _ "to=" & strAdress & "," & _ "cc=" & strCC & "," & _ "bcc=" & strBCC & "," & _ "subject=""" & strSubject & """," & _ "body=""" & strBody & """," & _ "attachment=""" & strFilePath & """" End Sub |
注意事項
今回現場に提供して引っかかったポイントが2か所ありました。コメントにも記載してるようにexeの場所が違う場合。
これは環境により異なるので、それぞれに合わせてご利用下さい。
もう一個がOfficeのバージョン。
弊社32bitで統一してたハズなのに何故かちらほらいらっしゃった64bitOffice。でその64bitのOffice環境下にて使用してみた所、【はこのマシンでは利用できないため、オブジェクト を読み込めませんでした。】とダイアログ。
で、OKを押すと更に、【コンパイルエラー: プロジェクトまたはライブラリが見つかりません。】とダイアログ。
もしやと思い参照設定を確認してみた所、Microsoft Windows Common Controls 6.0が参照不可になっていた。
レガシーコントロールは64ビットじゃ使わせてあげないんだからねっ!って例のアレ。こいつには回避策は無く、32bitに出来ない環境なら残念ながら諦めるしか無い。。。
そんな訳で32bit限定ですがまだまだVBAからのメール送信は需要が高い!
集計したセルを参照にしておけば非エンジニアでも有効活用出来ると思うので、是非利用してみてください~(ᵔᴥᵔ)
コメント
試してみましたが、メールの本文が一行改行された状態で出力されていましたが、消せませんか?
>hogeさん
変数strBodyに改行コードを入れなければ改行されないと思います(ᵔᴥᵔ)