質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

22836閲覧

VBAで【Thunderbird】を起動させメール作成したい

cd987456

総合スコア33

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/03/14 04:55

エクセルのVBAを使ってフリーのメールソフト【Thunderbird】を起動させ、
メールを作成したいと思っています。

下記コード(1)でエクセルからメール作成はできます。
★やりたいことは
エクセルの固定シート「メール文面」のA列に記載した文面をメール本文に貼付たいです。

 コード(1)の
mailBody = "てすとw%0aてすと"
mailBody = に「メール文面」シートの内容を貼り付けたいです。

 例えば、メモ帳を起動させ、貼り付ける。⇒コード(2)でできます。
うまく、【Thunderbird】のメール本文に貼り付けられませんか?
コード(1)をどのように書き換えれば、可能か御教示下さい。

●コード(1)

Public Sub メール作成() 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" Dim mailSubj As String mailSubj = "てすと" Dim mailBody As String mailBody = "てすとw%0aてすと" Dim strAttFile As String strAttFile = "添付ファイルフルパス" Shell tbPath & _ "to=" & mailTo & "," & _ "subject=""" & mailSubj & """," & _ "body=""" & mailBody & """," & _ "attachment=""" & strAttFile & """" End Sub

●コード(2)

Sub メモ帳貼付() Dim ws As Worksheet Dim ret As Long, maxrow As Long Set ws = Sheets("メール文面") With ws maxrow = .Cells(Rows.Count, 1).End(xlUp).Row .Range(.Cells(1, 1), .Cells(maxrow, 1)).Copy ret = Shell("Notepad.Exe", vbNormalFocus) AppActivate ("無題 - メモ帳") CreateObject("Wscript.Shell").SendKeys "^v" Application.CutCopyMode = False End With End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

SendKeyに頼ると、意図しない結果になるリスクがあり不安です。

可能であればOutLookをVBAで操作した方が無難かと。(Excelから起動+操作可能なはずです)

投稿2018/03/14 05:44

ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

bodyオプション(mailBody変数)に本文を指定するのはご存知のようなので、そこの編集だけやってあげればよいように思います。
ただ改行を考慮しないといけないようですので、以下の記事を参考にしました。
https://forums.mozillazine.jp/viewtopic.php?t=9506
手元に環境がないのでこれでいけるのかはわかりませんが、お試しください。
尚、リンク先ではvbCrLf%0d%0aに置き換えているようですが、私の環境ではvbLfでした。

VBA

1Dim maxrow As Long 2Dim rg As Range 3Dim mailBody As String 4 5' A列の値を結合 6With Sheets("メール文面") 7 maxrow = .Cells(Rows.Count, 1).End(xlUp).Row 8 Set rg = .Range(.Cells(1, 1), .Cells(maxrow, 1)) 9 mailBody = "" 10 For Each c In rg 11 mailBody = mailBody & c & "%0d%0a" 12 Next 13End With 14' セル内改行を考慮 15'mailBody = Replace(mailBody , vbCrLf, "%0d%0a") 16'mailBody = Replace(mailBody , vbCr, "%0d%0a") 17mailBody = Replace(mailBody, vbLf, "%0d%0a")

投稿2018/03/14 05:24

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cd987456

2018/03/14 07:06

早速の回答ありがとうございます。 上手くいきました。 助かりました。
guest

0

http://blog.clockahead.com/2014/02/vbathunderbird.html

このbody のところに本文がはいるようです

投稿2018/03/14 05:06

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問