【入門編】【初心者向け】添付ファイルが「画像ファイル」のみの場合に、自動でインライン表示に切り替える判定ロジック – Outlook VBA解析バイブル

スポンサーリンク

現場で差がつく!Outlook VBA:添付画像を「インライン表示」に自動変換する極意

こんにちは。自動化の世界へようこそ。
日々、Outlookの業務を手作業でこなしていませんか?「マクロの記録」ボタンを押すだけの世界から一歩踏み出し、「オブジェクトを操る」というプロの領域に足を踏み入れましょう。

今回は、実務で非常に要望の多い「添付ファイルを自動で本文内にインライン表示(埋め込み)させる」というテクニックを解説します。ただ添付するだけでなく、「見せ方」まで制御できるようになると、あなたのメールは一気にプロフェッショナルな輝きを放ち始めます。

—

なぜ「インライン表示」が重要なのか?

通常、ファイルを添付すると、受信者は「ダウンロード」という一手間を強いられます。しかし、画像を本文に埋め込めば、相手はメールを開いた瞬間に内容を確認できます。この「相手の心理的負担を減らす」という配慮こそが、一流のエンジニアの仕事です。

—

今回のミッション:判定ロジックの設計図

「添付ファイルが画像なら、自動で埋め込む」。これを実現するために、以下の3つのステップで考えます。

1. 拡張子チェック: 添付ファイルが `.jpg`, `.png`, `.bmp` かを判定する。
2. HTMLメールへの変換: インライン埋め込みはHTML形式でしか機能しません。
3. CID(Content-ID)の付与: 画像にIDを割り当て、HTML側から参照する。

—

実装コード:魔法のロジック

まずは、以下のコードを標準モジュールに貼り付けてみてください。

Sub SendInlineImageMail()
Dim OutApp As Outlook.Application
Dim OutMail As MailItem
Dim Att As Attachment
Dim FilePath As String
Dim FileName As String

Set OutApp = Outlook.Application
Set OutMail = OutApp.CreateItem(olMailItem)

‘ 1. 添付したいファイルのパスを指定
FilePath = “C:\Users\YourName\Desktop\sample.png”

With OutMail
.Subject = “画像インラインテスト”
.BodyFormat = olFormatHTML ‘ 重要:HTML形式に強制設定

‘ 2. ファイルを添付
Set Att = .Attachments.Add(FilePath)

‘ 3. 画像判定とインライン化
FileName = LCase(Right(FilePath, 4))
If FileName = “.png” Or FileName = “.jpg” Then
‘ CIDを設定:これがHTMLとの紐付けキーになります
Att.PropertyAccessor.SetProperty “http://schemas.microsoft.com/mapi/proptag/0x3712001E”, “myImage”

‘ 4. 本文にHTMLタグを挿入
.HTMLBody = “

以下が画像です:

”
End If

.Display ‘ まずは確認のため表示
End With
End Sub

—

コードの解説:ここが「プロの勘所」

初心者がよく陥る罠が、「添付しただけでは表示されない」という点です。

  • PropertyAccessorの魔法:

`Att.PropertyAccessor.SetProperty` という呪文を使っています。これは「添付ファイル」に対して「Content-ID」という住所を教え込む作業です。これがないと、HTML側でいくら `` と書いても、Outlookはどのファイルを表示すればいいのか迷子になってしまいます。

  • BodyFormatの強制:

`olFormatHTML` を指定しないと、せっかくのHTMLタグがただの文字列として表示されてしまいます。「何を送るのか(形式)」を最初に定義するのは、自動化の基本中の基本です。

—

陥りやすいエラーとその解決策

1. 「ファイルが見つかりません」エラー

  • ファイルパスの文字列は正しいですか?`Dir(FilePath)` 関数を使って、ファイルが存在するか事前にチェックする癖をつけましょう。

2. 画像が×印で表示される

  • ほとんどの場合、CIDの不一致か、HTMLタグの綴りミスです。`src=’cid:myImage’` の部分と、`SetProperty` で指定した文字列が完全に一致しているか確認してください。

—

次のステップへ向けて

このロジックをマスターすれば、次は「複数の画像を自動で並べる」「特定の署名を自動で差し込む」といった応用が容易になります。

VBAは、あなたの思考をそのまま「自動化された現実」に変換する最強のツールです。まずはこのコードを動かし、自分の環境で画像がメール本文に出現する瞬間を体験してください。その小さな感動が、あなたをさらなる高みへと押し上げてくれるはずです。

「ここをもっとこうしたい!」という要望があれば、いつでも聞いてくださいね。応援しています!

タイトルとURLをコピーしました