• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでメール本文中に画像を挿入する方法)

エクセルVBAでメール本文中に画像を挿入する方法

このQ&Aのポイント
  • エクセルVBAを使ってアウトルックメールにてメール送信するマクロを作成しています。
  • 本文中に画像を挿入する方法を調べていますが、添付ファイルではなく、本文と本文の間に画像を差し込む方法がわかりません。
  • メール送信先、本文は同じエクセルのContentsシートにあり、画像はPictシートに格納されています。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

エクセルでBase64エンコードしてメールデータにつけるのは難しいような気もしますので OutlookのVBAでエクセルを操作する方法はいかがでしょう。 【Outlook VBA】メール本文にExcelの画像を挿入し作成/送信する方法! http://extan.jp/?p=6803

その他の回答 (2)

回答No.3

メールは、拡張仕様として「マルチパートメール」がサポートされています。 マルチパートとは、本文を複数のパートに分け、それぞれのパートに「バイナリ」や「テキスト」を置く事が出来ます。 補足にある Content-Type: application/octet-stream; は、「このパートがバイナリデータである」と指示しています。 name="image001.emz" は「このパートの名前」を指定しています。 Content-Description: image001.emz は、このパートの説明です。 Content-Disposition: inline; は、このパートをインラインにする(文字の中に配置する)という指定です。 filename="image001.emz"; は、このパートを保存する際のファイル名を指定しています Content-Transfer-Encoding: base64 というのは「このパートは、バイナリを『base64』という変換方法でテキスト化しています」という指示です。 このようにマルチパートで記述すると「テキスト、画像、テキスト」のように、本文の途中に画像などを置く(厳密には、画像含めて全てが本文、ですが)事が可能です。 なお、途中に画像を入れる場合でも、添付する場合でも「すべてテキストに変換して送信しないとならない」ので、送信前に「自分でbase64などでテキストに変換してメール本文に書き込む」必要があります。 つまり「バイナリデータを(無変換で)メールに挿入出来ない」のです(1つ前の回答の「バイナリは入れられない」は、そう言う意味です) 「マルチパートメールの作り方」や「base64のエンコード方法」でググると、貴方のやりたい事の答えが出てきます。

回答No.1

メールプロトコルで送受信出来る物は、仕様上「テキストだけ」です。 「添付すれば画像や他の物も」と思うかも知れませんが、実は「バイナリデータをテキストデータ(文字列)に変換して、テキストとして送っている」のです。 なので、HTML形式のメールであっても「本文中に画像などのバイナリデータを挿入する事は不可能」なのです。 しかし「本文中に画像が挿入されているメールを良く見る」と思います。 あれは「バイナリデータを挿入している」のではなく「HTMLのIMGタグを挿入して、どこかのホームページに置いてある画像を引用しているだけ」なのです。 画像を表示するIMGタグも、実態は「画像のURLだけが書かれたテキスト(文字列)」なので、本文中の何処にでも設置できます。 そういう訳で「バイナリデータを直に埋め込む事は不可能」なので、当然、ググっても出てきません。 添付した(テキスト化されてる)画像にアンカーを付けて、そのアンカーを参照するようにURLで指定したIMGタグを本文に埋める事は可能ですが、最近は、そういうメールはセキュリティソフトで非表示にされてしまうので、お勧めできません。

kozy1974
質問者

補足

メールプロトコルに詳しいわけではありませんが、ウェブ上でどこにも置いていない画像をメール本文中に挿入して送ることが出来ています(例:画面のスクリーンショット等)。 実際送ってみた後、メールのソースを確認すると、画像の部分にこのように出ています。画像をURLで指定しているということはありません。 Content-Type: application/octet-stream; name="image001.emz" Content-Description: image001.emz Content-Disposition: inline; filename="image001.emz"; size=7445; creation-date="Thu, 17 Feb 2022 08:30:26 GMT"; modification-date="Thu, 17 Feb 2022 08:30:26 GMT" Content-ID: <image001.emz@01D8241B.76FA9440> Content-Transfer-Encoding: base64 そのため、本文中に画像を埋め込むことは可能だと考えています。

関連するQ&A