怠日記

写真・金魚・昆虫・プログラミングの趣味を語るサイトです。似たようなことをnoteにも書いたり書いてなかったり。

VBScript - Outlook メールの本文をテキストファイルに書き出す

Outlook メッセージファイルを HTML 形式で生成するスクリプトを書いている。

メール本文にどのような HTML を設定するのが適切なのか、 Outlook で作ったメッセージファイルのソースを参考にしようと思ったが、どうしたら見られるのか分からなかった。

仕方がないので、スクリプトからメッセージファイルを開き、メール本文(HTML)をテキストファイルに書き出すことにした。

前提:Outlook を起動しておくこと。

あとは定数 MSG_FILE_PATH にファイルパスを設定し、スクリプトを実行するだけで良い。

Temp フォルダにランダムなファイル名でテキストファイルが作られる。

Option Explicit
'Outlook メッセージファイルのパス
Const MSG_FILE_PATH = "〈Outlook メッセージファイルのパス〉"
'------------------------------
'本文を取得
'------------------------------
Dim mailBody
mailBody = ""
With GetObject(, "Outlook.Application")
  With .GetNamespace("MAPI")
    With .OpenSharedItem(MSG_FILE_PATH)
      mailBody = .HTMLBody
      .Close 1
    End With
  End With
End With
'------------------------------
'テキストファイルに保存(UTF-8)
'------------------------------
'書き込み先のファイルパスを生成
Dim path
With CreateObject("Scripting.FileSystemObject")
  path = .BuildPath(.GetSpecialFolder(2), .GetTempName())
End With
'ファイルに書き込む
With CreateObject("ADODB.Stream")
  .Type = 2
  .Charset = "UTF-8"
  .Open
  .WriteText mailBody
  .SaveToFile path
  .Close
End With
WScript.Echo "書き込み完了" & vbLf & path

入力チェックやエラー処理は入っていないが、自分で使う分にはこれで十分だろう。