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

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

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

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

Outlook

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

Q&A

解決済

1回答

1858閲覧

Outlook VBAでテンプレートから作成した返信メールに図形が表示されない。

km0815.lj

総合スコア14

VBA

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

Outlook

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

0グッド

0クリップ

投稿2022/02/10 10:10

Outlook VBAでテンプレートから作成した返信メールに図形が表示されない。
どの様にすれば図形が表示されるようになるでしょうか。

VBA

1Sub メール返信() 2 3'Outlook用の定義 4 Dim objSelect As Outlook.Selection 5 Dim objIns As Inspector 6 Dim objItem As Object 7 Dim objItem2 As Object 8 9 Set objIns = Application.ActiveInspector 10 Set objSelect = Outlook.Application.ActiveExplorer.Selection 11 Set objItem = objSelect.Item(1) 12 Set objItem2 = _ 13 CreateItemFromTemplate("C:\Users\user1\AppData\Roaming\Microsoft\Templates\template1.oft") 14 15 Set objReItem = objItem.ReplyAll 16 17 With objReItem 18 .BodyFormat = 2 19 .Body = objItem2.Body & objReItem.Body 20 .Recipients.ResolveAll 21 .Display 'メールを表示します。 22 End With 23 24'オブジェクトを解放します。 25Set objReItem = Nothing 26 27End Sub

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

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

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

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

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

ken3memo

2022/02/10 19:53

With objReItem .BodyFormat = 2 https://docs.microsoft.com/ja-jp/office/vba/api/outlook.olbodyformat アイテム本文の形式を指定します。 OLBODYFORMAT 列挙 (OUTLOOK) 名前 値 説明 olFormatHTML 2 HTML 形式 .Body = objItem2.Body & objReItem.Body でテンプレート(objItem2)本文.Bodyを代入していますが、 ア. objItem2 の .BodyFormat は 指定しなくてもいいの? Set objItem2 = _ CreateItemFromTemplate("C:\Users\user1\AppData\Roaming\Microsoft\Templates\template1.oft") で作成すると、どの.BodyFormat?.BodyFormatを変更すると変換されるから触らなくてそのままでいいのかな イ. .htmlbody なんてプロパティもあるので、参考となれば https://docs.microsoft.com/ja-jp/office/vba/api/outlook.mailitem.htmlbody
km0815.lj

2022/02/15 01:25

ご返信遅くなり申し訳ございません。 ア.すみません。初心者の為、そのままで良いのかも分かりません。 また、どのように指定して良いのかも分かりません。 指定方法をご教示頂けないでしょうか。 イ.参考にしましたが、html文が長く直接記述出来ないので、テンプレートにしました。
guest

回答1

0

ベストアンサー

図形が埋め込まれたHTML本文を図形ごとコピーするという場合、BodyやHTMLBodyなどでは正常に動作しません。
何故なら、HTMLに埋め込まれた画像は実際には添付ファイルとして存在しますが、通常の方法で添付ファイルをコピーしても埋め込み画像と認識されないためです。
このあたりの詳細を説明すると大変なので、どうやったらコピーできるかだけ説明します。

Outlookの本文を編集する際には内部的にWordの機能が使われており、Outlookの本文はWordのオブジェクトモデルを使って編集できます。
例えば、objReItemのメール本文の先頭にobjItem2の本文を図形を保ってコピーするという処理は以下のようになります。

VBA

1 Dim docItem2 As Object 2 Dim docReItem As Object 3 4 objItem2.Display 5 Set docItem2 = objItem2.GetInspector().WordEditor 6 docItem2.Content.Select 7 docItem2.Parent.Selection.Copy 8 9 objReItem.Display 10 Set docReItem = objReItem.GetInspector().WordEditor 11 docReItem.Range(0, 0).Select 12 docReItem.Parent.Selection.Paste

投稿2022/02/18 10:11

millefeuille

総合スコア226

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

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

km0815.lj

2022/02/21 07:53

ご返信遅くなり申し訳ございません。 ご回答ありがとうございます。 図形も表示されるようになりました。 実行結果から初心者ながらなんとなく動きが分かりました。 ただ、以下の様に変更したところ、下書きメールが2つ(1つは新規、1つは返信用)ができました。 新規メールの分は削除すれば良いという認識であっていますでしょうか。 それとも、追記する場所が違う等、誤っているところがありますでしょうか。 質問ばかりで申し訳ございませんが、宜しくお願い致します。 Dim objSelect As Outlook.Selection Dim objIns As Inspector Dim objItem As Object Dim objItem2 As Object Dim docItem2 As Object '追記 Dim docReItem As Object '追記 Set objIns = Application.ActiveInspector Set objSelect = Outlook.Application.ActiveExplorer.Selection Set objItem = objSelect.Item(1) Set objItem2 = _ CreateItemFromTemplate("C:\Users\user1\AppData\Roaming\Microsoft\Templates\template1.oft") Set objReItem = objItem.ReplyAll  '以下、ご教示頂いた部分の追記 objItem2.Display Set docItem2 = objItem2.GetInspector().WordEditor docItem2.Content.Select docItem2.Parent.Selection.Copy objReItem.Display Set docReItem = objReItem.GetInspector().WordEditor docReItem.Range(0, 0).Select docReItem.Parent.Selection.Paste
millefeuille

2022/02/23 05:21

テンプレートの本文をコピーするために作成したメール(objItem2)は削除してかまいませんので、以下の1行を最後に追加してください。 objItem2.Close olDiscard
km0815.lj

2022/02/23 14:57

ご返信ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問