Outlook VBAを掌握する極限の知見:HTMLメール本文の「完全テキスト抽出」と堅牢な設計論
こんにちは。開発プロジェクトの現場で、数々のOutlook自動化の闇を見てきたチーフアーキテクトだ。
業務効率化ツールとしてOutlook VBAを導入したものの、「HTMLメールの本文をきれいに取得できず、不要なタグや変な改行が残る」「担当者が変わると文字化けやパースエラーが頻発する」といった壁にぶ돌当たっていないだろうか?
ネット上には「`Item.Body`を使えばいい」「`Replace`関数でタグを消せばいい」といった表層的な情報があふれている。しかし、実務の現場で飛び交うメールはそんなに甘くない。CSS、インライン画像、謎のOutlook独自タグ、そして巧妙に隠された空白文字。これらを甘く見たコードは、必ず本番稼働後にバグを引き起こす。
今回は、Outlookのオブジェクトモデルの深淵を覗き、`Body`と`HTMLBody`のメカニズムを完全理解した上で、実務で絶対に破綻しない「正規表現を用いたHTMLテキスト抽出の極意」を授けよう。
—
1. なぜ「`Body`」だけでは実務で使い物にならないのか
Outlook VBAにおいて、メールの本文を表すプロパティには主に以下の2つが存在する。
- `Body`: プレーンテキスト形式での本文。Outlookが自動的にHTMLをテキストに変換したものが格納される。
- `HTMLBody`: HTML形式のソースコードそのもの(``, ``, `