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

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

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

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

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

Q&A

1回答

4745閲覧

Outlook VBA メールの返信文の作成(定型文) ※HTML形式で、かつ、元々のメールの書式をそのまま残したい。

yu_tommy

総合スコア10

VBA

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

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

0グッド

0クリップ

投稿2022/01/19 02:49

こんにちは。
Outlook VBAの質問です。

取引先から、メールで注文書が送られてくるのに対して、
注文請書を返信する際のメールの文章をVBAで作れるようにしたいと考えております。

Sub HTML形式のOutlookメールを新規作成する()

'Outlook用の定義 Dim objReItem As Outlook.MailItem Set objReItem = ActiveInspector.CurrentItem.ReplyAll With objReItem .BodyFormat = 2 ' 「3」の場合リッチテキスト型となります。「1」はテキスト型、「2」は HTML型となります。 .HTMLBody = "<span style=""font-size:10.5pt;font-family:メイリオ"">○○課長様<br>" _ & "<br>" _ & "いつも大変お世話になっております。<br>" _ & "ご注文書を添付致しておりますので、<br>" _ & "ご確認の程、何卒宜しくお願い致します。<br>" _ & "<br>" _ & "以上の件、何卒宜しくお願い申し上げます。<br>" _ & "<br><br></span>" _ & objReItem.Body objReItem.Recipients.ResolveAll .Display 'メールを表示します。 End With 'オブジェクトを解放します。 Set objReItem = Nothing

End Sub

としているのですが、相手から送られてきている文章の改行がなくなってしまい、
見づらい形となってしますます。

何か対策がございましたら、ご教授頂けますと幸いです。
何卒宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

相手からは、普通のメールでくるのですか?
※相手からはHTMLメールではなく、普通のテキスト?それとも相手からの注文メールもHTML形式?

objReItem.Body を使っているので、相手からは普通のメールだとして、

& "以上の件、何卒宜しくお願い申し上げます。<br>" _ & "<br><br></span>" _ & objReItem.Body

↑返信文章の最後で、
& objReItem.Body
として、相手の本文を使って(最後に挿入)、返信を作っていると思いますが、
これだと、.Bodyの文字列の中には(相手からの返信には)<br>がないので、
HTML形式だと、改行無しで判断、表示されるからだと思います。

なので、テキスト文の改行コード CRLF を<br>に変換すると良いのでは?

& "以上の件、何卒宜しくお願い申し上げます。<br>" _ & "<br><br></span>" _ & Replace(objReItem.Body, vbCrLf, "<br>") '相手本文改行を<br>に変換してHTMLメールにセットしてみる


Replace(objReItem.Body, vbCrLf, "<br>") '改行vbCrLfを<br>に変換して、.HTMLBodyへ

あっ、もし改行コードが vbCr だったら、
Replace(objReItem.Body, vbCr, "<br>") '改行vbCrを<br>に変換して、.HTMLBodyへ
かなぁ。※outlookのテキスト改行表現が、どちらかわからなかったので・・・すみません。

確認していないので、間違っていたらスミマセン。

VBA vbCrLf などをキーワードにして検索してみてください。
解決のヒントとなれば幸いです。

※相手からはHTMLメールだったら、
あっ、
>元々のメールの書式をそのまま残したい

& "以上の件、何卒宜しくお願い申し上げます。<br>" _ & "<br><br></span>" _ & objReItem.HTMLBody 'objReItem.BodyじゃなくてobjReItem.HTMLBodyにするだけ?そんなことないか・・・

投稿2022/01/19 12:11

ken3memo

総合スコア132

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

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

ken3memo

2022/01/19 12:21

確認で、msgbox ActiveInspector.CurrentItem.HTMLBody とやると、何が表示されますか? 'Outlook用の定義 Dim objReItem As Outlook.MailItem msgbox ActiveInspector.CurrentItem.HTMLBody '先頭で確認してみる Set objReItem = ActiveInspector.CurrentItem.ReplyAll エラーだったら、すみません、スルーしてください。 もしHTMLの書式付で相手からのメール本文がひょうじされるなら、 Dim objReItem As Outlook.MailItem Dim strHTML as string StrHTML = ActiveInspector.CurrentItem.HTMLBody '選択されているメールHTMLを変数に保存 Set objReItem = ActiveInspector.CurrentItem.ReplyAll '・ '・ '・ & "以上の件、何卒宜しくお願い申し上げます。<br>" _ & "<br><br></span>" _ & strHTML '冒頭で保存したHTMLを最後に追加する みたいにならないかなぁ。 と、想像してみたり。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問