Outlook Object Model で本文の編集のために Word の機能を呼びだすマクロ


Outlook 2007 はメッセージの表示や編集に Word 2007 のコンポーネントを使用しています。そして、Outlook Object Model からも、Inspector オブジェクトの WordEditor プロパティを使って Word の機能を呼びだすことができます。以下は、メッセージの作成の際、カーソル位置に任意の文字列を赤い太字の 20 pt のフォントで入力するサンプルです。

' ここをトリプルクリックでマクロ全体を選択できます。
Sub EnterText()
    Dim objDoc ' As Word.Document
    On Error Resume Next
    Set objDoc = Application.ActiveInspector.WordEditor
    With objDoc.Windows(1).Selection
        .Font.Bold = -1
        .Font.Color = &HFF
        .Font.Size = 20
        .TypeText "挿入する文字列"
    End With
    Set objDoc = Nothing
End Sub

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

Outlook Object Model で本文の編集のために Word の機能を呼びだすマクロ」への6件のフィードバック

  1. 素晴らしいマクロの数々、有難うございます。いつも参考にさせていただいております。
    本マクロについてご教示いただきたいのですが、どういうわけか上手く動作しません。当方、Outlook2003を利用しているのですが、Outlook2007でないと動作しないのでしょうか。。
    On Error Resume Nextの部分を外して試してみたのですが、「オブジェクト変数またはwithブロック変数が設定されていません」というエラーが発生します。お時間のある時で構いませんので、どのようにすれば上手くいくかご教示いただければ幸いです。

    • Outlook 2003 では [電子メールの編集に Microsoft Office Word 2003 を使用する] がオンになっていなければ、Word の機能を呼び出すことはできません。

      • ご回答ありがとうございました。

        ご指示の通り、[電子メールの編集に Microsoft Office Word 2003 を使用する] がオンにして試してみたのですが、ワードのウィンドウそのものが開いた状態となるため、Outlookのマクロが実行できないです。

        実は、私がやりたかったのは、本文のテキストを選択した状態でマクロを実行すると、文字フォントをMP ゴシックにしたり太字にしたりできるマクロを作ることで、「テキスト形式のメールを指定文字数で折り返すマクロ」辺りも参照させていただいたのですが、上手く出来ません。
        もし可能であれば、どのようにマクロを組めばよいかご教示いただければ幸いです。

        どうぞ宜しくお願い致します。

      • Word のウィンドウが開いた状態でも、Outlook のウィンドウでマクロを実行すれば、Word 側で動作するはずです。
        ただ、Word を使うならマクロも Word で実装するほうが分かりやすいですね。
        Outlook 2003 で Word をエディタとして使用している場合、本文をクリックしてから [ツール]-[マクロ] で Word のマクロメニューが使えるようになります。
        ここでマクロを記録したり、Visual Basic Editor でマクロを記述すれば、メールの編集中にそのマクロが使えるようになります。

  2. 早速のご回答、誠にありがとうございます。

    仰る通り、Outlook のウィンドウでマクロを実行すると、Word 側で上手く動作しました。
    Wordを起動することなく、Outlookだけでマクロを動作させることができればベストなのですが、Outlookだけで実現が困難なようであれば、是非このやり方を活用させていただこうと思います。

    ありがとうございました。今後とも宜しくお願い致します。

  3. はじめまして。
    ステキなマクロをありがとうございます。楽しく拝見させていただいております。
    こちらのマクロは、あらかじめ選択しておかなければいけませんが、固定文言の書式を変更することはできますでしょうか?
    具体的には、お互いoutlookにてメールしている場合は、送られたメールを返信する際に、sent:やSubject:といったヘダー情報が自動的につけられますが、こちらの書式を変更したいと考えています。(メールラリーが続いた際に赤くして上記のヘダー情報をわかりやすくしたいです)
    以下の①と②のサイトを参考にinstr関数とrangeを駆使して変更を試みましたが、二つ目のヘダーから位置がずれてしまいました。
    ヘダー情報にある送信先アドレスがアドレス帳から引用しておりブランクがあり、instr関数で正しく文字位置をカウントできていなかったり、instr関数で取得する文字列とrangeでの文字位置がずれているのが原因のひとつなのかと推測しておりますが、手詰まりになってしまいましたのでご質問させていただきました。

    ①http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11118390011
    ②http://officetanaka.net/excel/vba/function/InStr.htm

    こちらの知恵袋やWEBサイトを参考にinstr関数を使用してsent:などヘダー情報のキーとなる単語(FromとToとなる二つ)を検索、つど文字数を検索し、FromとToで囲まれた文字数分をrangeで範囲指定して書式変更していたのですが、二つ目よりずれてしまいました。

    恐れ入りますがご教授いただけますと幸いです。

コメントを残す