Outlook で HTML ソースの編集を行うマクロ


Outlook Express では HTML メールのソースを編集することができるのですが、Outlook ではその機能がありません。
そこで、Outlook で HTML メールのソースを編集するマクロを作ってみました。コードは以下の通りです。

' ここをトリプルクリックでマクロ全体を選択できます。
Sub HTMLEdit()
    Dim objShell As Object
    Dim objFso As Object
    Dim strFileName As String
    Dim stmFile As Object
'
    Set objShell = CreateObject("WScript.Shell")
    Set objFso = CreateObject("Scripting.FileSystemObject")
    strFileName = objShell.ExpandEnvironmentStrings("%temp%\") & objFso.GetTempName()
    Set stmFile = objFso.CreateTextFile(strFileName, True)
    stmFile.WriteLine ActiveInspector.CurrentItem.HTMLBody
    stmFile.Close
    objShell.Run "%windir%\notepad " & strFileName, , True
    Set stmFile = objFso.OpenTextFile(strFileName, 1)
    ActiveInspector.CurrentItem.HTMLBody = stmFile.ReadAll
    stmFile.Close
    objFso.DeleteFile strFileName
End Sub

使用方法:

  1. 新規メッセージを作成します。
  2. 上記のマクロを実行します。
  3. メモ帳が起動しますので、HTML ソースを編集して上書き保存します。
  4. メモ帳を閉じると、編集した HTML ソースがメッセージに反映されます。

マクロの登録方法やメニューへの追加について

広告

Outlook で HTML ソースの編集を行うマクロ」への7件のフィードバック

  1. Outlook2007にて、HTMLソースの編集を行うマクロを実行させようと思っております。

    当方VBAの知識なく、貴ブログのご指示に従い、マクロの登録~実行を行ってみたのですが、

    “オブジェクト変数またはWithブロック変数が設定されていません。”

    とのメッセージにて実行ができません。
    どのような設定をすれば良いのか、ご指導を願えませんでしょうか?

    よろしくお願い申し上げます。

  2. I’m using a plugin to edit my html source code in my outlook 2010, just google for “HTML Source Editor For Outlook 2010” and you will find it (i hope)

  3. この方法でソースを編集して反映させるとメール本文の行間が異様に大きくなってしまいます。
    (win7_outlook2007)

    行を選択してみると間に改行が余分に含まれているわけではなく、純粋に各行の縦マージン?が大きくなっているようです。

    中間のテンポラリファイルを介さずにHTMLBodyを一度変数に格納し、何も変更しないで再度~Item.HTMLBodyに入れ直しても同様です

    HTMLBodyを変更した場合は、それ以外にも何かしらの手間をかけてあげないと元のレイアウトで表示することは出来ないのでしょうか?

    • 私の手元の環境にあるOutlook 2007で試してみましたが、そのような動作にはなりませんでした。
      Outlookを終了してから%AppData%\Microsoft\TemplatesにあるNormalEmail.dotmをリネームし、再起動して回避しないでしょうか?

      • ご提示いただいた手順を試しましたがダメでした

        もしかしたら元々のメール形式が違うのかもしれません…
        元のメール編集するためのoutlookのメニューを開くとソースの編集項目はないのですが上記処理後に出てくるようになります

        恐らくpタグの定義(css関係?)が正しく引き継がれていないような感じです
        メール形式はリッチテキスト形式がデフォルトとなっているのですが、この時点からして既にダメなのかもです…リッチテキスト形式=インターネットメール=HTMLメールなどという認識がそもそも違っていそうです…

        社内メールゆえ、outlook側の作成メール形式が変更できず他にどんな設定があるのかも確認できなかった為にこのような勘違いとなりました
        申し訳ありません…

      • Outlookではリッチテキスト形式とHTML形式は異なるものです。
        そのため、リッチテキスト形式のメールのHTMLソースを取得すると、Outlookの内部ではリッチテキスト(RTF)からHTMLへの変換処理が発生し、おそらくはそのタイミングで予期しない段落設定になってしまうのだと思います。
        HTMLソース編集を行う前にOutlookのUIからメール形式を変更した場合は回避できないでしょうか?

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中