Outlook 研究所

疑問・質問・マクロの要望

このブログでは Outlook に関する質問や疑問、マクロの要望などを募集しています。
この記事のコメントに入力してご質問等をお寄せください。(コメントに入力される際には、他の質問と区別できるよう、できる限り名前の欄にハンドル名などを入れてくださると助かります。)
また、ご質問に Outlook のバージョンや使用環境の詳細を記載していただくと、より的確な回答が可能になると思いますので、ご協力をお願いします。

なお、可能な限りお答えしたいと思いますが、すべてのコメントやメッセージにお答えできるとは限りません。特に、ログやデータの解析が必要なトラブルに対するご質問や、複雑なマクロのご要望などにはお答えできない場合があります。
確実に回答が必要な場合や、差し迫ったトラブルへの対応、製品の恒久的な対応やマイクロソフト社の正式見解が必要な場合は、マイクロソフトのサポート窓口にお問い合わせください。

1,389件のコメント »

  1. お世話になります。

    早速ですが、ショートカットをひとつ教えて頂きたく存じます。
    私はoutlookの仕事リストで取り消し線を頻繁に使用します。
    しかし、都度「フォント」を選択し、「取り消し線」を選択するのを億劫に感じてしまいます。
    ショートカットを探したのですが、エクセル上で使用できる「Ctrl+5」はどうやらoutlook上では使用できないようです。

    そこで皆様にお知恵を拝借したく存じます。
    outlookで使用できる取り消し線のショートカットを教えて頂けないでしょうか。

    恐れ入りますが、宜しくお願い致します。

    コメント by 北海道物産展 — 2010年10月29日 @ 1:58 PM | 返信

    • バージョンが不明ですが、Outlook 2003 でしょうか?
      残念ながら取り消し線のショートカットは Outlook にはありません。
      Outlook 2007 以降ならマクロで実装できるかもしれません。

      コメント by outlooklab — 2010年10月29日 @ 11:51 PM | 返信

      • 失礼致しました。
        バージョンの記入を失念しておりました。

        弊方のバージョンは2003でございます。
        ショートカットが存在しないとのことで大変残念です。

        早速御回答頂き、誠に有難うございました。
        大変参考になりました。

        コメント by 北海道物産展 — 2010年11月1日 @ 11:18 AM

  2. お世話になります。
    バージョン:OutLook2003 SP3

    目的:VBEでユーザーフォームを作り、フォーム上に予定表の今選択されている日付の当日分のデータを条件に基づき抽出し、リストアップ(表示)させたい。また、可能であればそのリストの変更を実データに反映させたい。

    私の知識では当目的を達成させるためには…
    リストボックスかListViewを使用。
    Findメソッドで条件検索をかけ、随時上のコントロールにadditemで格納していく。
    …なら普通に出来るのですが、

    質問:

    データソースと連結してもう少しDB的に作れない物でしょうか?
    リストボックスのヘルプにはデータソースと連結出来て、例えば連絡先フォルダと連結させて表示させることが出来るような事がListBoxの始めのヘルプに書いてあります。そのやり方がわかりません。
    もし、可能なら単純にリストボックスのControlSouceなどにフィルタをかけた予定表のデータソースと連結させて表示・編集が出来るかと思うのですが。
    リストボックスに予定表をデータソースとして連結はどのようにするのでしょうか?


    また、予定表で今選択している日にちをVB側で取得するにはどうすれば良いでしょうか?
    選択している各アイテムを取得することは出来ると思うのですが空白(当日に予定(アイテム)が一つもない日)の場合はどうすれば取得出来ますか?


    リストアップするにはどのようなコントロールが良いでしょうか?
    listBox
    ListView
    は使用しております。他にDBGridなどは使用できるのでしょうか?


    ユーザープロパティも含めて予定表のフィールドをデータベースとして扱えますか?
    ちょっと質問になって無い気がしますが、過去当方では簡単はMDBを利用してVB6側でハンドリングする
    プログラムを趣味で開発しました。その当時はODAだかなんだか(実はあんまりわかっていません;)で
    DataSetやDataSouceなどを指定してもう少し簡単にできた気がします。
    予定表のデータをその様にソースとして扱えるのでしょうか?

    以上 乱文申し訳ございません。
    OutLookの書籍など少ないのでこのようなHPは大変有り難く思います。
    ありがとうございます。
    宜しくお願い申し上げます。

    コメント by 日曜大工 — 2010年11月2日 @ 3:36 AM | 返信

    • ご質問に回答します。
      ① Exchange ISAM ドライバーをインストールすればデータソースとして Outlook のデータを使用できるようです。
      ただ、これを使用する方法の詳細についてほとんどドキュメントが存在しないので、どこまでできるかが不明です。また、私もこのような使い方はしたことがないので、残念ながらこの方法についてはほとんどアドバイスできません。
      http://office.microsoft.com/ja-jp/access-help/HP001032667.aspx に使い方がありますので、こちらを参考にしてみてください。
      ② 残念ながら、Outlook 2003 では現在表示している日付を取得することはできません。Outlook 2007 以降には CalendarView というオブジェクトが新たに追加されており、そのオブジェクトの DisplayedDates プロパティで表示している日付を取得することができるようになります。
      ③ どのようなことをしたいかにもよりますが、通常なら Listbox や ListView で充分ではないかと思います。
      ④ 前述のとおり、Exchange ISAM ドライバーを使って Outlook のデータをデータソースとして使用する方法はあるようです。

      コメント by outlooklab — 2010年11月2日 @ 12:51 PM | 返信

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

        ①Exchange ISAM ドライバーを利用する方法があるんですね^^。
         ですがちょっと私には敷居が高そうです;;。
        これに関連してもう一つ教えて頂きたいのですがlistBoxのヘルプにはこのようにあります。

        引用元ヘルプファイル↓
        ヘルプの「Outlook – フォーム」「コントロールリファレンス」「オブジェクトとコントロール」
        リスト ボックス (ListBox) コントロール

        解説
        リスト ボックス (ListBox) コントロールをデータ ソース (データ ソース : コントロールが連結されているデータの場所です。たとえば、連絡先フォルダのフィールドなどがあります。)に連結 (連結 : 連絡先フォルダのフィールドなど、特定のデータ ソースに関連付けられているコントロールを示します。)した場合、選択された値はデータ ソースに格納されます。

        とありますが、

        質問:
        ①どのようにリストボックスと連絡先フォルダを連結するのでしょうか?
         ヘルプファイルにはこの記述が無いように思います。
        ②連絡先フォルダが可能なら予定表フォルダも可能でしょうか?
         推測です;

        この質問の回答が教えて頂いた「Exchange ISAM ドライバー」でしたらすいません。
        ただ、ヘルプファイルには「連絡先フォルダのフィールドなど・・・」と書いてあるので出来る物かと思ってしまいます。しかし肝心のその方法が見あたらないのです。

        またまたすいません。
        宜しくお願い申し上げます。

        コメント by 日曜大工 — 2010年11月2日 @ 7:01 PM

      • データソースというと、データベースのテーブル単位で割り当てるようなイメージを持ってしまいますが、ListBox コントロールに割り当てられるのは、そのフォームで開いているアイテムの一つのフィールドだけです。
        「連絡先フォルダのフィールド」というのは、正確には「現在開いているフォームが連絡先フォルダにある場合、そのアイテムのフィールド」となります。

        コメント by outlooklab — 2010年11月3日 @ 1:04 AM

  3. そういうことなんですね。フォーム違いですね(^^;。連絡先フォルダに関連づけられたユーザーフォームの場合に出来ることということですよね。ありがとうございました。

    何しろ情報が少ない上に、素人な物で”出来る、出来ない”が分かるだけでも大変助かりました。

    誠にありがとうございます。

    コメント by 日曜大工 — 2010年11月3日 @ 6:41 AM | 返信

  4. utlook2003の添付ファイルの自動印刷のVBAを教えて

    outlook2003を使用しています。
    仕事で出荷指示の資料を各営業所から添付ファイルで受けておりますが、
    業務の合間をみて、メールを確認しなければならず
    時間・手間の無駄になっております。

    メールを受けたら、添付ファイルを自動印刷するVBAを教えていただけないでしょうか?
    何卒、ご教授をお願いいたします。

    コメント by ozzy — 2010年11月11日 @ 7:26 PM | 返信

    • 一口に印刷、といっても、添付ファイルの種類によって印刷する方法は全く異なります。
      添付ファイルが Word ファイルなら Word、Excel ファイルなら Excel、PDF ファイルなら Adobe Reader というように、ファイルごとにそれぞれのアプリケーションで印刷のためのオプションを指定して起動する必要があります。
      また、ファイルの種類やインストールされているアプリケーションによっては、Outlook から印刷させることができない可能性もあります。
      添付ファイルの種別だけでも特定できないでしょうか?

      コメント by outlooklab — 2010年11月11日 @ 9:20 PM | 返信

  5. 初めまして。

    早速ですが、マクロの要望を投稿させていただきます。
    Outlook2003を使用しているのですが、社内ではメールを一通一通、個別のファイルとしてネットワークドライブに保存する習慣があります。
    エクスプローラで保存先フォルダを開き、Outlookからドラッグするのですが、その際のファイル名が「件名.msg」から変更することができず、手動で変更する必要があります。(受信日時_差出人_件名.msgというファイル名で保存したいと考えています)
    そこで、「受信トレイのすべてのメッセージを MSG ファイルとして保存するマクロ」の、保存ファイル名を変更して「受信日時_差出人_件名.msg」というファイル名でメールを保存するボタンを作成し、使用していますが、表示しているフォルダ内のメールがすべて保存されるため、選択したメールのみを保存するようなマクロの作成をお願いしたいです。
    基本的には上記マクロと同様で、保存対象を選択したメールのみに変更したいのですが、当方、マクロの知識が全くなく(エクセルでマクロの記録をしたことがある程度)、変更方法がわからず悩んでいます。
    作成したいマクロの条件としては、以下のようなものです。
    1)選択したメールのみを保存する
    2)複数選択の場合は選択したメールがすべて保存される
    3)保存先はマクロ内にパスを指定する形で(上記マクロと同様)
    4)マクロの変更でmsg形式とrtf形式両方が(排他で)指定できる

    4)は指定できなくてもいい(msg形式のみでも問題ない)のですが、3)までは必須としたいです。

    突然でわがままを言いますが、一度検討いただけないでしょうか。

    よろしくお願いいたします。

    コメント by 夕凪 — 2010年11月16日 @ 11:52 PM | 返信

  6. いつもお世話になっております。
    VBAproject.otm 配布について
    教えてください。

    現在、Outlookにてツールを作成し、配布を予定しています。
    配布には、既知の問題があり、一度もOutlookのマクロを使用したことのないPCにVBAproject.otmを配布してもマクロを読み込まない現象があります。
    マイクロソフトのナレッジでは、ALT+F8かALT+F11で解決するとありました。

    現在、数台のPCで実験を行いましたが、上記解決策でVBE起動の場合、上書き保存までしなければ、マクロを読み込みませんでした。
    (マクロにはAplication_startupで各ツールを実行するためのメニューを追加しています)
    しかし、上書き保存を行うと、署名が外れてしまいます。

    新規にマクロを実行するPCにVBAproject.otmをコピーした際、利用者側に負荷をかけずにマクロを読み込ませることができるようにすることができるでしょうか。

    配布の際は、VBSファイルで各処理を自動化しています。
    マクロ作成時のOutlookのバージョンは、Outlook2003で
    配布対象のPCは、Outlook2000,2003,2007,2010です。
    OSは、WindowsXP以上になります。

    また、COMアドインについては、使用許可されていない状況です。

    以上、ご教示いただければ幸いです。

    よろしくお願いいたします。

    コメント by 福田 — 2010年11月19日 @ 8:55 AM | 返信

    • 残念ながら、Outlook ではマクロを配布する方法が用意されていません。
      ご認識のとおり、otm だけを配布しても起動しないなどの問題が生じます。
      各自で登録を行うか、許可を受けて COM アドインとして実装・展開してください。

      コメント by outlooklab — 2010年11月19日 @ 9:54 PM | 返信

      • いつも助かります。
        ご回答どうもありがとうございました。

        コメント by 福田 — 2010年11月21日 @ 1:40 AM

  7. はじめまして。
    とても初歩的な質問ですが、会社でExchange Server経由でメール
    を受信しているのですが、容量が少なめなため、自動仕分けでローカル
    ドライブにメールを振分けた後、手動で削除済みメッセージの削除を
    実行しておりますが、出張時などは、携帯端末から完全削除が実行でき
    ないため、メールの受信が止まってしまいます。Outlook2003を利用
    しているのですが、マクロ等で自動的に振分け後に削除済みメッセージ
    を削除することは可能なのでしょうか?

    コメント by はにてん — 2010年11月20日 @ 1:43 PM | 返信

    • 自動仕分けでメールをローカルに移動した場合には、メールボックスには残りません。
      ただ、そうしてしまうと、携帯端末からそのメールが見れなくなってしまいます。
      また、Outlook のマクロで何かをするという場合、出張中でも Outlook を起動し続けておく必要があります。
      それらを考慮すると、出張前にできるだけメールボックスのメールをローカルに移動し、完全削除を実行するということぐらいしかできないでしょう。

      コメント by outlooklab — 2010年11月20日 @ 6:10 PM | 返信

  8. Outlookのマクロについて質問があります。

    Outlook2007環境で連絡先のメールアドレス(Email1Address,Email2Address,Email3Address)を変更するマクロを作成しています。
    連絡先に対しての変更は実装できたのですが、連絡先のなかに配布リストというものがあり困っています。
    連絡先を変更したあとに、配布リスト内のメンバに対して、「今すぐ更新」というボタンを押したときと同じ処理をかけてやりたいのですが、マクロでこの処理を行うことは可能なのでしょうか?

    最初はrecipient.resolveメソッドがこの処理かと思ったんですが、配布リストに登録されたメンバーのアドレスにEmail2Address,Email3Addressが登録されている場合(正確には複数登録されている場合)うまくいきません。

    アドレスが一件だけ登録されているときは、対象のmemberに対してresolveをかけてやると更新されるようにはなりました。

    「今すぐ更新ボタン」を使用すると、配布リストのメンバアイコン(?)がカラーになるんですが、いろいろやってみてもカラーにならない状態です。(クリックすると連絡先ダイアログは開きます。)

    説明がなかなか難しいのですが、最終的には配布リストを含めためメールアドレスも変更してしまうマクロをつくりたいのですが、なにか有用な情報がありましたらよろしくお願いします。

    コメント by まがたま — 2010年11月22日 @ 6:39 AM | 返信

    • 確認してみましたが、複数のアドレスが設定されている連絡先で、メンバーの更新をマクロから行う方法は用意されていないようです。
      面倒かもしれませんが、手作業で更新してください。

      コメント by outlooklab — 2010年11月22日 @ 12:58 PM | 返信

  9. outlook2003(2007でも同じでした)でメッセージ送信時
    にチェックをかけるためuserformを作成し、
    Application_ItemSendでUserForm1.Show (vbModal)で
    呼び出していますがモーダルになりません
    送信しようとしているアイテムが操作出来てしまいます
    これはこういうものなのでしょうか?

    コメント by ある — 2010年12月3日 @ 11:03 PM | 返信

    • 残念ながらそういうものです。
      Application オブジェクトのイベントの中でモーダルとした場合、その親ウィンドウは ActiveExplorer になります。そのため、アイテムを表示しているウィンドウは操作可能となってしまいます。

      なお、ダイアログのオブジェクトで Inspector のイベントをハンドルすることにより、送信しようとしているアイテムが操作できないよう最小化させ続けるということは可能と思われます。

      コメント by outlooklab — 2010年12月4日 @ 11:35 PM | 返信

      • そういうことなら仕方がないです、、
        最小化して対処することにします
        ありがとうございました

        コメント by ある — 2010年12月6日 @ 2:53 PM

  10. はじめまして。
    早速ですが、概要と詳しい要望に入らせていただきたいと思います。

    Outlook 2010 のVBAを利用して連絡先内アイテムに含まれるアドレスからのメールに「仕分けのルール」を適用させたいのです。
    詳しく説明しますと私の環境では「個人用の連絡先」が以下の階層になっています

    個人用の連絡先
    +連絡先(空)
    |
    +連絡先候補(空)
    |
    +友達(アイテム50件ほど)
    |
    +大学(アイテム30件ほど)


    のような感じです。
    この階層からアイテム内のアドレスを取得して(階層フォルダからのアドレスの取得は以前ここで拝見したことがあるような気がします・・・)、
    そのアドレスからのメールが以下のように仕分けさせるように「仕分けルール」を設定し、
    できれば、このマクロを頻繁に使用するとして、PCに負荷や時間がかからないように、
    差分で仕分けルールを設定できる(このマクロですでに仕分けされたアイテムは再仕分け設定せずに無視する)
    VBAを作成したいのですが、僕には手の及ばないプログラム力が要すようなので要望したいと思います。

    受信メール
    +友達(フォルダ)
    | +鈴木(フォルダ、このフォルダ内に鈴木さんからのメールが仕分けされる)
    | |
    | +佐藤
    |
    +大学(アイテム30件ほど)


    コメント by さもさも — 2010年12月4日 @ 9:34 PM | 返信

    • 以前、同じようなご要望をいただいてマクロを作成しました。こちらをご覧ください。

      メッセージを連絡先ごとのフォルダに振り分けるマクロ

      メッセージの差出人を連絡先の表示名に置き換え、さらに連絡先ごとのフォルダに振り分けるマクロ

      コメント by outlooklab — 2010年12月4日 @ 11:43 PM | 返信

      • 返信ありがとうございました
        ↑のURLのマクロは非常に便利なのですが
        仕分け設定をマクロで可能にできないでしょうか?
        仕分け設定を適用させれば随時自動でマクロを使用せずともメールが各フォルダに配られるので
        快適に動作するのですが、難しいでしょうか?

        コメント by さもさも — 2010年12月5日 @ 1:10 AM

      • では、以下のようなマクロをご要望ということでしょうか?
        ・連絡先フォルダの階層を維持した形で差出人によりフォルダの振り分けをするルールをマクロで作成する。
        ・一度ルールを作成した連絡先ではルールは再作成しない。
        ・連絡先フォルダにあるすべての連絡先アイテムに対して対応するフォルダを事前にマクロで作成する。(ルールを作るためにはあらかじめフォルダを作る必要があるため)
        ・一つの連絡先アイテムに複数のアドレスが存在する場合、どのアドレスからのメールも一つのフォルダに振り分ける。
        ・ルールは連絡先フォルダおよびそのサブフォルダのすべてのアイテムに対し個別に作成される。(たとえば、サブフォルダなども合わせて100個の連絡先があった場合、ルールも100個作られる)

        コメント by outlooklab — 2010年12月5日 @ 6:32 PM

      • >・連絡先フォルダの階層を維持した形で差出人によりフォルダの振り分けをするルールをマクロで作成する。
        >・一度ルールを作成した連絡先ではルールは再作成しない。
        >・連絡先フォルダにあるすべての連絡先アイテムに対して対応するフォルダを事前にマクロで作成する。(ルールを作るためにはあらかじめフォルダを>作る必要があるため)
        >・一つの連絡先アイテムに複数のアドレスが存在する場合、どのアドレスからのメールも一つのフォルダに振り分ける。
        >・ルールは連絡先フォルダおよびそのサブフォルダのすべてのアイテムに対し個別に作成される。(たとえば、サブフォルダなども合わせて100個の連
        >絡先があった場合、ルールも100個作られる)

        おっしゃるとおりです。分かりやすくまとめていただきありがとうございます。

        コメント by さもさも — 2010年12月8日 @ 2:38 AM

  11. お世話になります
    アカウントが複数あり、相手先により手動で切り替えています
    そのため送信時チェックにおいて送信内容表示のため(の確認)
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Debug.Print “送信名:” & Item.SenderName
    Debug.Print “送信AD:” & Item.SenderEmailAddress
    Debug.Print “宛 先:” & Item.To
    Debug.Print “件 名:” & Item.Subject
    Debug.Print “本 文:” & Item.Body
    、、と記述してみましたが
    SenderName、SenderEmailAddress、Toが表示されません(空っぽ)
    item.saveを初っ端に行うとToは入ってきますが
    SenderName、SenderEmailAddressは空のままです
    SenderName、SenderEmailAddressはどのタイミングで取れる状態になるんでしょう?
    ※ActiveInspector.CurrentItemでも同じでした、、

    コメント by ある — 2010年12月6日 @ 3:09 PM | 返信

    • SenderName や SenderEmailAddress はメッセージが実際に送信された際に使用された送信者のアドレスが設定されます。これは、送信処理の過程で実行されるのですが、ItemSend イベントはその処理の前に呼び出されるため、ItemSend の時点ではこれらのプロパティに値は設定されていません。
      Outlook 2007 以降では SendUsingAccount により、送信に使用しているアカウントが取得可能ですので、こちらのプロパティを使用してください。

      コメント by outlooklab — 2010年12月7日 @ 12:50 PM | 返信

  12. お世話になります
    当該サイトの「良い電子メールを書くには」という場所に
    →Bcc の受信者は自分自身が Bcc で受け取ったことに気付かず、
    全員に返信をすることで自分が Bcc に含まれていたことを意図
    せず明らかにしてしまうことがあります

    、、とあります。
    実業務において実際これで問題になったこともあります。

    これをVBAで回避する方法はありますか?
    ・返信は可能(ただし受けたアドレスと違う場合はエラー)
    ・全員に返信はエラー
    ・転送は可能(ただし警告)
    ※転送、返信は件名のfwやreでの判断ではなくイベントが取れますか?

    コメント by ある — 2010年12月6日 @ 5:09 PM | 返信

    • こちらについては、自分が Bcc なのかどうかを判断するということが難しいと思われます。
      自分が受信者に含まれていないという判断をすると、配布リストや外部のメーリングリストなどでも自分が受信者に含まれていないということになってしまい、全員に返信ができません。
      それでもかまわないのであれば、ReplyAll イベントなどにより全員に返信の制御は可能でしょう。

      コメント by outlooklab — 2010年12月7日 @ 12:59 PM | 返信

  13. 予定表と仕事リストをできるだけ連携させて使いたいと思っています。
    [予定表] で、[表示] メニューの [仕事リスト]をクリックし、[仕事リストビュー]で[選択した日の作業中の仕事]が一番近いです。

    ただ、できれば「選択した日に期限になる仕事」の一覧を表示させたいのです。
    フィルタ、VBA、SQL、何でもいいのですが、予定表で選択した日に期限を迎える仕事の一覧を表示させる方法を
    ご教示いただけますか。

    英語のサイトだとイメージに近いことを実現する書込みがありそうです。しかし、見るのが有料のようなのです。
    http://www.experts-exchange.com/Software/Office_Productivity/Groupware/Outlook/Q_21294840.html

    よろしくおねがいします。

    コメント by ぷろぷろ — 2010年12月13日 @ 3:44 PM | 返信

    • すいません、環境を書き忘れておりました。
      windowsXP,outlook2003です。

      コメント by ぷろぷろ — 2010年12月13日 @ 3:49 PM | 返信

    • [時間帯] ビューを使うと、横軸が日付で、開始日から期限までの横棒として仕事が表示されるようになります。
      これにより、期限が同じ日の一覧が表示可能です。

      予定表で選択した日、というのは Outlook 2003 ではマクロなどで取得ができないので、こちらのビューをお使いください。

      コメント by outlooklab — 2010年12月13日 @ 8:46 PM | 返信

      • ありがとうございました。できました。
        勉強になりました。

        コメント by ぷろぷろ — 2010年12月13日 @ 8:55 PM

  14. いつもお世話になります。
    OutlookのHTMLメールについて、VBによる自動編集が行えないかを考えております。
    [当方の環境]
    メール:Outlook 2007/Exchange 2007
    Office:Office 2007

    AccessフォームからOutlookメールを自動送信するプログラムを作成し、定期メールを送信しています。
    本文についてはHTMLによる装飾を多用する為、予めメールテンプレート(HTML形式の.oftファイル)を作成しておき、
    VBでそれを呼び出した後に、To/CC/Titleを設定⇒送信という処理をしています。

    本文内に送信先の氏名やコメント等、都度変化させる箇所があるのですが、
    これも自動化することはできるのでしょうか?

    期待する具体的な動作を申し上げますと、
    ①oftメール呼び出し
    ②HTML編集を行う([氏名]・[コメント]…etc、所定の部分を指定した内容で置換するなど)
    ③送信
    このような流れを考えております。

    なお、このメールの受信者は社内の人間に限りますので、冒頭に記載した環境と同じで、
    HTMLメールの受信拒否などの制限は加えておりません。(リッチテキストでの送受信も可能です)

    よろしくお願い致します。

    コメント by Rocky — 2010年12月18日 @ 1:40 AM | 返信

    • たとえば、メールテンプレートの本文で置き換えられる文字列を %NAME% というように埋め込んでおき、メールの送信前にメールアイテムのオブジェクトの HtmlBody プロパティで HTML 本文の埋め込まれた文字列を Replace 関数で置き換えるということが可能です。

      ただ、マクロなどを使わなくても Word の差し込み印刷機能を使えば Access のテーブルから取得したデータを本文に埋め込んでメール送信というようなことも可能です。
      この記事Word のヘルプなどを参考にしてみてください。

      コメント by outlooklab — 2010年12月18日 @ 5:50 PM | 返信

      • ありがとうございました。
        どちらも試してみて使い勝手を確認してみたいと思います。
        本当に助かりました!!

        コメント by Rocky — 2010年12月20日 @ 11:44 PM

  15. お世話になります。

    業務で依頼のあった処理を完了した旨のメールを返信する作業があります。

    その際の作業は…
    ・本文はほぼ定型なので、毎回貼り付けて、ちょこっと編集
    ・依頼メールはメーリングリストへ送信されているので、返信先もメーリングリストに設定
    ・処理したファイルを添付

    これを自動化したいと考えていますが、以下の2点がわかりません。
    ・返信先の指定方法
    ・送信時のファイル添付方法

    返信先は、メールオプションを開いて返信先の指定をしていますが、ついつい失念して送信してしまうことがあります。
    とりあえず今は、ItemSendイベントを使ってダイアログを出すようにしています。

    送信時のファイル添付はメール作成画面が開いたと同時に添付ファイルの選択画面が出てきたら便利かなと思っております。
    やり方としては、(想像ですが)NewInspectorイベント内で作成されたメールかどうかを判断し、InspectorのCommandBarsから開く形でしょうか?
    ただ、作成されたメールかどうかの判定方法が微妙で、宛先や本文などを使えばできるのでしょうが、気持ちよくないので、何か良い方法はないものでしょうか?
    また、これ以外のやり方があればご教示ください。いずれ自動で添付するようにしたいと思いますが、今はこれでしのごうと思っています。

    環境はOutlook 2003です。年末年始のクソ忙しい時期ですので、お手すきな時にでもお願いします。

    コメント by ぺんぞー — 2010年12月29日 @ 10:59 AM | 返信

    • 完了の返信をするためのマクロを作り、そのマクロで返信先や添付ファイルの追加処理などをするのはどうでしょうか?
      Outlook のマクロではファイルを指定して添付することはできるのですが、ファイルの選択画面が出せるかどうかはちょっと調べてみる必要がありそうです。

      コメント by outlooklab — 2010年12月30日 @ 12:02 PM | 返信

      • > 完了の返信をするためのマクロを作り、そのマクロで返信先や添付ファイルの追加処理などをするのはどうでしょうか?
        そのイメージでお願いします。

        コメント by ぺんぞー — 2010年12月31日 @ 3:07 PM

  16. こんばんわ
    アウトルックを初回起動した際や新たにデータファイルを作成する際、
    C:\Documents and Settings\\My Documents\Outlook ファイル
    に作成されるのですが、強引に任意のフォルダに移動しようとして
    ↑のフォルダのデータファイルを削除し、コピーしたデータファイルを任意のフォルダにおきました。
    起動時にファイルがないので場所を教えてくれとのメーッセージがあったので、任意のフォルダ内のデータファイルを指定しました。
    すると、以後送受信のエラーが発生してしまいました。

    エラーを起こさずに任意のフォルダ内にデータファイルを移動させる
    または 新規作成時に任意のフォルダにデータファイルを作成する方法を教えていただきたいのです

    年末年始は忙しいと思いますので、最低の優先順位でかまいませんので回答よろしくお願いいたします

    コメント by りっく — 2010年12月31日 @ 8:43 PM | 返信

  17. はじめまして。
    まるっきり初心者で恐縮ですが、教えていただきたい事があります。
    今年から勤務先で社外宛メール送信には以下のようなルールが作られました。

    To:自分のアドレス
    CC:ブランク
    BCC:送信したいアドレス全て

    社外から来たメールを「全員に返信」した場合など、
    手動でToからBCCに移さなければいけません。
    ルール通りになっていないと送信エラーで戻ってくるような仕組みになっており、
    慣れかもしれませんが、再送の手間が非常にタイムロスになっています。

    To/CC/BCCに1つでも社外ドメインが含まれていたら
    Toに自分のアドレス、その他にTo/CC/BCCに含まれていた
    全ての宛先をBCCに入力(移動)して送信する、というマクロが
    もし可能であれば是非教えていただけると助かります。

    OSはXP、outlook2003です。

    よろしくお願い致します。

    コメント by 初心者 — 2011年1月5日 @ 10:55 PM | 返信

    • 個人情報保護の観点ということかもしれませんが、かなり強引な方法ですね。
      受け取った側としては、誰宛てに送られているのかもわからず、迷惑メールのように見えるかもしれません。
      もっとも、それが会社のポリシーということであればやむをえませんね。

      サーバーとしては Exchange サーバーをお使いでしょうか?
      Exchange サーバーを使っている場合とそうでない場合とでは社内・社外のアドレスの判別方法が異なります。
      たとえば、以下のようなマクロでもよいでしょうか?
      ・送信時に受信者をチェックする。
      ・受信者のアドレスが組織外のものであれば、Bcc に移動する。
      ・アドレスを移動した結果、To に一つもアドレスが残っていなければ、To に自分自身を指定する。
      ・組織内のアドレスに関しては移動を行わない。

      それとも、以下のようなマクロの方がよいでしょうか?
      ・送信時に受信者をチェックする。
      ・To、Cc のアドレスをすべて無条件で Bcc に移動する。
      ・To に自分自身を指定する。

      コメント by outlooklab — 2011年1月6日 @ 12:51 PM | 返信

      • 早速の返信ありがとうございます。
        サーバーはExchange サーバーを使っています。

        「Ccをブランクにしなければいけない(社内宛であっても)」というルールがある為、
        最初にご提示いただいた内容を少し変えて
        ・送信時に受信者をチェックする。
        ・受信者のアドレスが組織外のものであれば、組織内のアドレス・組織外のアドレス(要は全てのアドレス)をBcc に移動する。
        ・アドレスを移動した結果、To Cc に一つもアドレスが残っていなければ、To に自分自身を指定する。

        という内容でお願いできますでしょうか。
        よろしくお願い致します。

        コメント by 初心者 — 2011年1月6日 @ 11:00 PM

      • すべてのアドレスを Bcc に移動するということなら、自分自身が To や Cc にあるかどうかは無視して To に自分自身を指定するということでもよいでしょう。
        では、以下のようなマクロを検討します。
        ・送信時に受信者をチェックする。
        ・受信者のアドレスをチェックし、一つでも組織外のものがあればすべての受信者を Bcc に移動し、自分を To に指定して送信する。

        コメント by outlooklab — 2011年1月7日 @ 12:46 PM

  18. nanaと申します。はじめまして こんばんにちは。
    先日、グーグルメールにて携帯電話メールアドレスを利用して送信できることを知り、
    現在、まれにグーグルメールから携帯電話のアドレス(@ezweb.ne.jp)を送信元として送信しています。

    outlook2007と2010を利用しているのですが、outlook20XXを用いて携帯電話アドレスを送信元としてメール送信する方法はあるのでしょうか?
    あれば教えてください。

    コメント by 恵果 — 2011年1月9日 @ 12:20 AM | 返信

    • Outlook では差出人を指定することで、GMail と同様のことができます。
      手順は下記の通りバージョンによって若干異なります。

      – Outlook 2010 の場合
      1. 新規メッセージ作成のウィンドウを開きます。
      2. [差出人] が表示されていない場合、リボンの [オプション] の [差出人] をクリックします。
      3. 送信ボタンの右に表示されている [差出人] ボタンをクリックし、[他の電子メール アドレス…] をクリックします。
      4. 送信元のアドレスを直接入力するか、[差出人] ボタンをクリックしてアドレス帳から送信元のアドレスを選択し、[OK] をクリックします。
      5. 通常通りメールを作成し、送信します。
      なお、4. で指定した差出人は、次回以降 3. をクリックした際にドロップダウンに表示されるようになるので、そこで選択することが可能となります。

      – Outlook 2007
      1. 新規メッセージ作成のウィンドウを開きます。
      2. [差出人] が表示されていない場合、リボンの [オプション] の [差出人] をクリックします。
      3. 表示された差出人フィールドに送信元のアドレスを直接入力するか、[差出人] ボタンをクリックしてアドレス帳から送信元のアドレスを選択し、[OK] をクリックします。
      4. 通常通りメールを作成し、送信します。

      コメント by outlooklab — 2011年1月11日 @ 12:37 PM | 返信

  19. このサイト、並びに管理人者様にはいつも大変お世話になっております。
    職場にて再びOutlookについての課題が発生致しました。ご教授頂ければ幸いです。

    [環境]
    Outlook 2007/Exchange 2007

    このHPで紹介されていた「Outlook 個人用フォルダ ファイルのパス名を取得するスクリプト」を拡張し、
    個人アカウントの情報をテキストで吐き出せないかを検討しており、
    MSDNのヘルプを参照しましたがなかなか目的の情報を取得できません。

    取得したい情報は以下の二つです。
    ・対象ユーザーのアカウントに設定された「追加のメールボックス」
     →[ツール]-[アカウント設定]-[データファイル]-自身のメールボックス「設定」-「詳細設定タブ」にある追加メールボックス情報
    ・代理人設定
     →[ツール]-[オプション]-「代理人」タブの情報

    これらの情報はどこかを参照することでテキストにする事はできるのでしょうか?

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

    コメント by Rocky — 2011年1月11日 @ 12:51 PM | 返信

    • 追加のメールボックス情報はプロファイルのレジストリにバイナリーデータとして保存されています。これをテキスト化することは難しいでしょう。
      また、代理人の情報はメールボックスの FreeBusy Data フォルダに保存されていますが、この情報を Outlook Object Model などで取得することはできません。
      どうしてもということであれば、C++ で Extend MAPI を使用したアプリケーションを作成する必要があります。

      コメント by outlooklab — 2011年1月12日 @ 12:43 PM | 返信

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

        試してみたところ、
        追加のメールボックス情報は以下の方法で「追加のメールボックスがあるな」、という事が分かりますので、
        この方法で対応しようと思います。(こちらのHPに掲載されているソースを流用させて頂いております。)

        代理人については、そこまで本格的に取り組めないので、あきらめることにしました。

        Set objFS = CreateObject(“Scripting.FileSystemObject”)
        Set myOlk = CreateObject(“Outlook.Application”)
        Set mySession = myOlk.GetNamespace(“MAPI”)
        mySession.Logon

        For Each Folder in mySession.Folders
        If Left(Folder.Name,7) = “メールボックス” then
        stmText.WriteLine Folder.Name
        End If
        Next

        コメント by Rocky — 2011年1月13日 @ 2:43 PM

  20. 早速ですが教えてください。

    仕事でMicro Soft Outlook 2003を使用しています。
    返信の際、送信者の登録のアドレス表示でアドレス以外の
    日本語の表示があります。

    例えば、

      ”●●くん”

    このまま返信をするとそのままの表示で返してしまいます。
    敬称などは気にしないという意見もネットでは見かけますが、気にする方もいるようなので、メールアドレスのみで返信したいです。

    返信の際に自動で日本語部分は削除できるようなソフトはありませんでしょうか?Thunderbirdはアドオンで対処できたのですが、Outlookにはないでしょうか?

    コメント by seita — 2011年1月12日 @ 11:58 AM | 返信

  21. VBA初心者です。

    OUTLOOK自体にマクロを入れて、メール送信時以下の2つのようなことをしたいのですが
    OUTLOOKのコードがわからず困っています。
    申し訳ありませんがよろしくお願いします。
    (エクセル情報からメールを作成し送信するのではなく、OUTLOOK自体に組み込みたいのです。)

    (一つ目)
    @hotmail.co.jpでないアドレスが「宛先」に複数入っていた場合に送信ボタン を押すと、
     
    警告「外部メールが宛先に入っています。BCCでなくても問題ないか再度確認してください」が表示される
     →選択肢:1.このまま送信する、2.BCCに入れなおす
     
    1.選択→通常通り送信される。
    2.選択→BCCにアドレスが移動。

    (二つ目)
    ・添付物があるばあいに、パスワードがかかっていなければ、
    警告「パスワードがかかっていません。パスワードがなくても問題ないか再度確認してください」が表示される
      →選択肢:1.このまま送信する、2.メールキャンセル
     
    1.選択→通常通り送信される。
    2.選択→送信されない。

    コメント by yukawa — 2011年1月14日 @ 1:28 PM | 返信

    • 不十分ですみません。
      詳細を言うと、会社のOUTLOOKで外部メールに対する警告表示がでるようにしたいのです。
      ・異なる複数の会社に同じ外部メールを送る場合、個人情報漏えい防止の観点から
       BCCにいれるべきところを、宛先に入れてしまうことのないようにしたいです。
      ・また、外部メールにワードとエクセルの添付物が付いている場合もパスワードを設定しましたか?という警告が
       表示されるようにしたいのです

      ですのでhotmail.co.jpでなく、本当は、会社のアドレスなのですが、(仮)ということでこちらで質問させていただきました。

      コメント by yukawa — 2011年1月17日 @ 9:47 AM | 返信

      • OUTLOOK2007になります。

        コメント by yukawa — 2011年1月17日 @ 9:48 AM

      • 返信が遅くなりましてすみません。
        メールの送信の際に宛先をチェックするというマクロであれば、作成は可能です。
        しかし、添付ファイルのパスワードの有無に関しては、確認する方法がないため、マクロやアドインなどでは対応できません。

        コメント by outlooklab — 2011年1月17日 @ 12:33 PM

  22. 返信ありがとうございます。
    添付ファイルのチェックは諦めます。別の管理方法(アナログ)で対応します。

    メールの送信の際に宛先をチェックするというマクロをご教示いただけるとありがたいです。
    たびたびですみません、よろしくお願いします。

    コメント by yukawa — 2011年1月17日 @ 4:07 PM | 返信

    • 了解です。
      では社外メールの宛先が含まれる場合に警告を表示し、選択によって BCC に移動するというマクロを作成します。

      コメント by outlooklab — 2011年1月19日 @ 12:41 PM | 返信

      • 今さらですみません。
        社外メールの宛先が「複数」含まれる場合に警告を表示し、選択によって BCC に移動するというマクロに変更は可能でしょうか?
        「複数」=2つ以上
        たびたびですみません。
        よろしくお願いいたします。

        コメント by yukawa — 2011年1月21日 @ 3:06 PM

      • ご要望のマクロを下記で公開しました。
        送信時に宛先をチェックし、選択により Bcc に移動するマクロ

        コメント by outlooklab — 2011年1月22日 @ 4:20 PM

  23. Exchange×Outlook2003で利用しています。
    解決できないことがあるので教えてください。

    会議召集を受けた人の受信トレイに、召集メールがきません。
    また、召集メールが来たときに、予定表は予定が入る時と入らない時があります。

    ユーザー100台中、1台だけで起こっており、他のユーザーは問題ありません。
    また、PCを替えても、該当ユーザーだけにこの現象が起こります。

    どうぞよろしくお願いいたします。

    コメント by KK — 2011年1月18日 @ 5:29 PM | 返信

    • 街頭ユーザーにだけおこるというのは、そのユーザーだけが会議出席依頼を受け取らないということでしょうか?
      その場合、以下のいずれかが考えられます。

      1. 代理人にのみ送信するよう設定されている
      [ツール]-[オプション]-[代理人] で [会議出席依頼や出血の返答は代理人のみに送信する] がオンになっている場合、その人に対しては会議出席依頼は送信されません。

      2. リソースの設定がされている
      [ツール]-[オプション]-[初期設定] の [予定表オプション] をクリックし、[リソースの設定] をクリックして表示されるダイアログで [出席依頼と会議キャンセルを自動処理する] がオンになっている場合、そのユーザーはリソースとして扱われます。
      リソースとは会議室やプロジェクターなど会議に使用するものを意味しており、会議出席依頼の際に一緒に確保できるようにするためのものです。
      リソースは Outlook でログインすることはないため、リソースとして設定されているメールボックスには会議出席依頼は送信されず、会議の開催者が直接リソースとなっているメールボックスの予定表に予定を書き込みます。

      コメント by outlooklab — 2011年1月19日 @ 12:47 PM | 返信

      • 回答ありがとうございます!

        「街頭ユーザーにだけおこるというのは、そのユーザーだけが会議出席依頼を受け取らないということでしょうか?」

        はい。そうです。
        そして、[ツール]-[オプション]-[代理人] で [会議出席依頼や出欠の返答は代理人のみに送信する]
        がオンになっていました。

        なので、チェックを外したいのですが、グレーアウトしていて操作できません。
        どうしたら、チェックを外すことができるでしょうか。
        ちなみに、誰も代理人として指定されていません。

        どうぞよろしくお願いいたします。

        コメント by KK — 2011年1月19日 @ 2:21 PM

      • [ツール]-[オプション]-[代理人] で [会議出席依頼や出欠の返答は代理人のみに送信する
        をオフにできました。

        そして、問題も解決しました。ありがとうございました。助かりました!

        コメント by KK — 2011年1月19日 @ 4:27 PM

  24. 大変困っています。
    pstファイルが2Gを超えそうなため、Outlook 2000からOutlook 2010にバージョンアップしたのですが、最近pstファイルが最大サイズ(2G)に達しました とのエラーメッセージがでて送受信等ができなくなりました。Outlook 2010は50Gぐらいまでpstファイル容量が増えると認識していたのですが・・・。皆さんこんな経験ありませんか?また解決方法を知っていたら、ぜひぜひ教えて頂けないでしょうか。なお、OSはXPです。繰り返しになりますが、大変困っています。

    コメント by Souta — 2011年1月20日 @ 3:32 PM | 返信

    • Outlook 2000 から Outlook 2010 にアップグレードしただけでは 2G の制限は解除されません。Outlook 2000 で使っていた個人用フォルダの制限はそのままだからです。
      個人用フォルダを新しく作成し、そちらを既定の配信先にしてください。
      また、元のアイテムは新しく作成した個人用フォルダにインポートしてください。

      コメント by outlooklab — 2011年1月20日 @ 11:34 PM | 返信

      • ご回答ありがとうございます。Outlookをやめようかとも思っていたのですが、また使い続ける気になりました。

        コメント by Souta — 2011年1月21日 @ 5:12 AM

  25. すいません。いつも参考にさせていただいております。
    手違いで、連絡先のふりがなをすべて消去してしまいました。
    姓、名、会社名ですが、これらのふりがなを
    自動的にせいせいさせることはできないでしょうか。

    コメント by kmachida — 2011年1月24日 @ 12:14 AM | 返信

    • 残念ながら Outlook にはふりがなを自動で生成する機能はありません。
      手入力した際に自動的にふりがなが設定されますが、これは IME (日本語入力ソフト) から漢字変換前の文字列を取得して設定しているのであり、入力された漢字から生成しているわけではありません。

      コメント by outlooklab — 2011年1月24日 @ 12:29 PM | 返信

      • 了解いたしました。

        とすると、Excelかなにかで編集しないとだめですね・・・。

        お手数をおかけしました。

        コメント by kmachida — 2011年1月24日 @ 3:21 PM

  26. いつも参考にさせて頂いています。
    VBAの登録時に”プロジェクトの署名中にエラーが発生しました。署名されていないプロジェクトは保存されました。”と出てきました。その後outlook起動の度にマクロの有効無効のダイアログが出てくるようになってしまいました。今まではそういう確認はありませんでした(デジタル署名は貴サイトの説明を参考に処置していました)。
    この現象の解決方法をご存知でしたらご教授いただきますようお願いします。

    コメント by ある — 2011年2月8日 @ 10:52 AM | 返信

    • デジタル署名用の証明書の期限が切れたか、データが破損した可能性が考えられます。
      改めて証明書を作成し、新しい証明書で署名してみてください。

      コメント by outlooklab — 2011年2月8日 @ 12:33 PM | 返信

      • 返信ありがとうございます
        署名の期限は切れていません
        新しい署名を作ってみましたが同じエラーです
        なんどか署名作ったので沢山残っています(これ消すのはどうすれば、、)

        コメント by ある — 2011年2月8日 @ 1:23 PM

      • %appdata%\Microsoft\Crypto\RSA のサブフォルダに大量にファイルが存在すると思うのですが、それらを一時的に別フォルダにして回避できないでしょうか?
        もしそれで回避するなら、証明書データが破損したことによって現象が発生していると考えられます。

        コメント by outlooklab — 2011年2月9日 @ 12:54 PM

      • 対応案をありがとうございます
        ただ、やってみたのですが消えませんでした。
        で、調べてインターネットオプションから消せることが分かりそこで全て削除しました。その後PCを再起動し、OUTLOOKで署名がないことを確認し、再度署名を作りました。しかしながらやはりVBA保存時にエラーとなってしまいます。書名の詳細から全般タブを見ると署名の絵に赤丸バッテンが付いており、その下の説明に「このCAルート証明書は信頼されていません。信頼を有効にするにはこの証明書を信頼されたルート証明機関のストアにインストールしてください。」とあります。
        証明のパスのタブには「信頼されたルート証明機関のストアに存在しないためこの CA ルート証明書は信頼されていません。」とあります。
        、、、なんのことでしょう?

        コメント by ある — 2011年2月9日 @ 6:17 PM

      • もしかすると証明書の問題ではないのかもしれませんね。
        Visual Basic Editor で VBA のプロジェクトを右クリックし、[ファイルのエクスポート] でマクロをエクスポートしてください。
        そして、VbaProject.OTM というファイルをディスクから探し、見つかったら別のフォルダに移動します。
        すると、マクロのプロジェクトが初期化されるので、プロジェクトを右クリックして [ファイルのインポート] で先ほどエクスポートしたファイルをインポートしてみてください。

        コメント by outlooklab — 2011年2月10日 @ 12:46 PM

      • お世話になります
        色々やって直りました
        証明書にバッテンが付いているのは相変わらず(これば別問題かな)ですが、、
        原因は連絡先をVBAで一覧化するマクロにOutLookの機能で連絡先をCSVでエクスポートしたときの項目見出し部分をコメントとして横にずらーーーっと書いていました
        #VBAでは一部分の一覧なので項目的にはこんだけあるよ、、的なコメントとして
        で、これを削除したり、横に長いのを途中で改行したりすると問題が解決しました

        「コメントが長すぎるとだめ」、、と言う事ですかね、、

        いずれにせよ色々とアドバイスを頂きましてありがとうございました
        色々な視点で見直すきっかけにもなり勉強になりました

        コメント by ある — 2011年2月14日 @ 2:44 PM

      • コメントが長いとそのような現象が発生するのですね。
        全く見当がつきませんでした。
        あまりお役にたてず申し訳ありません。

        コメント by outlooklab — 2011年2月15日 @ 12:31 PM

  27. 初めまして。
    2009.7.13の「Outlook 2003 でメッセージの受信者の部署名により送信チェックを行なうマクロ」というのを見て、”警告”がでても構わないので、次のようなマクロができないか、教えてください。

    コメント by 匿名 — 2011年2月8日 @ 6:56 PM | 返信

  28. 初めまして。
    2009.7.13の「Outlook 2003 でメッセージの受信者の部署名により送信チェックを行なうマクロ」というのを見て、次のようなマクロが欲しい、と思っています。”警告”がでても構わないので、教えてください。バージョンは2003です。

    「差出人や宛先の表示から、日本語の姓名を取得し、表示する」こと。

     うまく説明できなくて、申し訳ないのですが、
     差出人名や宛先は 会社のExchangeServer(?)に登録されている アルファベット表記(表示名)で表示されます。
    宛先が多人数だと、誰に送られていて、誰には送られていないのか、判別に苦労します。
    1人1人の宛先のアルファベットをダブルクリック(あるいは右クリックでプロパティ表示)をすると プロパティ-全般 で、名前として 姓・名が表示されますが、この姓・名を取得し、表示する方法はないでしょうか?(検索先は「連絡先」ではありません。念のため。)
    (姓・名だけでなく、部署や役職なども取得できると もっとうれしいです。)
     よろしくお願いします。

    コメント by MORI,Yasushi — 2011年2月8日 @ 7:13 PM | 返信

    • これは、送信の際のダイアログで表示を行うということでしょうか?
      Outlook 2003 では Exchange のアドレス帳 (Active Directory) に Outlook オブジェクト モデルからアクセスができないので、別途 CDO や ADSI を使う必要があります。
      また、部署や役職も表示するとなると人数が多くなったときに画面に収まりきらなくなるように思います。
      いろいろ問題があるように思うのですが、それでもかまわないということならサンプルを作ります。

      コメント by outlooklab — 2011年2月9日 @ 12:59 PM | 返信

      • レス、ありがとうございます。
        (No.27は 誤送信してしまいました。申し訳ありません。)

        >送信の際のダイアログで表示を行うということでしょうか?
        ダイアログ表示は 出力の1つの方法です。
        今、思いつく状況としては、
        ①多数の宛先に向けて発信されたメールを受信したときに、○○さんには送信されているか、確かめたい。(ダイアログで、「○○さんに送られていますか?」と聞いたり、「△△部は 誰に送られていますか?」など。)
        ②姓しか分かっていない人、同姓の人を 所属部署等の情報から誰なのかを特定したい。(特に送信時に宛先間違いがないか、確認したい。1人1人 ダブルクリックすれば分かるのですが、マウスポインタを当てるだけで、表示されたり、一度に複数の人の所属が吹き出しで表示されたりすると 理想的です。)
        ③送信時に 部署や職位を確認して、送付先を間違えないようにしたい。(例えば 指定した部署や職位以外の人を宛先から削除し、削除した人のリストをエクセルorテキストとして書き出す、とか 受信メールを全員返信する際に、部署により toとc.c.に振り分ける、など。)
        など。
        ハードルは 高そうですが、
        ダイアログへの出力をお教えいただければ、応用は自分で考えてみよう、と思っています。
        よろしくお願いします。

        コメント by MORI,Yasushi — 2011年2月9日 @ 2:48 PM

      • では、とりあえず Outlook 2003 で受信者の情報を取得し、送信前に表示するマクロを作成してみます。
        なお、マウスポインタをあてるだけでポップアップを表示するようなことはマクロではできません。
        SmartTag の API を使用すればできるかもしれませんが、Visual Studio での開発が必要となります。

        コメント by outlooklab — 2011年2月10日 @ 12:42 PM

      • お世話になります。
        その後 いかがでしょうか?

        見栄えや操作性のよいツールでなくとも
        とりあえず、送信先(宛先)のプロパティ情報をVBAで扱うにはどうすればよいのか、お教えください。
        よろしくお願いします。

        コメント by MORI,Yasushi — 2011年3月4日 @ 5:22 PM

      • すみません。
        まだちょっと検討中です。

        コメント by outlooklab — 2011年3月5日 @ 8:08 PM

      • お忙しいところ、申し訳ありません。

        何か、新しく難しい問題が見つかったのでしょうか?
        特に システムに異常をきたす、とか
        データを破壊してしまうようであれば
        私の使用環境では使用不可ですので 諦めます。
        一方、一部 人による判断や操作が必要である、
        うまく作動したりしなかったりと安定しない、
        ということであれば、
        それを承知の上で使用しますので、
        プロパティをVBA上に取り込むところだけでも
        お教えください。

        お手数をお掛けしますが よろしくお願いします。

        コメント by MORI,Yasushi — 2011年3月8日 @ 6:57 PM

      • お待たせして申し訳ありません。特に問題があるということではなく、CDO と ADSI の 2 つのバージョンを検討しているので時間がかかっているだけです。
        もうしばらくお待ちください。

        コメント by outlooklab — 2011年3月9日 @ 12:49 PM

      • お待たせしました。こちらでマクロを公開しました。

        コメント by outlooklab — 2011年3月12日 @ 7:20 PM

      • ありがとうございます。
        地震の影響で 自宅待機をしており、
        お礼が遅くなりました。
        また、そのような訳で まだ動作確認をしておりません。
        なお、会社が被災しているわけではなく、
        計画停電による交通機関の運休によるものです。
        (亡くなられた方には 哀悼の意を表します。)
        まずは お礼まで。

        コメント by MORI,Yasushi — 2011年3月15日 @ 4:59 PM

      • こんにちは。

        作成していただいたマクロを試しておりますが、うまく動かず、
        原因の解析にも なかなか手がつけられない状況です。
        引き続き、いろいろ試し、なんとか解決しようと考えておりますが
        その前に1つ質問です。
        「2510153 – (Olkintl.msp) Office Outlook 2003 修正プログラム パッケージの説明: 2011 年 3 月 9日」は、
        私の要望を叶えるものなのでしょうか?
        Microsoftのサイトを見ると、別の不具合のバグ修正のようで、インストールする必要はない、と理解したのですが。

        さて、当方の状況をご報告します。
        アドバイスがありましたら、よろしくお願いします。
        1)CDO
         実行途中でエラーとなります。
          「実行時エラー ’-2147217865(80040e37)’
           テーブルは存在しません。」
         DOMAINの指定の問題かもしれません。
         Active DOMAINの取得方法がありましたら、
         お教えください。
        2)ADSI
         サンプルのID番号のままでは、
         メッセージに 属性情報はなにも表示されません。
         (変数strNamesの値は Empty値です。)
         属性のIDが正しくないからだ、と認識しています。

        コメント by MORI,Yasushi — 2011年4月4日 @ 3:38 PM

      • CDO で 80040e37 というエラーが発生するというような事例はちょっと見つかりませんでした。おそらく修正プログラムで回避できるものではないと思われます。
        また、ADSI の場合はドメイン名の指定方法が違うという可能性が考えられますが、それ以前に Windows にドメイン アカウントでログオンしていますでしょうか?

        いずれにせよ、もう少し環境についての詳細などをうかがってみないと原因追及は難しいと思うのですが、不特定多数の方がアクセスできるブログでそういった内容のやりとりをするのは難しいと思います。
        大変申し訳ありませんが、マイクロソフトのサポートにお問い合わせしてみてください。

        コメント by outlooklab — 2011年4月7日 @ 1:03 PM

  29. はじめまして、いつも参考にさせていただいています。
    当社ではoutlook2007を使用しています。
    複数のメンバーに通達メール(受信確認付き)を発信した時、
    受診確認がされていないメンバーのリストをエクセルに渡すマクロを求めています。
    お忙しいところ恐れ入りますがよろしくお願い申し上げます。

    コメント by timescape7 — 2011年2月9日 @ 2:35 PM | 返信

  30. はじめまして。

    Outlookのマクロはあまり情報がなく、いつもこのサイトにて勉強させていただいております。

    早速ですが、困ったことがおきており、お知恵を御貸しいただきたく。

    当方はOutlook2003SP3を使用しておりますが、Application.startupとQuitで起動時、終了時にユーザフォームを表示させフォーム内に必要事項を記入しsendでメール送信するマクロを作りました。(警告メッセージが出るのは致し方なしで)

    今後職場のOutlookのバージョンが2007に変更されるとのことで、早速試行環境にてマクロの走確を行ったところ、終了時(Quit)にユーザフォームが一瞬表示されるのですが、すぐに消えてしまう事象になりました。
    色々とネットで調べたところ、2007SP2以降では終了時のプロセスの変更を行っているとか...

    Application.Quit 時にユーザフォームでのユーザインタフェースをこれまでどおりに構築するために良いお知恵があれば教えてください。
    (職場環境のためレジストリの変更は不可能です。QUITイベントを拾うというのが無理ということでしょうか?)

    よろしくお願いします

    コメント by kenji — 2011年2月14日 @ 8:00 PM | 返信

    • おそらく、フォームを閉じるまでウィンドウ操作をさせないためフォームをモーダルで開いているのではないかと思いますが、あえてモードレスにするという方法が考えられます。
      まず、フォームに Public 変数として CloseOK を追加し、フォームの初期化コードで False とします。
      そして、Application_Quit イベントでは、ユーザー フォームをモードレスで開き、CloseOK が True になるまで待つというようなものとします。
      コードのサンプルは以下の通りです。

      Private Sub Application_Quit()
      Dim frm As New UserForm1
      frm.Show vbModeless
      While frm.CloseOK = False
      DoEvents
      Wend
      End Sub

      コメント by outlooklab — 2011年2月15日 @ 12:55 PM | 返信

      • outlooklab様
         コメントありがとうございました。
         早速モードレスでフォームを表示し、メール送信後にCloseOk=trueに設定し、whileのループを抜け出すようにコードを変更してみました。
        結果、フォームが勝手に非表示になることはなくなったのですが、Outlookのプロセスが残存してしまいました。
        モードレスでのフォームの表示を使ったのが初めてなので、メール送信時後はプロセスも含めて終了できるような手はないでしょうか?
        度々すいません。

        コメント by kenji — 2011年2月15日 @ 10:42 PM

      • 自己レスですいません。

        自己解決しました。
        SENDでメール送信後にUserFormをUnloadしていたので、その後のWhileループでUserformのCloseokの状態を評価しようとしてもういちどFormの初期化が動いてしまい。その結果、Closeokが初期化され、Whileイベントから抜け出せなくなっていただけでした。

        なんとかなりそうです。

        コメント by kenji — 2011年2月15日 @ 11:01 PM

      • 対応が遅くなりすみません。
        自己解決いただいたとのことで安心しました。

        コメント by outlooklab — 2011年2月16日 @ 12:24 PM

  31. 初めまして。
    いつも参考にさせて頂いております。

    下記の件で暗礁に乗り上げておりまして、何らかの解決策がありましたらご教授頂ければと思います。

    当社では、ExchangeServer2003+Outlook2000(Office2000)を使用しています。
    ExchangeServerは5.5の頃から使用していていた事もあり、パブリックフォルダを情報共有で多用しております。
    現在、Office2010へのバージョンアップを検討していて、Outlookも検証中なのですが、そこで発覚したのが、
    「Outlook 2007 および Outlook 2010では、Outlook プロトコル (outlook://) が使用出来ない」
    という仕様です。
    マイクロソフトの発表(http://support.microsoft.com/kb/957184/ja)に絶句してしまいました。

    社内連絡等をパブリックフォルダに投稿しておいて、案内文と共にそのハイパーリンクをメールに書き込んで全社員に送信する、といった使い方が主です。
    excelやwordとかを直接投稿した物は、http://sever_mame/public/… でブラウザ表示できますが、当社はカスタムフォームを多用しており、これらは当然ブラウザでは表示も動作もできず根本解決にはなりません。

    何か回避策は無いものでしょうか?

    よろしくお願い致します。

    コメント by NetEagle — 2011年2月15日 @ 11:59 AM | 返信

    • outlook: を使えるようにするレジストリ設定があるにはあるのですが、Outlook 2010 ではパブリック フォルダのパスが大幅に変わっているので、この方法ではうまくいきません。
      また、Outlook 2007 以降でメールを作成した場合、outlook: で始まる文字列はリンクとして識別されません。
      もともと、Exchange 2007 や Outlook 2007 からパブリック フォルダは重要視しない機能という位置づけがされており、次のバージョンではなくなるようです。(実は Exchange 2010 でなくなるという話もあったのですが、何とか生き残ったようです。)
      カスタムフォームがスクリプトを含むような複雑なものでないなら、Windows SharePoint Services などへの移行を検討してください。

      コメント by outlooklab — 2011年2月15日 @ 1:00 PM | 返信

      • ご返信ありがとうございます。

        実は…
        カスタムフォームはバリバリにスクリプトを使用しています。
        (一部のユーザには、VBAでのツールも提供。)
        また、パブリックフォルダのエージェントも使用していて、夜間に古いアイテムの待避や削除と言ったバッチ処理の様なものも作り込んでいます(5.5時代からの資産が多いのですが)。
        おそらく、それなりにパブリックフォルダを使い込んでいる方ではないかと思っております。
        だって、さんざんマイクロソフトから「パブリックフォルダで情報共有」を推奨されちゃいましたから…。
        そんな事情で、簡単には乗り換えができない状況なんです。

        ご指摘の「outlook: を使えるようにするレジストリ設定」ですが、ちょっと興味が有ります。
        差し支えなければ、お教え願えないでしょうか?

        コメント by NetEagle — 2011年2月15日 @ 1:32 PM

      • outlook: を使えるようにするレジストリ設定ですが、こちらは実のところ古いバージョンであった outlook: のレジストリ設定を Outlook 2007/2010 用に作り替えるというものです。
        たとえば、Outlook 2007 では以下のようなファイルを拡張子 reg として保存し、適用すると outlook: が使えるようになります。

        Windows Registry Editor Version 5.00

        [HKEY_CLASSES_ROOT\outlook]
        “URL Protocol”=””
        @=””

        [HKEY_CLASSES_ROOT\outlook\DefaultIcon]
        @=”c:\\Program Files\\Microsoft Office\\Office12\\OUTLOOK.EXE,-9403″

        [HKEY_CLASSES_ROOT\outlook\shell]
        @=”open”

        [HKEY_CLASSES_ROOT\outlook\shell\open]
        @=””

        [HKEY_CLASSES_ROOT\outlook\shell\open\command]
        @=”\”c:\\Program Files\\Microsoft Office\\Office12\\OUTLOOK.EXE\” /select \”%1\””

        ただし、使えるようになるといっても、実際には IE などで outlook: を使うための設定です。
        この設定を行っても Outlook で outlook: がハイパーリンクとして識別されることはありませんし、挿入メニューで明示的に outlook: のリンクを埋め込めば上記のレジストリ設定がなくても Outlook のメールの中では有効です。
        ですが、Outlook 2010 の場合はパブリック フォルダーのパス名がユーザーごとに変わってしまうので、うまく動作しないことには変わりません。
        良い方法が思いついたら記事にしてみます。

        コメント by outlooklab — 2011年2月16日 @ 1:48 PM

      • >Outlook 2010 の場合はパブリック フォルダーのパス名がユーザーごとに変わってしまう

        なるほど、そういうことだったんですね。
        どうりで、outlook:calendar とかは動作するのに、なぜパグリックフォルダはダメなのか?
        と思っていました…。
        唖然とするばかりですが、引き続きよろしくお願い致します。

        コメント by NetEagle — 2011年2月16日 @ 3:29 PM

  32. メッセージを作成した場合メッセージ上部のコメントで
    「このメッセージはまだ送信されていません」
    「このメッセージはxxxxx経由で送信されます」とでています
    アカウントを変更すればこのメッセージもアクティブに変化します。
    「未送信」はCurrentItem.Sent=Falseで判断できますが、
    「xxxx経由」の判断はどうすれば出来るでしょうか?
    2003環境で送信時に送信者を特定する方法を模索しています。
    ※アクティブに変化するということはMailItemのSenderNameではない、、、と思いますがどうでしょう?

    コメント by ある — 2011年2月16日 @ 11:11 AM | 返信

    • 残念ながら、Outlook 2003 では送信アカウントを識別する方法はありません。
      Outlook 2007 以降であれば SendUsingAccount で識別することが可能です。

      コメント by outlooklab — 2011年2月16日 @ 12:31 PM | 返信

  33. 環境情報:Outlook 2007(WinXP) and Outlook 2010 (Win7)
    要望:受信したメールに対して以下の操作をアイコンに設定したマクロで行いたい。
       
    ・受信したメールの本文に “見積有効期限 : 2011/04/20” という文字列があります。(日付は例で変更されます。)
    ・上記有効期限の日付を、Outlookのフラグの設定ーアラームの追加より、
      フラグの内容:ご確認ください
      開始日:マクロを起動した日でOKです。  
      期限:を上記に記載した、見積有効期限の日付に設定
      時間はAM10:00と設定 
    このようなマクロを作成頂ければとても助かります。宜しくお願いいたします。
       

    コメント by クロコ — 2011年2月16日 @ 2:36 PM | 返信

  34. ユーザーフォームに設置したLISTBOXをcolumnheads=trueとした場合に見出しをつける方法があるでしょうか?
    途中でエクセルオブジェクトなど生成して指定してみましたが無理でした、、
    “””lobjApp.sheet1!A1:C1″””

    コメント by ある — 2011年2月22日 @ 11:57 AM | 返信

    • Outlook のフォームで使用可能な Listbox には列見出しのテキストを設定する方法は用意されていません。
      Outlook 2007 で Visual Studio Tools for Office によりフォーム領域を使用するアドインを作れば、列見出しが表示可能なコントロールを配置することはできます。

      コメント by outlooklab — 2011年2月22日 @ 12:37 PM | 返信

  35. お世話になります。

    早速ですが、Outlook2010 でのカスタムフォームのスクリプトで質問があります。
    (お願いばかりで、本当に申し訳ございません。)

    下記の様なスクリプトで、本文(Body)の入力可/不可のコントロールを行っているフォームがあります。
    (実際は、ボタンをクリックして入力可/不可を切り替えます。)

    Set MyPage = Item.GetInspector.ModifiedFormPages(“メッセージ”)
    MyPage.Message.ReadOnly = True(または False)

    これが、Outlook2003 までは正常に動作していたのですが、Outlook2010で実行すると期待した動作はせず(何も起きない)、エラーにもなりません。(Subject.Locked = True 等は正常に動作しています。)

    ヘルプ等、色々あたってはいるのですが解決できておりません。
    ご教授頂ければ幸いです。

    コメント by NetEagle — 2011年2月22日 @ 12:39 PM | 返信

    • Outlook 2007 以降では、メッセージの編集には Word のコンポーネントが使用されています。
      これに伴い、受信したメッセージや投稿したアイテムの本文の編集を行う場合には、[メッセージの編集] をクリックするという手順が必要となっています。
      残念ながら、Message コントロールの Readonly プロパティではこれを制御することはできず、以下のようにして [メッセージの編集] がクリックされたような状態にする必要があります。

      ActiveInspector.CommandBars.FindControl(ID:=5604).Execute

      なお、このようにしてメッセージを修正可能な状態にした後、再び読み取り専用とすることはできません。

      コメント by outlooklab — 2011年2月24日 @ 12:47 PM | 返信

      • outlooklab様

        ご教授ありがとうございます。
        こんな方法がありましたか!
        実際の所、編集が完了した後は[保存]ボタンで保存する流れになりますので、あえて読み取り専用に戻さなくても運用的には問題ありません。

        何とか問題が一つ解決できそうです。
        本当にありがとうございました。

        コメント by NetEagle — 2011年2月24日 @ 3:02 PM

  36. exchangeサーバーの他人のスケジュールをcsvなどで出力して、googleカレンダーに登録するマクロはできますか?職場パソコンはソフトのインストールが制限されているため、マクロしか使えません。

    コメント by SUZUKI — 2011年2月24日 @ 7:54 PM | 返信

    • https://outlooklab.wordpress.com/2007/11/04/outlook-%e3%81%ae%e4%ba%88%e5%ae%9a%e8%a1%a8%e3%82%92-csv-%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ab%e3%82%a8%e3%82%af%e3%82%b9%e3%83%9d%e3%83%bc%e3%83%88%e3%81%99%e3%82%8b%e3%83%9e%e3%82%af/ のマクロを応用すれば、ほかの人の予定表を CSV に書き出すことは可能です。

      ただ、Exchange サーバーを使ってすでに予定表は共有しているんですよね?
      なぜわざわざ Google カレンダーに登録しなおさないといけないのでしょうか?
      また、ほかの人の予定に変更があった場合、エクスポート・インポートを繰り返す必要もありますが、それだと最新の状態を維持するのが大変だと思います。

      コメント by outlooklab — 2011年2月25日 @ 12:43 PM | 返信

      • ありがとうございました。
        今度会社でやってみます。

        少し変わったスケジュール共有方法をとってまして、グループ全員のスケジュールをリーダーの予定表に一元管理することになっています。部下はリーダーの予定表を編集する権利が設定されています。定期的に複数グループのメンバーが集まって予定確認するときには、リーダーの予定表だけ出力すれば部下の予定も確認できるようになっているのです。
        さらに職場では確かにexchangeサーバーを使用しているのですが、社内のみからのアクセスしか許可されておらず、外出先からの参照が許可されていません。
        自分の予定は手帳管理なので問題ないのですが(ここですでに手帳とoutlookの二重管理…)、グループのメンバーの予定まではわかりません。
        会社からのWebサイトのアクセスも制限が多いですが、幸いgoogleカレンダーとyahooカレンダーはアクセスできます。そこで、上記質問に至ったわけです。参照さえできればいいと割り切ってます。
        何かもっとスマートな解決方法がないか考えていますが、妙案がない状態です。

        コメント by SUZUKI — 2011年2月28日 @ 8:57 PM

      • Windows Live カレンダーは使用できないのでしょうか?
        Windows Live カレンダーなら Outlook の予定表として表示することも可能なので、マクロでコピーするのも楽にできると思います。

        コメント by outlooklab — 2011年3月1日 @ 12:45 PM

  37. 初心者で申し訳ありませんが、質問です。
    Outlook2007 のビューが設定しても再起動(Outlookを閉じて、また再度プログラムを開くと)せっかく設定したビューが戻ってしまいます。 戻らない方法を教えて下さい。

    表示、現在のビュー、宛先表示にチェック、現在のビューの編集から、ビューをカスタマイズにて、グループ化、グループの表示方法にて最後の変更を保存する は選択しています。

    希望の表示方法としては、差出人ごとに折りたたまれている状態で、必要な差出人だけ展開して そのまま保存しておきたいのです。

    コメント by sanoyoshiko — 2011年2月26日 @ 6:34 AM | 返信

    • KB2412273 に記載されている以下の不具合ではないかと思います。

      • Consider the following scenario:
        • You access a mailbox in online mode in or you access a shared mailbox in Office Outlook 2007.
        • You group the email messages in the Inbox folder or in the Sent Items folder by one field, such as Subject, From, Size and so on.
          Note In this situation, the email messages are shown in groups and all the groups are systematically expanded.
        • You collapse some groups.
        • You close and then restart Office Outlook 2007.

        In this scenario, the collapse state of the groups is not kept. In other words, the last viewed displayed group is not kept.

        Note This issue may also occur when you switch back and forth from folders.

      最新の修正プログラムが先日リリースされましたので、http://support.microsoft.com/kb/2475891 の上の「この技術情報に対応する修正プログラムのダウンロードのリスト」をクリックし、修正プログラムを入手して試してみてください。

      コメント by outlooklab — 2011年2月28日 @ 12:44 PM | 返信

  38. はじめまして。Outlook2007を使っています。ご教示ください。
    私から送信したメールに、時々「添付が付いて着信した」と受信者から言われることがあります。
    こちらからは添付を付けていないのですが。
    添付の付いたメールを転送してもらい確認すると、ファイル名はATTで始まるメモ帳.txt です。
    Outlookは長く使っていますが、このようなことは最近になって起きるようになりました。
    なぜこのようなことが起こるのでしょうか。
    何件かに同報した場合、添付が付いて着信したところと、付いていないところもあるようです。
    このような不明な添付が付かないようにするにはどのようにすれば良いのでしょうか。
    よろしくお願いいたします。

    コメント by tomotomo — 2011年2月27日 @ 9:03 PM | 返信

    • 添付ファイルの中身はどのようなものなのでしょうか?
      WINMAIL.DAT というファイルがつくということならよくある話なのですが、TXT ファイルがつくというのはあまり聞いたことがありません。(ウイルススキャンソフトによって本文が添付ファイルとして扱われるという話は聞いたことがありますが…)
      とりあえず、ここに記載されている内容をもとに、TNEF 形式での送信を無効化して現象が再発するかご確認ください。
      これで発生するとなると、送信側の問題ではないように思われます。

      コメント by outlooklab — 2011年2月28日 @ 12:49 PM | 返信

  39. 初めまして、以下問題で困っています。
    対応策等あれば、ご教示願いたく。。。
    よろしくお願いいたします。

    ■使用環境
    Outlook2003、ExchangeServer

    ■問題点
    新規予定表を作成し、「必須出席者」「任意出席者」「リソース」に各々アドレスを代入するVBAを作成しましたが、
    実行し、反映結果を確認するため予定表を確認すると、全てのアドレスが「必須出席者」に移ってしまいます。
    以下テストのアドレスだと問題ないのですが、実際のアドレスや会議室を代入すると「必須出席者」に纏まってしまいます。
    どうしたもんかと、悩んでいます。

    ■サンプルVBA
    Dim OApp As Outlook.Application
    Dim olItem As Outlook.AppointmentItem

    Sub test()
    Set olApp = Outlook.Application
    Set olItem = olApp.CreateItem(olAppointmentItem)
    olItem.MeetingStatus = olMeeting
    Set myRec = olItem.Recipients.Add(“a;b;c;d”)
    myRec.Type = olRequired ‘必須参加者
    Set myRec = olItem.Recipients.Add(“e;f;g;h”)
    myRec.Type = olOptional ‘任意参加者
    Set myRec = olItem.Recipients.Add(“i;j”)
    myRec.Type = olResource ‘リソース
    olItem.Display
    End Sub

    コメント by miyarin — 2011年3月6日 @ 4:01 PM | 返信

    • Recipients の Add メソッドは複数の受信者を同時に追加することは想定してません。
      Add メソッドでは一人ずつ受信者を追加してください。

      コメント by outlooklab — 2011年3月6日 @ 8:54 PM | 返信

      • 回答ありがとうございます。
        試してみます。

        コメント by miyarin — 2011年3月7日 @ 11:04 AM

      • お世話になっております。
        ループ文でアドレスを1件ずつ登録するよう試してみましたが、やはり宛先に移ってしまいます。
        VBAで制御するのは無理なんでしょうか?

        コメント by miyarin — 2011年3月7日 @ 2:00 PM

      • 宛先を追加した後、Resolveを実行する必要があるようです。
        以下のようにしてみてください。
        Set myRec = olItem.Recipients.Add( address )
        myRec.Type = olOptional
        myRec.Resolve

        コメント by outlooklab — 2011年3月8日 @ 12:41 PM

      • ありがとうございます。
        無事解決致しました。

        コメント by miyarin — 2011年3月9日 @ 10:52 AM

  40. 初めまして

    outlook2003 sp3を使用しています。
    仕事で社内システムの故障受付および修理手配を全てメールで行っています。

    修理手配(メール送信)の際、「開封済みメッセージを受け取る。」設定にしています。
    そこで要望ですが、ある一定時間(例:1時間)経過しても開封済みメッセージが来ない場合、下記の処理ができないでしょうか?

    ・ポップアップで表示(送信メールのタイトル入り)

    ・EXCELへエクスポートする(送信メールのタイトル入り)

    お手数ですが、よろしくお願いいたします。

    コメント by goohime — 2011年3月7日 @ 3:35 PM | 返信

    • Outlook の VBA マクロではタイマーでイベントを起動するというような仕組みがなく、一定時間経過後に何か処理するというようなことはできません。
      そのため、残念ながらご要望の処理は実装できません。

      コメント by outlooklab — 2011年3月8日 @ 12:49 PM | 返信

      • ご回答ありがとうございました。
        今後ともよろしくお願いします。

        コメント by goohime — 2011年3月8日 @ 3:56 PM

      • 【割り込みメールです】
        しろうと考えですが、以下のようなことで 実現できないでしょうか?

        ①相手に送信する際、自分自身にも送る。
        ②そのメールを受け取ったら(タイトル等で判別し)、設定した時間後に、自分自身に「返信」する。
        ※指定日時に送信する機能があるようなので。
        ③指定日時に受け取った「返信」をトリガに、①の送信先から開封メッセージが届いていないかどうか、検索する。
        ④届いていなければ、所望のアクションを実行する。

        以上でどうでしょうか?

        コメント by MORI,Yasushi — 2011年3月11日 @ 1:48 PM

      • MORI,Yasushi様、アドバイスくださいましてありがとうございました。
        現在は以下のような形で運用しています。

        ①相手に送信する際、自分自身にも送る。
        ②受信したメールを「仕事」にドラッグアンドドロップする。
        ③メールが「仕事」として登録されるので、アラームを指定時間に設定して保存する。
        ④指定時間にポップアップが表示されるので、①の送信先から開封済みメッセージが届いていなければ、所定のアクションを実行する。

        MORI,Yasushi様に指摘いただいた運用方法もあるということで、大変参考になりました。

        現在は開封済みメッセージを複数の担当者で共有する方法を模索しています。
        開封済みメッセージは仕訳ルールによる転送ができないようなので、
        http://support.microsoft.com/kb/281924/ja
        このサイトの「メール受信後、データをcsvファイルに保存するマクロ」などを参考にさせていただき、運用を確立していきたいと思います。

        今後ともよろしくお願いいたします。

        コメント by goohime — 2011年3月16日 @ 11:34 AM

  41. 初めまして。Outlook2010を使っています。役員のアシスタントをしております。

    ・役員が自分を「代理人」に指定し、
    役員あての会議出席依頼や、役員自身が出した会議出席依頼に対する返信が自分の受信トレイに届くようになりました。
    (代理受信したアイテムを開くと「○○[役員の名前]の代理で受信しました、とヘッダーの上の部分に表示されます。)

    代理受信したメールを自動仕分けで任意のフォルダに移したいのですが、設定方法が見つかりません。

    仕訳ルールの条件をいろいろ試したのですが、

    ・メッセージヘッダーに「代理」の文字が含まれる場合。→「代理で受信しました」の文章はヘッダーでないのか動作しません。
    ・会議出席依頼または会議の更新である場合→自分宛ての会議出席依頼も仕訳されてしまいます。
    ・宛先またはCCが[名前]の場合→代理受信するアイテムはすべて自分の名前が宛先に入っています。

    役員あてに会議出席依頼を送る方たちは、社内のさまざまな方たちなので、
    件名や本文に特定の文字を入れていただくことは難しい状況です。

    というわけで、代理受信したアイテムを自動仕分けする方法についてご教示いただければ幸いです。
    どうぞよろしくお願いいたします。

    コメント by くまのみ — 2011年3月9日 @ 11:36 AM | 返信

    • 残念ながら自動仕分けでは代理で受信したかどうかを判断することはできません。
      マクロを使えば可能と思われます。

      コメント by outlooklab — 2011年3月10日 @ 12:37 PM | 返信

  42. ご返信ありがとうございました。了解いたしました。
    「代理人に指定される」という人は多くないでしょうから自動仕分けニーズも少ないのかもしれないですね。
    お恥ずかしいことにマクロは不勉強なので、しばらくはマニュアル操作で対応したいと思います。
    (エクセルのように作業を記憶させるのはやったことがあるのですが・・・。)

    コメント by くまのみ — 2011年3月10日 @ 2:24 PM | 返信

  43. お世話になります。
    教えていただきたいことがあります。

    Outlookのメッセージ本文から リンク先の、エクセルの特定の(指定された)ワークシートに飛ぶようにしたいのですが、可能でしょうか?(バージョンは 2003、2007)
    メールからは、エディタをWordとすることでできたのですが、「予定表」でもできないか、お教えください、

    よろしくお願いします。

    P.S. 既に 解決済みの問題かどうか、貴サイトに検索をかけましたが うまくできませんでした。
    実行したのは、右側のフレームの検索窓と、
    IEの[編集]-[このページの検索]です。
    前者は 「疑問・質問・マクロの要望」以外も抽出され、全文を読むのを止めてしまいました。
    後者は 検索できるのですが、
    「疑問・質問・マクロの要望」のページの送り方が分からず、
    質問のNo.42までしか検索できませんでした。
    Outlookとは関係のない、初歩的な問題で申し訳ありませんが、
    トピックスの検索に仕方もお教えください。

    よろしくお願いします。

    コメント by MORI,Yasushi — 2011年3月11日 @ 12:04 PM | 返信

    • 44.Excel のシートを指定したリンクでは、ファイル名の後に「#シート名!セル」のように文字列を追加するのですが、これが解釈できるものとできないものがあります。
      Outlook 2007 ではメールの作成も表示も Word のコンポーネントを使用しているのでできるのですが、Outlook 2003 の場合には予定表などで Word のコンポーネントを選択することができなので、使用できません。
      シートの指定が必要であれば Office 2007 を使用してください。

      また、このサイトの検索方法は以下のいずれかになります。
      ・検索窓で「site:outlooklab.wordpress.com キーワード」というようにして検索を実行する。
      ・表示したページで「このページの検索」を実行する。

      なお、質問のNo.42までしか検索できないとのことですが、このページの質問の数は MORI さんの質問を入れてNo.43までです。
      コメント数が136となっているのは、質問の返信もコメント数に含んでいるためです。たとえば、質問が 1 つしかなくてもそれに対する返信が 3 つあれば、質問 No.1 だけでコメント数が 4 となります。

      コメント by outlooklab — 2011年3月11日 @ 12:49 PM | 返信

      • 早速の回答、ありがとうございます・
        >2003 の場合には予定表などで Word のコンポーネントを選択することができなので、使用できません。
         そうですか。Outlook2003の仕様ではしょうがないですね。
         (もし、2003でも目的のエクセル ワークシートを開くようにしようとしたら、エクセルのVBAで Openイベントで、そのシートをアクティブにするしかなさそうですね。)

        >コメント数が136となっているのは、質問の返信もコメント数に含んでいるためです。
         了解しました。
         確かに、コメント件数が130件余りでも、質問番号は 40番台でした。よく確認せず、失礼しました。

        これからも よろしくお願いします。

        コメント by MORI,Yasushi — 2011年3月11日 @ 1:35 PM

  44. こんにちは。役員アシスタントをしているパソコン初心者です。ハイレベルな質問をされているなか恥ずかしながら投稿をさせて頂きます。

    Outlook2003のグループスケジュール機能を使って、毎日ある時間帯の予定のみ、私が目で数え、A3の紙に○×で手書きをして、掲示連絡しています。
    このアナログの作業をマクロで解決できれば嬉しいです。(とても単純なことでも手順を教えてください)

    イメージはグループを指定(開く)と○月○日の△△は20名だ、と自動カウントしてくれる。またエクセルとして一覧表に変換される・・・といった感じです。

    ターゲットとなる予定は、全員で32名。
    予定は各職場の秘書が入力した特定単語(例:1コマになっており、特別昼食など漢字表示)を件名にした予定表アイテムです。
    私は全役員の予定表について編集の権限を付与されています。

    パソコンはXPプロフェッショナル、オフィスは2003を使用しています。

    コメント by 初心者 — 2011年3月21日 @ 5:55 PM | 返信

    • ある時間帯の予定のみ、ということですが、たとえば朝 9:00-10:00 の予定が入っているユーザーをリストアップ、というようなものでしょうか?
      また、Excelに出力することも可能ですが、どのようなイメージで出力したいのでしょうか?
      予定表を共有できる環境で何故紙で掲示するのか? というのも不思議ですが…
      どんな出力結果を期待しているのかをどこかにアップロードしていただけると助かります。

      コメント by outlooklab — 2011年3月24日 @ 12:10 AM | 返信

  45. 閉じられたメールフォルダをVBAで展開することは可能でしょうか?
    サブフォルダが大量にありますが、たまに間違えてその親フォルダを閉じて(-→+)しまうことがあります。その後親フォルダを展開(+→-)してもサブフォルダは閉じられたままです。
    これを一気にすべて展開状態にさせる方法はないでしょうか?

    コメント by ある — 2011年3月24日 @ 10:09 AM | 返信

    • 残念ながら、マクロでフォルダの展開状態を制御することはできません。

      コメント by outlooklab — 2011年3月30日 @ 12:34 PM | 返信

  46. ハジメマシテ、いつも参考にさせていただいております。
    先日探し物を頼まれて、URLをコピー&ペーストして友人に送信したところそのURLにアクセスできない
    と言われ何でだ?と思っていたところ、URLが長いせいか、URLが改行されていて途中までのリンクを
    クリックしているようでした。そこでURLの短縮をOutlook上でできないかと思ったのですが、何か良い
    方法はございませんでしょうか
    Outlookは2007を使用しております。
    ご教授の程宜しくお願い致します。

    コメント by ふるひで — 2011年3月25日 @ 2:59 PM | 返信

    • URLの短縮という処理は、実際には URL 短縮サービスを提供しているプロバイダに URL を登録し、その結果得られる URL を使用するというものです。
      そして、URL を登録する際には通常ユーザー認証を必要とします。
      また、使用方法も URL 短縮サービスの提供元によって異なるため、簡単にはできません。
      HTML 形式で送信してみてはどうでしょうか?

      コメント by outlooklab — 2011年3月30日 @ 12:38 PM | 返信

  47.  こんにちは、お世話になります。

     早速ですが、職場でのOutlook 2007(OS:Winodws XP SP3)で開封通知のオプションを付け送信したメールの印刷についてお尋ねします。

     今までは、開封通知のオプションを付けて送信したメールを印刷した場合、開封状況に関する情報は、一番最後に印字されていたのですが、最近、この開封状況に関する情報が、「送信日時」、「宛先」、「件名」等のヘッダー部と、本文部のとの間に挟まって印字されるようになり、バインダーファイルに綴るため、送信メールを印刷する際、多数の宛先に送信した場合や、BCC宛がある場合などに、余計な情報まで綴ることになり困っています(今までは、印字が最後のため、これを省いて綴ってしまえばよかったのですが)。

     このため、職場の管理者に、開封状況を前と同じように最後位置に印字されるよう戻せないのか、と尋ねたところ、最近当てた幾つかのバッチが原因ではないかとされ、このため、印字位置の変更できないとされました。

     やはり、開封状況の印字位置を変えたりするようなことはできないのでしょうか。あるいは、開封状況自体を印字されないようにすることはできないのでしょうか。

     もし、何か良い方法をご存知でしたならば、ご教授願います。

     

    コメント by ogose36 — 2011年3月26日 @ 12:03 AM | 返信

    • 位置を変えることはできませんが、レジストリにより印刷されないようにはできます。
      詳細はこちらにて公開しました。

      コメント by outlooklab — 2011年4月2日 @ 11:06 PM | 返信

      •  ご返事が遅れ、大変失礼しました。

         参考リンクまでご紹介いただき、ありがとうございます。
         レジストリ操作のため、職場の管理者はよい顔をしないと思いますが、何とか説得して、この方法を試して見たいと思います。

         ありがとうございました。
         また、何かありましたならばよろしくお願いします。

        コメント by ogose36 — 2011年4月10日 @ 11:08 PM

  48. お世話になります

    早速で申し訳ありませんが、
    仕事の納期日に担当者に「納期連絡メール」を送信するプログラムをVB.NETで作成しました。
    メールはHTMLメールとし、メール本文中の <A href="mailto:~ タグで記入したリンクをクリックすると、「回答メール」が開くようにしています。
    担当者にはこのメールで回答してもらうようにお願いをしているのですが、

    Outlook2007で「納期連絡メール」本文中のリンクをクリックして「回答メール」が開くものと開かないものがあります。
    どうやら <A href="mailto:~ の"body="以降の文字数が多いと開かない様なのはわかったのですが文字数は減らせないため、
    マクロもしくはvisual studio tools for officeで「回答メール」が開くように対応しようと考えています。

    リンクのクリックイベントでこの処理を実行したいのですが、イベントの取得方法がわからず苦慮しております。

    クリックイベントの取得について何かご存知のことがあればご教授お願いいたします。

    コメント by ZarameYuki — 2011年4月1日 @ 12:40 AM | 返信

    • 残念ながら、クリックのイベントを Outlook で取得することはできません。
      Exchange サーバーをお使いなら、組織フォームを使用することでワークフローのようなことは可能と思われます。

      コメント by outlooklab — 2011年4月7日 @ 12:43 PM | 返信

      • クリックイベントの取得は無理でしたか。
        別の方法で対応をしたいと思います。
        ありがとうございました。

        コメント by ZarameYuki — 2011年4月10日 @ 9:05 PM

  49. 毎回お願いばかりで申し訳ありません。

    Outlook2003 + exchageを使用しています。

    たとえば、以下の3つのメールを送ります。
     ・メールA add1、add2
     ・メールB add1
     ・メールC add2

    メール送信後に、送信済アイテムを宛先別でグループ化して一覧表示すると、、

     -宛先:add1;add2
          add1;add2 メールA
     -宛先:add1     
          add1      メールB
     -宛先:add2     
          add2      メールC

    という風に、”add1”宛てに送ったメールがばらばらに表示されてしまいます。
    (メールの宛先指定ごとに分かれるので、実際にはもっと細分化されてしまう)
    これを、

     -宛先:add1
          add1     メールA
          add1     メールB
     -宛先:add2     
          add2     メールA
          add2     メールC

    といった風に、個々の宛先別(正確には表記名別)にメールをグループ化して
    一覧を表示することはできないでしょうか?
    (宛先の2番目に以降に指定、あるいは、cc等に指定されていても関係なく
     宛先毎にグループ化する。)

    以上、よろしくお願いします。 

    コメント by Tak — 2011年4月7日 @ 10:40 PM | 返信

    • 残念ながら宛先表示では個々の宛先ごとのグループ化はできません。

      コメント by outlooklab — 2011年4月9日 @ 9:57 PM | 返信

  50. はじめまして

    秘書の方が役員のスケジュール管理するのに、現在は、別のスケジュール管理専用ツールを
    使用していますが、今後は、Outlook の代理人機能を利用してスケジュール管理したいと
    考えています。

    社内では、以下を利用しています。
    ・Exchange2003
    ・Outlook2007(標準ユーザ)/Outlook2010(特定ユーザ)

    下記を想定しています。
    ・複数のユーザ(役員)の代理人権限を特定ユーザ(秘書)に付与。
    ・グループスケジュールで管理する。

    複数の役員の名前を横軸にして、日にちを縦軸にした一ヶ月の予定表を
    印刷したいのですが、可能でしょうか?

       Aさん   Bさん  Cさん
    01(火) 外出    在社   14:00~16:00打合せ
    02(水)
    03(木)
    04(金)
    05(土)
    06(日)
    07(月)
    08(火)
    09(水)
    10(木)
    11(金)


    申し訳ございませんが、どうぞよろしくお願いいたします。

    コメント by くまる — 2011年4月13日 @ 2:48 PM | 返信

    • 残念ながら、Outlook の標準的な機能ではご要望のフォーマットでの予定表の印刷はできません。
      また、Outlook の印刷アシスタントというソフトウェアもあるのですが、そちらでもご要望のフォーマットでは印刷できないようです。
      Outlook の予定情報をマクロで Excel に出力するというようなことなら対処は可能かもしれませんが、結構なコード量になると思います。

      コメント by outlooklab — 2011年4月14日 @ 12:40 PM | 返信

      • 質問者のくまるです。
        ご回答いただきましてありがとうございます。

        標準的な機能や印刷アシスタントでは不可能という回答をいただきましたので、
        このサイトで公開されている
        「Exchange環境で共有されている他人の予定表のデータを取得するマクロ」を
        使ってCSVを出力し、それをExcelで開いて加工するマクロを作成し
        近い形のものを作成することが出来ました。大変助かりました。

        ただ、自分が代理人に設定されている人を自動で取得して、リスト出力したいのですが
        やり方がわかりません。

        自分が誰の代理人に登録されているかを取得する関数はありますでしょうか?

        コメント by くまる — 2011年4月15日 @ 3:14 PM

      • 残念ながら自分が誰の代理人に登録されているかを知る方法はありません。
        数名であれば、マクロの中で指定して実行するということは可能と思われます。

        コメント by outlooklab — 2011年4月19日 @ 12:57 PM

      • ご回答まことにありがとうございます。
        印刷する対象は限定されてますので、テーブルに格納し、下記のように権限をもってなければ、処理をスキップする。という方法で実施しようと思います。

        strUserName = tblstrUserName(i)
        Set objRecip = Application.Session.CreateRecipient(strUserName)
        Set colAppts = Application.Session.GetSharedDefaultFolder(objRecip, olFolderCalendar).Items

        On Error GoTo err1

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

        コメント by くまる — 2011年4月20日 @ 10:54 AM

  51. いつも拝見させていただいております。
    Outlook2003 で 送信後、差出人表示が消えてしまうという不具合が発生しております。
    再度表示させたりする方法がありましたら、お教え下さい。

    操作詳細
    ツール-オプション-電子メールオプション-メッセージの取扱-詳細オプションの中の受信トレイ以外のフォルダでは返信/転送メッセージを元のメッセージと同じフォルダへ保存するをチェック 後、元のメッセージと同じフォルダに保存されているメールから返信/転送ボタンを選択してメールを送信すると、差出人表示が空白になってしまいます。

    コメント by yoshiko — 2011年4月14日 @ 2:05 AM | 返信

    • ちょっとテストしてみましたが、差出人が消えるという現象は確認できませんでした。
      差出人が消えるというのは受信側でも消えてしまうのでしょうか?
      また、Outlook 2003 に最新のセキュリティ修正プログラムは適用されてますでしょうか?

      コメント by outlooklab — 2011年4月14日 @ 12:44 PM | 返信

      • 差出人が消えるのは、送信側の表示のみの問題で、実際受信側には正常に届いています。
        送信側の表示一覧では空白、メール本体でも空白です。操作詳細の手順を踏まなくても、例えば受信したメールを別のフォルダに移した後返送または転送ボタンにて返信する際も、発生します。送信先や受信元はバラバラです。 また受信したメールに返信で発生します。 

        コメント by yoshiko — 2011年4月27日 @ 11:20 PM

      • ちょっと原因がわかりませんが、そもそも送信側で差出人を確認する必要はあるのでしょうか?
        自分自身が送っているのですから、差出人が空白なら自分自身と考えればよいようにも思いますが。

        コメント by outlooklab — 2011年4月29日 @ 8:17 PM

  52. いつもOutlookに関しての情報として参考にさせていただいております。

    OUTLOOK2010を使用しておりますが、現在のビューの確認を行うのにがリボンをたどっていかなければならず、結構面倒です。
    タイトルバーやステータスバーにあいているスペースがあるので、そこに
    現在表示しているビューの名称をマクロをつかって表示されれば便利だなと感じます。
    また、起動時にプロファイルも切り替えて使用しているのでプロファイル名も表示されればいいと思います。
    こういうアイデアはいかがでしょうか。
    タイトルバーであれば
    受信トレイ- my_main Microsoft Outlook <Gmail> 【宛先表示】
    と表示されればいい感じです。
    ※Gmailはプロファイル名で【 】内はビューの名称です。

    コメント by ゆう — 2011年4月23日 @ 6:33 PM | 返信

    • 残念ながらステータスバーやタイトルの表示はマクロで変更することができません。
      プロファイル名の表示はできませんが、以下の手順でリボンのホーム タブに現在のビューを表示させることはできます。

      1. リボンのホーム タブで空いているところを右クリックし、[リボンのユーザー設定] をクリックします。
      2. [コマンドの選択] で [メイン タブ] を選択します。
      3. 左のリストの [ホーム (連絡先)] を展開し、[現在のビュー] を選択します。
      4. 右のリストの [ホーム (メール)] を展開し、現在のビューを表示したいグループの左隣となるグループを選択します。
      5. [追加 (A) >>] をクリックします。
      6. [OK] をクリックします。

      コメント by outlooklab — 2011年4月23日 @ 7:22 PM | 返信

  53. ありがとうございます。
    早速、個人メニューを作成し、現在のビュー等、頻度の高いコマンドを加えて使ってみます。

    コメント by ゆう — 2011年4月24日 @ 10:51 AM | 返信

  54. こんにちは
    Outlook 2010 を使っています。
    よく、姉や父が写真付きのメールを送ってくれます。 
    そういった添付ファイル付きのメールを受信すると、メールの本文が全く表示されないのですが。
    iPad,iPhone のメールアアプリではちゃんとメール本文が表示され、写真もきちんと受け取れます。
    同じコンピューターでサンダーバードメールソフトでも、きちんと受け取れます。 
    Outlookの設定等、いろいろと調べてみたのですが、これといった項目を見つけられませんでした。
    送信メールはHTMLで送るよう設定してあります。どうすればメール本文も表示されるようになるのでしょうか? 
    何卒よろしくご教示のほどお願い申し上げます。

    コメント by kiyocat — 2011年4月27日 @ 3:46 PM | 返信

    • 通常ならそのようなことは起こらないと思いますが…
      実際のメールがないと何とも言えませんね。
      せめてどのようなソフトで写真つきメールを送っているのかをご教授いただければ、何かわかるかもしれません。

      コメント by outlooklab — 2011年4月29日 @ 8:13 PM | 返信

  55. 初めて質問させていただきます。

    現在受信メールを開きマクロを実行すると、開いたメール内容の必要項目をユーザーフォームにて表示してます。
    これが複数のメールを見る時に手間となっています。
    ユーザーフォームを閉じて、次のメールを開きマクロを再実行。
    なので、下記のような機能をユーザーフォームに追加したいと思っています。

    メールを開いたウィンドウツールバーに『表示』→『前へ』もしくは『次へ』→『アイテム』でソートされた順番にメールを表示できるかと思います。標準ツールバーにも『↑』『↓』のボタンがあり簡単にメールを見れるかと思います。

    ActiveInspector.CurrentItem.Bodyを使用しメールの内容は取り込んでいます。
    ActiveExplorer.CurrentFolderで現在アクティブになっているフォルダ名
    ActiveExplorer.CurrentFolder.Items(インデックス番号)などで出来そうに思えるのですが、知識不足でしばらく
    前に進めない状況です。
    ご教授お願いします。

    コメント by シーバ — 2011年5月4日 @ 1:02 PM | 返信

    • 残念ながら、マクロで「次へ」や「前へ」を実装するには非常に困難です。
      CurrentFolder の Items コレクションの並び順は、表示されている並び順とは無関係です。そのため、Items の Sort メソッドにより表示されているビューと同じ順序で並び替えを行う必要があります。ただ、ビューの並び替えでは複数のフィールドを設定できますが、Items の Sort メソッドは一つしかフィールドが設定できないため、ビューの設定によっては全く同じ並び順にすることができない可能性があります。
      アイテムを開いた際に自動的にマクロを実行するという実装なら、NewInspector イベントにより可能ではないかと思います。

      コメント by outlooklab — 2011年5月11日 @ 12:43 PM | 返信

  56. 初めまして、こんにちは。

    outlook予定表に関しての質問です。
    現在、会社でoutlook2007を使っていますが、一部別ソフトを使っている人がいます。
    非outlookユーザがブラウザまたはエクセルなどで社内の人のoutlook予定表を閲覧できるようにしたいと思っています。

    OSはwindowsXPです。
    クライアントは別ですが、サーバ側の登録は一括で行っています。

    エクセルVBAは多少わかりますが、outolookVBAは全然わからないので、
    何かご教授いただけると大変助かります。

    よろしくお願い致します。

    コメント by Kazuuuuu — 2011年5月5日 @ 4:40 PM | 返信

    • まず、サーバー側の登録は一括で行っているとのことですが、サーバーには何を使用されているのでしょうか?
      また、別ソフトというのは具体的にどのようなソフトなのでしょうか?
      Outlook ではマクロを使わなくても以下のような様々な方法で Outlook 以外のユーザーと予定表を共有する仕組みがあります。
      ・Windows SharePoint サーバーの予定表に公開する
      ・Windows Live カレンダーに公開する
      ・Google カレンダーに公開する
      ・書き込み可能な Web サーバーにインターネット予定表として公開する
      ・iCalendar ファイルとしてファイルサーバーに保存して共有する

      マクロを使って予定表を共有というのは、考慮しなければならないことも多く、意外と面倒です。
      もし、上記のいずれかで共有できるような環境であれば、これらの機能をご検討ください。

      コメント by outlooklab — 2011年5月11日 @ 12:51 PM | 返信

  57. お世話になります。

    メッセージ受信時に自動的に受信ボックス内の「差出人」の欄をアドレス帳の表示名に変更するマクロを教えていただけますか?
    以前、上記の内容にさらにフォルダを作成し振り分けるというものを使ってみたのですが、できれば振り分けをしないほうが助かります。

    autlook2010を使用しております。

    コメント by taka — 2011年5月16日 @ 5:08 PM | 返信

    • https://outlooklab.wordpress.com/2007/03/24/%e9%80%a3%e7%b5%a1%e5%85%88%e3%82%92%e3%83%9e%e3%82%af%e3%83%ad%e3%81%a7%e6%b4%bb%e7%94%a8%e3%81%99%e3%82%8b/ に受信したメールの差出人を連絡先から検索して名前を置き換えるマクロがあります。

      コメント by outlooklab — 2011年5月16日 @ 8:58 PM | 返信

      • ありがとうございます。
        教えていただいたページの2つ目のマクロを実行してみたのですが、
        ソース‐2の内容で
        「Sub または Function が定義されていません。」というエラーが出てしまいます。
        そのまま貼り付けるだけではいけないのでしょうか?
        どうにか使える方法をご教授ください。

        宜しくお願い致します。

        コメント by taka — 2011年5月18日 @ 12:02 PM

      • 記事の冒頭にある「0. メールアドレスから連絡先を検索する」のマクロは定義していますか?
        2. のマクロは 0. のマクロがないと動作しません。

        コメント by outlooklab — 2011年5月18日 @ 1:10 PM

      • ご指摘の通りでした^^;
        マクロ初心者なものでお手数かけまして申し訳ございません。
        思い通りの素晴らしいマクロです。

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

        コメント by taka — 2011年5月18日 @ 3:56 PM

  58. いつも参考にさせてもらい大変お世話になっています。

    Outlook 2007 + Exchangeの環境で、グローバルアドレス帳に登録されている表示名に特定の文字列を含む共有の予定表を検索し、これらをOutlook 2007の予定表ビューの特定のナビゲーショングループに追加することを考えています。

    マクロで実現できるでしょうか?

    コメント by たろう — 2011年5月16日 @ 5:20 PM | 返信

    • マクロを使えば特定のユーザーの予定表をナビゲーショングループに追加することは可能です。
      サンプルを作成しますので、しばらくお待ちください。

      コメント by outlooklab — 2011年5月17日 @ 12:47 PM | 返信

      • ありがとうございます。

        特定のユーザの予定表をナビゲーショングループに追加するだけならサンプルコードを見つけたのですが、特に

        「表示名に特定の文字列を含む共有の予定表をグローバルアドレス帳から検索する」

        というところで困っています。

        よろしくお願い致します。

        コメント by たろう — 2011年5月18日 @ 11:14 AM

      • 表示名に、というのはアドレス帳で表示される表示名のことでよろしいでしょうか?
        その場合、グローバルアドレス帳のオブジェクトからユーザーの一覧を取得し、そのユーザーの表示名をチェックするという処理になります。
        たとえば、”会議室”という文字列を表示名に含むユーザーを処理する場合は以下のようなコードになります。

        For Each abGal In Session.AddressLists
        If abGal.AddressListType = olExchangeGlobalAddressList Then
        Exit For
        End If
        Next

        For Each aeGal In abGal.AddressEntries
        If aeGal.Name Like “*会議室*” Then
        ‘ 処理
        End If
        Next

        コメント by outlooklab — 2011年5月18日 @ 1:07 PM

      • さっそくのご回答ありがとうございます。

        ご拝察の通り、「表示名に」というのはアドレス帳で表示される表示名のことでしたが、ご回答のサンプルコードを参考にしてほぼ意図通りの動作ができるようになりました。

        しかし、今度はGetSharedDefaultFolderがうまく行く場合と行かない場合があって困っています。どうやら予定表の公開がされていない場合にはランタイムエラーとなっているようですが、通信タイムアウトなどその他の場合にもエラーとなるようです。

        こういった場合のエラーコード一覧はどこかで入手できるでしょうか?

        コメント by たろう — 2011年5月19日 @ 9:42 AM

      • Outlook で発生するエラーとしては、VBA のランタイム エラー、COM のエラー、MAPI のエラー、Windows のエラーなど、様々なものがあります。
        それらのエラーコード一覧は MSDN などで公開されていますが、エラー発生時に Err.Number を Hex 関数で 16 進にしたものや、Err.Description でエラーメッセージを確認し、それを検索したほうが意味だけでなく対処方法などもわかってよいかもしれません。

        コメント by outlooklab — 2011年5月24日 @ 12:48 PM

  59. 素晴らしいページで、いつもお世話になっています。

    受信したメール本文からデータをCSV形式で抽出しようとしています。

    https://outlooklab.wordpress.com/2008/05/17/%E6%B1%BA%E3%81%BE%E3%81%A3%E3%81%9F%E4%BB%B6%E5%90%8D%E3%81%AE%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E5%8F%97%E4%BF%A1%E3%81%97%E3%81%9F%E3%82%89%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF/

    ↑ここで知った方法を改変して、自分のPC(A)では作動させることができました。
    しかし、もうひとつのPC(B)ではうまく機能しません。
    両方ともOutlook2007で、環境の違いとしましては、PC(A)ではすべてのメールを受信BOXで受けているのに対し、PC(B)では仕分けルールを設定して複数のフォルダに振り分けていることだけです。

    NewMailEXは仕分け後のメールを対象にするという情報をwebで見たのですが、仕分け前に作動させる方法はないでしょうか?

    コメント by queisuke — 2011年5月17日 @ 4:07 PM | 返信

    • 確かに NewMailEx は受信トレイに配信されたメッセージにだけ動作します。
      振り分けを行うメッセージで同様の処理をするには、振り分けをルールではなく NewMailEx で行うか、受信時の処理を行うマクロをルールのアクションとして設定する必要があります。
      マクロをルールで実行する方法は http://support.microsoft.com/kb/306108を参照してください。

      コメント by outlooklab — 2011年5月18日 @ 1:00 PM | 返信

      • ご返信本当にありがとうございます。
        お返事遅くなりましてすみません。
        いろいろ試してみましたところ、なんとか作動するようにできました!
        まだ不明な点は多いですが…奥が深いですね。
        困った時は、またこちらのページを訪問いたします。
        どうもありがとうございました。

        コメント by queisuke — 2011年5月20日 @ 1:51 PM

  60. ネットで検索をしていたらこのサイトにたどり着きました。

    Excel2010からVBAにてOutlookを操作してメールを発信するものを作っています。
    が、メール発信の際にメール宛先確認のダイアログボックスが出てきてしまいます。
    これは非表示にしたいのですが、どのようにしたらいいでしょうか?
    (これが表示されてしまうと自動発信ができない)

    利用しているのは、いずれもExcel2010、Outlook2010、
    OSはWindows7になります。

    回答いただけると助かります。

    コメント by 大石 — 2011年5月19日 @ 9:13 PM | 返信

    • ウイルス対策ソフトはインストールされているでしょうか?
      ウイルス対策ソフトがインストールされており、パターンファイルが最新の状態であれば警告は表示されないはずです。
      基本的にはウイルス対策ソフトによる回避をお勧めしますが、どうしてもウイルス対策ソフトが使えないというような理由があるなら、以下を試してみてください。
      1. Outlook を管理者権限で起動します。
      2. [ファイル]-[オプション] をクリックします。
      3. [セキュリティ センター] タブの [セキュリティ センターの設定] をクリックします。
      4. [プログラムによるアクセス] タブの [不審な動作に関する警告を表示しない (推奨しません)] を選択し、[OK] をクリックします。

      コメント by outlooklab — 2011年5月24日 @ 12:51 PM | 返信

      • 回答ありがとうございます。
        また、回答が遅くなり申し訳ありません。

        ウィルス対策ソフトはインストール済みで、パターンファイルは最新です。
        が、やはり、送信時に宛先確認のウィンドウが表示されます。

        また、プログラムによるアクセスによるアクセスのセキュリティですが
        チェックできないグレー表示になっています。

        引き続き、アドバイスをいただけると助かります。

        コメント by 大石 — 2012年1月6日 @ 5:53 PM

      • Exchange サーバ側で宛先確認ウィンドウを強制的に表示させていることが
        わかりました。
        プログラムでこの宛先確認ウィンドウの送信ボタンを押すことはできないでしょうか?

        以上、よろしくお願いいたします。

        コメント by 大石 — 2012年1月10日 @ 4:30 PM

      • Exchange サーバーで送信時に Outlook でのダイアログの表示を強制するということはできません。
        表示されるダイアログは Outlook がウイルス対策のために出している警告ダイアログだと思っていたのですが、「宛先確認ウィンドウ」というのは私の認識しているダイアログと異なるものなのでしょうか?
        もし、表示されるダイアログに送信されるメールの宛先などが表示されているのであれば、それは Outlook や Exchange の標準の機能ではなく、アドインなどによって表示されているものであり、プログラムで制御することは困難と思われます。

        コメント by outlooklab — 2012年1月12日 @ 12:47 PM

      • 原因がわかりました。
        アドインによって宛先確認ウィンドウが表示されていました。
        このアドインを外すことによって非表示となりました。

        いろいろとアドバイスをいただきありがとうございました。

        コメント by 大石 — 2012年1月18日 @ 8:41 PM

  61. はじめまして
    社内でのPCの設定を自動化しようと考えている所に
    このサイトを拝見しました。
    現在OUTLOOK2003を使用しています。
    表示⇒並べ替え⇒グループごとに表示がディフォルトで
    チェックが入っていますが、
    社内の設定でこのチェックをすべて外しております。
    そこで、このチェックを、個人用フォルダの各フォルダで
    自動で外せるように考えたのですが、どうやっても
    うまくいきません。
    実現可能でしょうか?

    コメント by こじこじ — 2011年5月24日 @ 5:04 PM | 返信

  62. お世話になります。
    早速ですが、マクロの要望を投稿させて頂きます。
     
    Outlook2003 SP3を使用してますが、メール送信の確認ミス防止を行うため、メール送信ボタンを押したあと 確認画面が出るようマクロ(VBA)で組もうとしてます。
    その中で、Netの掲示情報などを元に 見よう見まねで作ったマクロは下記の如くですが、
    「 添付の “題名: “を表示した次の行に、
       送信しようとしてるメールに設定されている
       複数の添付ファイル名を全てさせることが出来ないか? 」
    と考えてますが、マクロはどう組めばよいのかがピンときません。

    すいません、判りましたら 教えてください。
    よろしくお願いします。

    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim strSubject As String
    Dim strBody As String

    Dim strTo As String
    Dim strCc As String
    Dim strBcc As String

    strSubject = Item.Subject ‘件名
    strBody = Item.Body ‘本文

    strTo = Item.To ‘To
    strCc = Item.CC ‘Cc
    strBcc = Item.BCC ‘Bcc

    ‘==================================================================================================================
    ‘ 件名がないメールを送信する場合に警告(vbExclamation=注意アイコンでの表示 )
    ‘==================================================================================================================
    If Trim(strSubject) = “” Then
    If MsgBox(“件名を忘れている可能性があります。 本当に送信しますか?”, vbYesNo + vbExclamation) = vbNo Then
    Cancel = True
    Exit Sub
    End If
    End If

    ‘==================================================================================================================
    ‘ 件名や本文に「添付」という文字列が含まれているにもかかわらず、
    ‘ ファイルが添付されていない場合に警告(vbQuestion=問い合わせアイコンでの表示 )
    ‘==================================================================================================================
    If InStr(strSubject & strBody, “添付”) > 0 And Item.Attachments.Count = 0 Then
    If MsgBox(“添付ファイルを忘れている可能性があります。 本当に送信しますか?”, vbYesNo + vbQuestion) = vbNo Then
    Cancel = True
    Exit Sub
    End If
    End If

    ‘==================================================================================================================
    ‘ 毎回 情報の表示メッセージ(vbQuestion=問い合わせアイコンでの表示 )
    ‘==================================================================================================================
    message = “~~ 設定されてる情報です。 送信する前に 確認してください。~~” & vbCrLf & _
    ” ” & vbCrLf & _
    “宛先: ” & Item.To & vbCrLf & _
    ” ” & vbCrLf & _
    “CC : ” & Item.CC & vbCrLf & _
    ” ” & vbCrLf & _
    “BCC : ” & Item.BCC & vbCrLf & _
    ” ” & vbCrLf & _
    “件名: ” & Item.Subject & vbCrLf & _
    fileNames & vbCrLf & _
    externAdd

    If MsgBox(message, vbYesNo + vbQuestion) = vbNo Then
    Cancel = True
    Exit Sub
    End If

    ‘==================================================================================================================
    ‘ 毎回 メール送信の再確認(vbQuestion=問い合わせアイコンでの表示 )
    ‘==================================================================================================================
    If MsgBox(“★ 最終確認です。 本当に、メールを送信してもよろしいでしょうか? ★”, vbYesNo + vbQuestion) = vbNo Then
    Cancel = True
    Exit Sub
    End If

    End Sub

    ‘==================================================================================================================
    ‘=============================================================================================== お わ り (ToT)/~~
    ‘==================================================================================================================

    コメント by 大分のVBA素人 — 2011年5月26日 @ 11:47 AM | 返信

    • 添付ファイル名の列挙だけなら、

      For i = 1 to Item.Attachments.Count
      message = message & vbCrLf & Item.Attachments.Item(i).FileName
      Next

      で出来そうですね。

      コメント by たろう — 2011年5月26日 @ 1:09 PM | 返信

      • 速やかな対応 ありがとうございます。

        ズブの素人のため コピペし、そのまま実行したところ、
        「Microsoft Visual Basic
          コンパイル エラー:
          構文エラー     」が帰ってきて 怒られてしまいました。
        此れから対処方法など調べてみようかと思いますが、
        もしよろしければ・・・
        そのまま貼付ければ出来るような例題文 などを
        ご教授いただけると大変助かります。
        すいません、よろしくお願いします。

        コメント by 大分のVBA素人 — 2011年5月26日 @ 2:04 PM

      • 上記サンプルコードは、例えば

        ‘==================================================================================================================
        ‘ 毎回 情報の表示メッセージ(vbQuestion=問い合わせアイコンでの表示 )
        ‘==================================================================================================================

        のルーチンの

        If MsgBox(message, vbYesNo + vbQuestion) = vbNo Then

        の行の前に挿入する事を想定しています。
        冒頭のDim文に、

        Dim i As Integer

        も追加して下さい。

        コメント by たろう — 2011年5月26日 @ 2:12 PM

      • 只今 動作確認まで終わり、
        無事に 動くことを確認しまた(感動です)。

        すいません、ありがとうございました。

        コメント by 大分のVBA素人 — 2011年5月26日 @ 2:25 PM

  63. いつも拝見しております。
    どうしてもわからないので質問させてください。

    ある条件のメールを送信したあと、すぐ印刷する、もしくはItemを開くということをしたいのですが、.Displayとしてもすでに送ったあとなのでありません、といわれてしまいます。仕分けルールで印刷ができるのは受信したメール用だけですし、どうすればよいのでしょうか。

    コメント by シマダ — 2011年5月26日 @ 12:57 PM | 返信

    • アイテムの送信が完了した際に発生するイベントというものがないので、マクロやアドインなどでご要望の動作を実行するのは非常に難しいです。
      強いてあげるとするなら、送信済みフォルダの Items コレクションで ItemAdd イベントを使用するというものが考えられますが、何らかのアイテムを送信済みフォルダに移動・コピーした場合にも発生してしまうイベントなので..
      なぜ、送信した後に印刷する必要があるのでしょうか?

      コメント by outlooklab — 2011年5月30日 @ 12:39 PM | 返信

      • ヒントありがとうございました。
        たしかになぜそんなものがと思いますが、ある条件のメールだけ、送信したメールの証拠として取っておくということになりまして。。。非常に面倒なもので自動化したいと思っております。

        コメント by シマダ — 2011年5月30日 @ 5:37 PM

      • ItemSend イベントで送信済みアイテムフォルダの Items の ItemAdd イベントのハンドラーを設定し、ItemAdd の中でハンドラーを解除するという方法なら、送信アイテムに対する処理ができるかもしれません。
        実装が可能かどうか試してみます。

        コメント by outlooklab — 2011年5月31日 @ 12:43 PM

  64. いつも拝見させて頂いてます。
    判らないことがありますので質問させてください。

    Q1.Outlook2003 SP3 で使用してるメールフォルダーの容量制限についてですが、
    ・2GB以上でも使用出来る(但しパフォーマンスが低下するおそれがある)のか?  もしくは
    ・2GBまでなのか?
    が判れば教えてください。

    Q2.また、メールフォルダー自体 壊れるときには壊れますが・・・
    壊れたときのことを考え、
    1GB以下でかつ
    複数の個人フォルダーで管理
    しといた方がよいかと個人的には思ってますが どうでしょうか?

    教えてください。
    よろしくお願いします。

    コメント by 素人 — 2011年5月30日 @ 11:21 AM | 返信

    • Outlook 2003 での PST のサイズ制限については、使用する PST の種類によって意味合いが異なります。
      まず、「Outlook 97-2002 個人用フォルダ ファイル」 のほうについては、 2GB というのは物理的なサイズの制限であり、これを超える PST ファイルは作成できません。そのため、制限を超えると保存ができなくなります。
      一方、「Outlook 個人用フォルダ ファイル」については、数十ギガ単位のファイルを作成することも可能ですが、サイズが大きくなればなるほどパフォーマンスは劣化します。
      どの程度のサイズまで快適に使えるかについてはハードディスクの速度や物理メモリの実装量などに大きく依存するため一概には言えませんが、やはり 2GB 程度に抑えておいたほうがよいかもしれません。

      したがって、壊れた時のことを考えて 1GB 以下の複数のフォルダーで管理というのはよい選択だと思います。

      コメント by outlooklab — 2011年5月30日 @ 12:46 PM | 返信

      • すいません、
        速やかな回答 ありがとうございました。。。

        コメント by 素人 — 2011年5月30日 @ 1:33 PM

  65. いつもお世話になっております。
    メール購読させていただき、大変参考になっています。

    Outlook2010、Windows7の環境でNewMailExイベントを利用し
    受信したメールをエクセルに書き出しさせようとしています。
    方法は、NewMailExイベントをトリガにして、受信トレイの全メールを
    For each文で確認させています。
    これは、特定の条件に基づき、Excelに記載させているためで
    条件外のメールは受信トレイに残し、チェックさせるためです。

    Outlookを起動し、1分おきにメールを受信するようOutookを設定し
    本設定での動作は問題ありませんでした。

    しかし、Outlookを起動した際、同時に実施される送受信では
    NewMailExイベントは起動しても、マクロによる処理が失敗し、
    処理されるべきメールが受信トレイに残ってしまいます。
    マクロは起動しており、受信トレイのアイテムを1つずつ確認するまは
    で正常に動いているのですが、デバッグしたところ、Outlook起動時の送受信では
    メールが受信トレイに無いようでした。
    (For each文でアイテムを一つずつ確認しました)

    EntryIDでの確認も行いましたが、やはり受信トレイに同じIDはありません。
    また、デバッグしている間に認識されるようになります。
    (2度、3度、For eachを行わせると同じEntryIDが見つかる)

    仕様の動作のように見えますが、このエラーをトラップする方法に
    お心当たりはございますでしょうか。

    よろしくお願いいたします。

    コメント by OutlookLab ファン — 2011年5月30日 @ 4:07 PM | 返信

    • 1分おきの自動受信で問題がなく、起動時の受信でのみ現象が起こるなら、起動時の受信をとめてみてはどうでしょうか?
      [ファイル]-[オプション]-[詳細設定] の [接続したら直ちに送信する] をオフにすると、起動直後の送受信を実行しなくなります。
      また、NewMailEx が正しく動作しないようであれば、ルールによるマクロ実行という方法もあります。

      コメント by outlooklab — 2011年5月31日 @ 12:36 PM | 返信

      • ご回答どうもありがとうございます。

        [接続したら直ちに送信する] をオフにしてのテストも行いましたが
        「次の時間ごとに自動的に送受信を実行する」の設定により、
        Outlookの起動時に送受信を行ってしまうようです。(ここを1分にしています)
        そのため、起動時の送受信は避けられない状況です。

        また、逆に起動時の送受信でサーバに蓄積されているメールを
        一挙に処理したいという考えもあります。

        NewMailEXは正しく動作をしております。

        挙動としては、Outlookの起動時の送受信では、
        NewMailEXイベントが発生してから
        当該メールが受信トレイに入るまでにタイムラグが
        あるのではないかというイメージです。

        ご検討いただければ幸いです。

        よろしくお願いいたします。

        コメント by OutlookLab ファン — 2011年5月31日 @ 12:54 PM

      • 私も Windows 7 + Outlook 2010 の環境で試してみましたが、起動直後の送受信でも NewMailEx イベントの発生時にはアイテムは受信トレイに格納されていました。
        何か環境に依存する問題か、不具合が発生している可能性も考えられます。
        NewMailEx 以外にルールでスクリプトを実行するという方法もありますので、そちらで試してみていただけますでしょうか?

        コメント by outlooklab — 2011年6月1日 @ 12:31 PM

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

        早速、仕訳ルール用に変更、実行し、問題なく処理されました。
        ありがとうございました。

        仕訳ルールでアイテムを渡したほうがより確実に処理されると思いました。
        素晴らしいご提案どうもありがとうございました。

        今回の不具合はアイテム取得のプログラムを単独で走らせても
        また、他の環境(Outlook2003、XP)でも同じ現象が起こりました。

        受信トレイは、GetDefaulFolderで取得し、あとはFor eachでItemsから
        1件ずつ回すだけなのですが、なぜか起動時、新規に受信したメールが
        認識されないものです。

        今後のご参考まで。

        本当にどうもありがとうございました。

        コメント by OutlookLab ファン — 2011年6月1日 @ 1:40 PM

  66. Outlook 2003 を含む Office 2003 が稼働していた Widows XP 32 bit マシンに、システム担当者が Outlook 2010 だけをインストールしました。当然ながら、Outlook 2003 は削除されて、 Outlook 2010 が使えています。

    ところが、この Outlook 2010 で、Alt + F11 を押しても VBA エディタが起動しません。「開発」タブを表示させてみると、「Visual Basic」と「マクロのセキュリティ」がグレー表示で選択できません。また、「マクロ」をクリックしても、存在している VbaProject.OTM の内容も現れません。

    「オプション」-「アドイン」では、「Microsoft VBA for Outlook アドイン」が、「アクティブではないアプリケーションアドイン」に登録されています。また、「セキュリティセンター」-「セキュリティセンターの設定」-「マクロの設定」で、「全てのマクロを有効にする(推奨しません…..)」をチェックして、Outlook 2010 を終了-再起動しても、Alt + F11 で VBA エディタが起動しません。

    Outlook 2010 のインストール設定(webインスト-ルされたようで、CD/DVD は手元に存在しない)に問題がありそうな気がしておりますが、マクロ機能および VBAエディタ呼び出し(Alt + F11)を有効にする方法についてご教示いただければ幸いです。

    コメント by tempdual — 2011年5月31日 @ 7:02 PM | 返信

    • 下記の手順を試してみてください。
      1. レジストリ エディタを起動します。
      2. 以下のレジストリ キーまで移動します。
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Outlook\Addins\Microsoft.VbaAddinForOutlook.1
      3. 右ペインの LoadBehavior をダブルクリックします。
      4. 値のデータを確認します。この値が 9 以外だった 9 に変更して [OK] をクリックします。なお、表記は 16 進数でも 10 進数でも同じです。

      値がすでに 9 だったり、9 に変更しても正常に機能しないようであれば、Outlook 2010 の再インストールをお勧めします。

      コメント by outlooklab — 2011年6月1日 @ 12:43 PM | 返信

      • 早速のご教示、まことにありがとうございます。こんな所に LoadBehavior キーがあることは知りませんでした。
        ところが、残念ながら、値は、既に 9 でした。
        他にも Microsoft.VbaForOutlook.1 とその配下の LoadBehavior がないか、レジストリー全体を検索してみましたが、ご指摘の箇所意外には、ありませんでした。
        どうやら、システム担当者に頼んで、マクロや Alt + F11 機能を有効にしつつ、再インストールしてもらうしかなさそうですので、相談してみます。
        強制的に機能を殺す形でインストールされている可能性もありそうなので、対応してくれるかどうかは疑問ではありますが……
        もし他の対象方法など、ご示唆があれば、よろしくお願い申し上げます。
        ありがとうございました。

        コメント by tempdual — 2011年6月1日 @ 1:18 PM

  67. ヤフー知恵袋からこちらに来ました
    outlook専門相談所のようで、ご回答を期待しております
    早速ですが
    outlook2003sp3にて特定のメールアドレスから毎日エクセルファイルが送られてくるのですが、現在は手動で保存先を指定し毎日保存しており、特定の方は5人おり毎日処理に時間を割いていますが、6月から10人になり毎朝こんがらがっています。
    これを自動で10人分のホルダーに上書き保存できないでしょうか
    上書き保存でのマクロのご指導をお願いいたします

    コメント by sontonsan — 2011年6月3日 @ 5:57 PM | 返信

    • 特定の文字列を件名に含むメールを受信した際に、そのメールの添付 Excel ファイルを送信者の名前ごとのフォルダーに添付ファイル名で保存 (同名のファイルがあったら上書き) する、というマクロでよろしいでしょうか?
      そのようなマクロなら作成可能と思われます。

      コメント by outlooklab — 2011年6月6日 @ 12:42 PM | 返信

      • お世話になります。

        OUTLOOKのVBAについて質問させてください。
        下記のような予定表と連動したマクロを考えています。

        定期的なアイテムとして予定表を登録し、
        その予定の時刻になったら予定表に記載しているURL(共有サーバー内のテキストファイル)が開くようにしたいと思っています。

        こちらは可能でしょうか?
        OUTLOOKのVBA記述が初めてなので是非ご教授ください。

        宜しくお願いします。

        コメント by OUTLOOK_VBA入門 — 2011年6月7日 @ 1:50 PM

      • 残念ながら、Outlook には指定の時間にマクロを起動する方法はありません。
        アラームが表示される際に発生するイベントならありますが、そうなると予定の時刻の前に表示されてしまうことになります。

        コメント by outlooklab — 2011年6月8日 @ 12:38 PM

      • ご確認頂きありがとうございました。

        他の方法を考えてみます。

        コメント by OUTLOOK_VBA入門 — 2011年6月10日 @ 10:21 AM

  68. 初めまして。下記の件で教えていただきたくコメントをします。

    グローバルアドレス一覧から連絡先へコピーをした配布リストの、名称、エイリアスと登録されているメンバーを
    CSVなどに書き出すことは可能なのでしょうか?

    多数の配布リストを作成していて、メンバーの確認作業などをするためです。
    プロパティで確認をすればよいことなのですが、一覧形式になっていると業務上楽なので

    Outlookは2002のexchange環境です。windowsXP SP3です
    よろしくお願いします

    コメント by kei — 2011年6月8日 @ 8:28 PM | 返信

    • グローバルアドレス一覧から連絡先へコピーした配布リストでは、配布リストの名前やメール アドレスは取得できますが、エイリアスやメンバーなどを Outlook 2002 のオブジェクト モデルで取得することはできません。
      ADSI などを使用し、Active Directory 上の配布リストの情報をメール アドレスをもとに取得する必要があります。
      なお、Outlook 2007 以降であれば、Outlook だけでメンバーの情報の取得も可能と考えられます。

      コメント by outlooklab — 2011年6月9日 @ 12:51 PM | 返信

  69. こんにちは。いつもお世話になっています。

    Outlook2010を使っています。
    環境は、Win7Ult(x64)+Office2010(x64)にて。

    いつの頃からか、トレイの移動(例えば受信トレイを表示しているとき、マウスで別のトレイをクリックする)をしたとき、時間が掛かるようになってしまいました。

    でも、不思議なんです。

    1.Outlook2010を起動したときは、トレイの移動はスムース(はっきり言って、一瞬)です。
    2.1通でも送信メールを作ると、そのあとから遅く(2~3秒)なるんです。

    これって、なんでしょう?

    メールの数、少なくはないと思いますけど、送信するまでは普通に早いんです。
    トレイがいくつかあるので、この2,3秒はそれなりのストレスです。

    なにかご存じでしたらよろしくお願いします。

    コメント by すけけん — 2011年6月9日 @ 4:56 PM | 返信

    • 残念ながら、ちょっと原因に思い当たりません。
      Outlook を CTRL キーを押しながら起動し、セーフモードで使用した場合には現象は発生しますでしょうか? セーフモードで発生しなければ何らかのアドインが原因と思われます。
      また、新しいプロファイルとPSTを作って同じ現象が発生するかも確認してみてください。

      コメント by outlooklab — 2011年6月14日 @ 12:40 PM | 返信

      • お世話になります。
        トレイ切り替えが遅くなる件、先ほどOffice2010のSP1をあてたところ、改善しました。
        メール送る前も後も、ストレスなくトレイ切り替えが行えるようになっています。

        今だけかも知れませんけど…(笑。

        ありがとうございました。
        ご報告まで。

        コメント by すけけん — 2011年7月3日 @ 12:29 AM

  70. はじめまして。Outlook2007を使用しております。
    EXCHANGE機能を使っているのですが、
    共有の予定表をCSVにはくVBAが載っており大変うれしく思いました。

    で、なのですが、質問をさせてください。
    objAppt.Categories などの Categories を変更したいと思っています。
    他に見たい箇所がありますもので。例えば終日イベントのフィールドですとか。
    そのフィールドの英語表記というのはどこかに載っているのでしょうか?

    どのように調べればいいのかを教えて頂きたく。
    宜しくお願い致します。

    コメント by ともろう — 2011年6月10日 @ 10:38 AM | 返信

    • 残念ながら Outlook のフィールドとオブジェクトのプロパティのマッピングが一覧になっているようなページはなさそうです。
      Visual Basic Editor で F2 キーを押すと [オブジェクト ブラウザ] が起動するので、クラスで [AppointmentItem] を選択し、右のメンバから見たいフィールドに相当するようなものを探すことになるでしょう。
      たとえば、[終日イベント] に対応するのは AllDayEvent ですが、具体的にはどのようなフィールドを確認したいのでしょうか?

      コメント by outlooklab — 2011年6月14日 @ 12:47 PM | 返信

      • #70のともろうです。

        ご返信ありがとうございます。
        [AppointmentItem]でちょっと見てみるように致します。

        具体的にはEXCHANGEで共有している人のスケジュールを管理しようと思っています。
        ので、こちらに載っておりましたので大半はできたのですが、
         ・日付
         ・時間
         ・終日フラグ
         ・内容
         ・定期的なアイテムか否か
        が知りたいです。

        コメント by ともろう — 2011年6月27日 @ 1:58 PM

      • 日付、時間は開始日、終了日でしょうか?
        であれば、Start と End です。
        また、終日フラグは AllDayEvent、内容は Body、定期的なアイテムか否かは IsRecurring です。

        コメント by outlooklab — 2011年6月28日 @ 12:46 PM

      • できました!!
        しかし見栄え的に気になる点がございまして。

        6月30日 9:00~9:30
        という予定が入っていたとします。
        今ですと
        「06/30 9:00 | 06/30 9:30」
        と入るようになっておりますが、
        「06/30 | 9:00 | 06/30 | 9:30」
        と、日にちと時間とに分けられませんのでしょうか?

        コメント by ともろう — 2011年6月30日 @ 2:59 PM

  71. はじめまして、会社で、OUTLOOK2003を使用しております。
    オプションの返信先で、固定のアドレスを入力しておりますが、
    VBAで、ボタンクリックで、オプションの返信先に、固定アドレスが
    入るようにできれば、と考えてます、
    どのように、すればいいのかご教授願います。
    宜しくお願い致します。

    コメント by 小泉 信二 — 2011年6月10日 @ 4:39 PM | 返信

    • 現在作成中のメールで返信先を設定するマクロは以下のようになります。(sample@example.com を返信先アドレスに置き換えてください)
      Public Sub SetReplyTo()
      ActiveInspector.CurrentItem.ReplyRecipients.Add “sample@example.com”
      End Sub

      コメント by outlooklab — 2011年6月14日 @ 12:51 PM | 返信

  72. はじめまして。VBAについては全く初心者のものです。
    皆様の投稿を見て現在マクロを作成しています。

    メールの新規作成、転送、返信で署名が自動的に本文へ挿入できるマクロが
    あればご教授願います。
    outlookの【ツール】→【オプション】→【メール形式】・・・を用いずにマクロで挿入したいと考えています。
    どのようにすればいいのかご教授をお願いします。

    以上、よろしくお願いします。

    コメント by みんみんだーは。 — 2011年6月13日 @ 3:04 PM | 返信

    • Outlook のバージョンにもよりますが、署名をマクロで挿入するのは非常に困難です。
      おそらく、署名の挿入ボタンをクリックする、というようなマクロを期待されているのだと思いますが、Outlook ではそのようなことは簡単にはできません。
      たとえば、返信メールに署名を挿入するとなると、メールの本文から返信元のメールの先頭部分を探し出し、そこに署名の文字列を追加するというような処理が必要になります。(先頭部分を探し出し、と簡単に書いていますが、実際にはこの処理が非常に複雑になります。)
      Outlook 2007 以降であれば少しは楽にできるかもしれませんが、それでもメール形式ごとに署名を用意する必要があったりしますので、なかなか面倒です。

      コメント by outlooklab — 2011年6月14日 @ 12:58 PM | 返信

  73. はじめまして
    いつも参考にさせていただいております。

    早速質問させてください。
    Outlook2007を使用しています。
    受信したメールをmsgファイルとして保存するマクロを作成しました。
    これをバックグラウンドで実行したいと思っています。
    Outlookはそれ以外の用途では使用しません。
    ログインしている、していないに関わらず、電源が入っていれば
    実行されるサービスのようなイメージで実行させたいです。
    こういったことはできるのでしょうか?

    コメント by あきら — 2011年6月16日 @ 1:06 AM | 返信

    • Outlookに限らず、Office製品はすべてデスクトップでユーザーと対話的に動作することを想定して作成されています。
      そのため、サービスとして実行するというようなことはできません。

      コメント by outlooklab — 2011年6月23日 @ 12:34 PM | 返信

  74. はじめまして、
    いつも参考にしております。
    今回の質問は、Outlook2003を会社で使用しています。
    件名の特定文字を仕分けルールで印刷することはできましたが、
    これに印刷をかけた件数について”件名”または”本文中”に1・2・3とカウントと印字を
    させる機能を考えております。
    こういったことは可能でしょうか?
    お知恵を借りたいと思います。なにとぞ宜しくお願いいたします。

    コメント by honda — 2011年6月20日 @ 3:45 PM | 返信

    • 仕分けルールで印刷するとなると、受信時の1回しか印刷はされないと思うのですが、印刷をかけた件数というのはどういうことなのでしょうか?
      仕分けルールとは別に手作業で印刷すると件数が増えるということでしょうか?
      それとも、受信メールごとに連番が付与されるようなイメージでしょうか?
      いずれにせよ、カウンターをどのように持たせるかという点がネックになると思います。

      コメント by outlooklab — 2011年6月23日 @ 12:38 PM | 返信

  75. 無理

    コメント by benduo — 2011年6月22日 @ 5:11 PM | 返信

  76. はじめまして。
     会社でOutlook2000から2010に移行したのですが、不可解な現象が起こっているパソコンがあり、質問させてください。
     Office2000をアンインストールして、Office2010をインストールしたので、Outlookに関する設定はそのまま引き継いだのですが、自動仕分けでHTML形式のメールを、Outlook2000で
    作成しておいた個人用フォルダに移動すると、メールの本文が消える現象が発生するようになりました。ドラッグや、リボンの「移動」で移動する分には問題ありません。
    新たにOutlook2010形式で個人用フォルダを作って、そちらに自動仕分けで移動しようとするとエラーで移動できません。Outlook2010上で作成したOutlook97-2002形式の
    個人用フォルダに移動するのはOKです。
     Program FilesフォルダのMicrosoft Officeの下にOfficeとOffice14の2つがありましたので、Officeの方を削除してみました。そうすると解決したので、これが原因か、と思っていましたが
    翌日になると再発しました。
     今度はOffice2010をいったんアンインストールして、インストールし直してみました。その時も、その日は解決しましたが、翌日になるとまた再発です。

     事例としても報告が無く、困ってます。よろしくお願いします。

    コメント by TOTO — 2011年6月23日 @ 10:24 PM | 返信

    • 下記のレジストリ値を設定し、自動仕分けの移動先の個人用フォルダを Outlook 97-2002 形式ではない通常の形式にして現象が回避できるか確認してみてください。

      キー: HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\EMSP

      – 追加するデータの名前と値
      名前: IgnoreOSTFormat
      種類: REG_DWORD (DWORD 値)
      値: 2

      名前: SilentOSTFormatChange
      種類: REG_DWORD (DWORD 値)
      値: 1

      名前: IgnoreArchiveFormat
      種類: REG_DWORD (DWORD 値)
      値: 1

      名前: PreferANSI
      種類: REG_DWORD (DWORD 値)
      値: 0

      コメント by outlooklab — 2011年6月24日 @ 12:53 PM | 返信

      • ありがとうございました。このキーを追加することで、Outlook2010形式の個人用フォルダに、自動仕分けで移すことができるようになりました。
         ところで、このキーは何をしているのでしょうか?

        コメント by TOTO — 2011年6月27日 @ 9:30 PM

      • IgnoreOSTFormat などの値はキャッシュモードで使用される OST ファイルを ANSI モードから Unicode モードに変更するための設定です。
        個人用フォルダに Office 97-2002 形式 (ANSI) と Outlook 2003 以降の形式 (Unicode) があるように、キャッシュモードで使用される OST ファイルにも ANSI と Unicode があります。
        そして、Outlook 2002 以前でオフライン モードを使用していた状態からアップグレードすると、OST ファイルが ANSI になってしまいます。
        ANSI から Unicode への移動が行われる際にいろいろと問題が発生しやすく、OST も個人用フォルダも新しい形式に統一することで、問題が解消できるのです。

        コメント by outlooklab — 2011年6月28日 @ 12:49 PM

  77. はじめまして
    Outlookの予定表をCSVにエクスポートするマクロについて教えてください。

    通常、Outlookから予定表を手動でエクスポートすると、開始日、開始時刻、終了日、終了時刻と分割されてエクスポートされますが、こちらにあるマクロでは、開始日時、終了日時が結合されてひとつのセルに出力されます。

    上記出力形式だと、どうやらGoogleカレンダーに取り込むときに、ちゃんと取り込みができないようです。

    つきましては、どのように書くと、日と時刻が分割されてエクスポートされるのでしょうか?
    (Googleカレンダーに取り込むことができる形式でエクスポートできるのでしょうか)

    コメント by まさ — 2011年6月27日 @ 11:05 PM | 返信

  78. はじめまして。
    いつも参考にさせていただいており、誠にありがとうございます。
    さっそくですが、質問させていただきたく存じます。

    Outlook2010を使用し、一定時間ごとにメールチェック。
    受信したメールの添付ファイルに「*.xls」および「*.doc」があった場合のみ、
    その添付ファイルを特定のフォルダ(Z:\、など)に自動保存する仕組みを作りたいと
    考えております。
    また、「*.xls」「*.doc」以外が添付されたメールを受信した場合、
    そのメール自体を自動的に削除する仕組みというのは可能なのでしょうか。

    お忙しいところ恐縮です。お知恵拝借できれば幸いです。

    コメント by satoshi — 2011年6月28日 @ 10:46 AM | 返信

    • Outlook には一定時間でマクロを起動するという機能はないので、Windows のタスク スケジューラーを使用してスクリプトを起動し、そのスクリプトでご要望の処理を行えばよいでしょう。
      ただ、受信したメールの添付ファイルを自動的に保存するということであれば、https://outlooklab.wordpress.com/2007/03/10/%e5%8f%97%e4%bf%a1%e3%81%97%e3%81%9f%e3%83%a1%e3%83%bc%e3%83%ab%e3%81%ae%e6%b7%bb%e4%bb%98%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%82%92%e8%87%aa%e5%8b%95%e4%bf%9d%e5%ad%98%e3%81%99%e3%82%8b%e3%83%9e/ にあるマクロが使えると思います。
      自動的に削除するという処理を組み込むことも可能ですが、本当に削除してしまってよいのでしょうか?

      コメント by outlooklab — 2011年6月28日 @ 12:57 PM | 返信

      • 早速ありがとうございます。
        タスクスケジューラを使用するとのこと、了解いたしました。

        > 自動的に削除するという処理を組み込むことも可能ですが、本当に削除してしまってよいのでしょうか?

        はい。跡形なく削除して構いませんし、削除済みフォルダへ移動する格好でも
        結構です。(削除済みに移動する方がベターかな、とは考えておりますが)

        引き続きご教示賜りますようお願いします。

        コメント by satoshi — 2011年6月28日 @ 1:44 PM

  79. はじめまして。検索して、このサイトに辿り着きました。Outlookの奥の深さに感心しています。
    Outlook予定表でのVBAについてお教え下さい。

    Outlookの予定表で業務日誌みたいなものを作成したいと考えています。
    予定表の上で、該当時間をマウスでドラッグ、右クリックしてあるメニューを選択すると
    定型の予定が設定されるような事がしたいと思っています。

    1.選択した時間を取得するためにはどうすれば良いでしょうか?

    2.予定を選択後の右クリックで出てくるメニューに自分のメニューを追加するにはどうすれば宜しいでしょうか?
      できれば、多段のメニューが組めて、場合わけができると良いなぁと考えています。

    使用しているOutlookは2007。WindowsはXPです。

    不躾ではありますが、御教授賜りたく、宜しくお願い致します。

    コメント by PiPiN — 2011年6月30日 @ 10:54 PM | 返信

  80. はじめまして。
    迷惑メールフォルダ内にたまったメールを手動にて「受信拒否リストに追加」して
    おります。この操作をマクロにて実現可能でしょうか?
    ご教示の程、よろしくお願い致します。

    バージョン:Outlook2007 SP2

    コメント by TK — 2011年7月12日 @ 6:29 PM | 返信

  81. お世話になります
    誤送信確認においてTOの文字列とRecipients.addressを画面上に表示するようなマクロを組んでいます
    outlook2007の「メッセージ再送」において以下の現象が発生しますが原因または回避策がございましたらご教授ください
    ・inspectorを監視し、_NewInspectorイベントにおいてMessageClass=”IPM.Note”の場合
    ・Sent = True の場合 CurrentItem.To も CurrentItem.Subject も正常に取得できる
    ・以外の場合       CurrentItem.To が空っぽ CurrentItem.Subject は取れる
    この空っぽ状態に苦慮しています
    新規作成時にはこの状態でも問題なく、手入力してsendイベントにおいてチェックしても正常にTOの情報は取得できます
    再送の時はメッセージ上宛先は同じように表示されているにも関わらずCurrentItem.To がnullになり新規では送信できるのに再送では送れない状態に陥っています
    (マクロで宛先入力チェックを変更すればいいのですが画面上TOが空白、アドレスありという??な状態になる)
    (再送でもアドレスを再入力すれば取れますがこの手間は本来不要)

    コメント by ある — 2011年7月19日 @ 3:21 PM | 返信

    • 以下のように、一度ダミーの受信者を追加し、それをまた削除してください。

      With ActiveInspector.CurrentItem.Recipients
      .Add “dummy entry”
      .Remove .Count – 1
      End With

      コメント by outlooklab — 2011年7月27日 @ 12:49 PM | 返信

      • ご教授ありがとうございます
        回避できました

        コメント by ある — 2011年7月27日 @ 2:50 PM

  82. こんにちは。とても参考になるサイトで、ありがたく思っています。
    マクロの要望も受け付けていただけるとのこと、ぜひお願いしたく存じます。

    ■やりたいこと
    指定した時刻になったら、特定のメールアドレス宛に決まったファイルを添付して送信したい。

    ■詳細
    「決まった件名のメッセージを受信したら、データを CSV ファイルに保存するマクロ」を拡張したいです。

    データが追加されたCSVファイル(サンプルでは c:\orders\data.csv)を、指定した時刻(例えば毎日12時)に、特定のメールアドレス(例えばreport@example.com)へ自動送信する、という内容です。コンピュータは常に起動しており、ログオンしてネットワークに接続されている環境を想定しています。

    サンプルマクロの一覧をみてみましたが、似ているようなものが見つけられませんでした。
    もし該当する例がすでにありましたらスミマセン。

    どうぞよろしくお願いいたします。

    コメント by めぐみ — 2011年7月21日 @ 7:42 PM | 返信

  83. お世話になります。
    「豆腐メール」削除マクロをこちらにて知り、コピーして使っておりましたが
    最近になり、マクロが効かなくなりました。
    VBEDITORも起動しなくなりましたので、ツール→セキュリティセンター→アドイン
    →無効なアプリケーションアドイン:Microsoft VBA for Outlookアドイン
    と、いつのまにか無効になってることが判明しました。
    そこで、有効にしようと、設定→使用できるアドインの一覧にある該当アドインの
    チェックマークを入れ、okをクリックしましたが、再度表示させると
    チェックマークが外れています。
    関係無いかもしれませんが、直前に行った操作は新規にアカウントを追加した事
    くらいです。
    なぜ有効にならないんでしょうか?
    ご教授の程、よろしくお願い致します。

    バージョン:Outlook2007 SP2

    コメント by TK — 2011年7月27日 @ 4:10 PM | 返信

    • Microsoft VBA for Outlookアドインが無効になる原因としては、このアドインの DLL が破損したというようなことが考えられます。
      Outlook の修復セットアップをして回避できますでしょうか?

      コメント by outlooklab — 2011年8月11日 @ 12:39 PM | 返信

  84. お世話になります、WindowsXP,OUTLOOK2003SP3 で、メール送信時、宛先チェック、送信先アドレス、添付ファイル名を、表示させ、メール誤送信防止を、図ってます。自PCでは、正常に動作しますが、他のPCでは、メッセージボックスが、新規メールの背後に表示されます、どうすれば、正常に、動作するようになるのでしょうか?ご教授のほど、宜しくお願いたします。

    コメント by 小泉 信二 — 2011年7月28日 @ 4:20 PM | 返信

  85. お世話になります。
    Outlookで困りごとがあると参考にさせていただいています。

    【環境】
     Windows XP SP3 + Outlook 2007 SP2

    【質問】
    新規予定作成時に、開始時刻と終了時刻の間隔がデフォルトで30分になっていますが、
    ここを1時間など自由に設定することは出来ないでしょうか?
    可能な場合、その方法を教えて下さい。

    宜しくお願い致します。

    コメント by Outlook初心者 — 2011年7月30日 @ 8:45 PM | 返信

    • 残念ながら、既定の予定の長さを変更することはできません。

      コメント by outlooklab — 2011年8月11日 @ 12:46 PM | 返信

  86. お世話になります。 WIndowsXP OUTLOOKSP3 で、メール送信時 件名、宛先をチェックするよう マクロ(OUTLOOK研究所)を使用しております。
    社外ドメイン、社内ドメインを表示させるようになっておりますが、
    TOの場合は、有効ですが、CC,BCCに、社外ドメインを入力した場合
    社外ドメイン:なし
    と表示されます。
    CC,BCCも、社外、社内ドメインを判定するには、どうしたらいいでしょう
    ご回答の程、宜しくお願い致します。

    コメント by 小泉 信二 — 2011年8月1日 @ 2:08 PM | 返信

    • 参考とされたのはどのマクロでしょうか?
      可能であれば、参考としたマクロのコメントにご質問を記入していただけますか?

      コメント by outlooklab — 2011年8月11日 @ 12:37 PM | 返信

  87. お世話になります。
    会社と家とでメールサーバの設定を切り替えて使いたいと思っています。
    会社では社内のSMTP、POPサーバに接続し、家では社外にあるSMTP、POPサーバに接続する必要があります。
    (社内から社外のサーバへはアクセスできません)
    このため、SMTPサーバ、POP3サーバとポート、SSLと認証パスワードを書き換えて使いたいと思っています。
    OutLookではマクロの記録ができないようですのでマクロを作成することもできません。
    マクロでそれぞれの設定に切り替えればよい思うのですが、どのようにしたらよいかわからず困っています。
    ご教授の程、よろしくお願い致します。

    Win7 & outlook2010とXP&outloo2003のどちらかの環境で使用したいと思います。よろしくお願いします。

    コメント by こた — 2011年8月3日 @ 10:16 PM | 返信

    • 残念ながら、マクロによってアカウントの設定を変更することはできません。
      複数の MAPI プロファイルで一つの PST を使うというような方法ぐらいしかなさそうです。

      コメント by outlooklab — 2011年8月11日 @ 12:36 PM | 返信

      • ありがとうございました。
        別の方法を考えて見ます。

        コメント by こた — 2011年8月11日 @ 10:46 PM

  88. 回答が遅くなりまして申し訳ありません。
    ご要望の動作はマクロを使用しなくても Word と Outlook で可能です。
    Word には差し込み印刷という機能がありますが、この機能を使って作成した文書をメールとして送信するということが可能です。
    https://outlooklab.wordpress.com/2008/11/29/%e5%a4%9a%e6%95%b0%e3%81%ae%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e3%81%ab%e3%83%91%e3%83%bc%e3%82%bd%e3%83%8a%e3%83%a9%e3%82%a4%e3%82%ba%e3%81%97%e3%81%9f%e3%83%a1%e3%83%83%e3%82%bb%e3%83%bc%e3%82%b8/ に具体例がありますが、差し込み印刷のもととなるデータは Excel でも構いません。
    こちらを試してみてください。

    コメント by outlooklab — 2011年8月11日 @ 12:35 PM | 返信

    • 返信が遅くなり申し訳ございません。
      作成したコードは以下のとおりです。(※マクロではなくVBでした。失礼しました。)
      環境はMicrosoft Visual Studio 2005 Tools for the Microsoft Office Systemです。

      主にWebを参考に作成してみましたが、初心者のため不具合の原因が分かりません。
      解決方法をご教示頂ければ幸いです。

      また、仮にVBは対応不可という場合でも、「マクロで作成するとこうなる」という
      サンプルをご提供頂ければ大変助かりますので、よろしくお願い致します。

      Public Class ThisAddIn
      Dim inspectors As Outlook.Inspectors
      Private menuBar As Office.CommandBar
      Private newMenuBar As Office.CommandBarPopup
      Private menuTag As String = “A unique tag”
      Private buttonOne As Office.CommandBarButton
      Private buttonTwo As Office.CommandBarButton
      Private buttonThree As Office.CommandBarButton

      Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
      inspectors = Me.Application.Inspectors
      AddHandler inspectors.NewInspector, AddressOf inspectors_NewInspector
      End Sub

      Private Sub ThisAddIn_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown
      RemoveHandler inspectors.NewInspector, AddressOf inspectors_NewInspector
      inspectors = Nothing
      End Sub

      Public Sub inspectors_NewInspector(ByVal Inspector As Microsoft.Office.Interop.Outlook.Inspector)
      ‘ If the menu already exists, remove it.
      Dim foundMenu As Office.CommandBarPopup = Inspector.CommandBars.ActiveMenuBar. _
      FindControl(Office.MsoControlType.msoControlPopup, System.Type.Missing, menuTag, True, True)
      If foundMenu IsNot Nothing Then
      foundMenu.Delete(True)
      End If
      menuBar = Inspector.CommandBars.ActiveMenuBar
      newMenuBar = menuBar.Controls.Add(Office.MsoControlType.msoControlPopup, Temporary:=False)
      If newMenuBar IsNot Nothing Then
      newMenuBar.Caption = “New Menu”
      newMenuBar.Tag = menuTag
      buttonThree = newMenuBar.Controls.Add(Office.MsoControlType.msoControlButton, Before:=1, Temporary:=True)
      With buttonThree
      .Style = Office.MsoButtonStyle.msoButtonIconAndCaption
      .Caption = “Button Three”
      .FaceId = 0
      .Tag = “c3”
      End With
      buttonTwo = newMenuBar.Controls.Add(Office.MsoControlType.msoControlButton, Before:=1, Temporary:=True)
      With buttonTwo
      .Style = Office.MsoButtonStyle.msoButtonIconAndCaption
      .Caption = “Button Two”
      .FaceId = 0
      .Tag = “c2”
      End With
      buttonOne = newMenuBar.Controls.Add(Office.MsoControlType.msoControlButton, Before:=1, Temporary:=True)
      With buttonOne
      .Style = Office.MsoButtonStyle.msoButtonIconAndCaption
      .Caption = “Button One”
      .FaceId = 0
      .Tag = “c1”
      End With
      AddHandler buttonOne.Click, AddressOf ButtonOne_Click
      AddHandler buttonTwo.Click, AddressOf ButtonTwo_Click
      AddHandler buttonThree.Click, AddressOf ButtonThree_Click
      newMenuBar.Visible = True
      End If
      End Sub

      Public Sub ButtonOne_Click(ByVal buttonControl As Office.CommandBarButton, ByRef Cancel As Boolean)
      MessageBox.Show(“You clicked: ” & buttonControl.Caption, “Custom Menu”, MessageBoxButtons.OK)
      End Sub

      Public Sub ButtonTwo_Click(ByVal buttonControl As Office.CommandBarButton, ByRef Cancel As Boolean)
      MessageBox.Show(“You clicked: ” & buttonControl.Caption, “Custom Menu”, MessageBoxButtons.OK)
      End Sub

      Public Sub ButtonThree_Click(ByVal buttonControl As Office.CommandBarButton, ByRef Cancel As Boolean)
      MessageBox.Show(“You clicked: ” & buttonControl.Caption, “Custom Menu”, MessageBoxButtons.OK)
      End Sub
      End Class

      コメント by user_001 — 2011年11月21日 @ 9:45 PM | 返信

      • 返信が遅くなりましてすみません。
        こちら、NewInspector の中でボタンがある場合には削除して追加という処理を行っているようですが、ボタンがある場合には何もしないというように変更したらどうなりますでしょうか?

        コメント by outlooklab — 2011年12月1日 @ 12:51 PM

  89. はじめまして。
    Windows Live カレンダーを介して会社で使用しているOutlook2003の予定表とiPadのスケジュール管理のアプリを同期させたいと考えています。

    上のように同期させる場合、Outlook Connectorが必要だと思うのですが
    その際、会社のOutlookにプライベートで使用しているHotmailのアカウントを追加しなければいけないのでしょうか。
    私としてはスケジュールのみ(To do リストも同期できればいいのですが)同期させたく、
    プライベートで使用しているHotmailの送受信は会社のOutlookで行いたくないのですが
    このようなことは無理なのでしょうか。

    お手数おかけして申し訳ございませんが何卒よろしくお願いいたします。

    コメント by 片頭痛持ち — 2011年8月13日 @ 6:59 AM | 返信

    • 残念ながら、Outlook 2003 の場合はカレンダーだけを同期ということはできないようです。
      カレンダー用の Hotmail アカウントを別に取得し、そのアカウントを会社の Outlook と同期させるというのはどうでしょうか?
      共有の設定を行えば、普段使っている Hotmail のアカウントからもそのカレンダーにアクセスできると思います。

      コメント by outlooklab — 2011年8月25日 @ 1:11 PM | 返信

  90. はじめましてです。
    Windows XP SP3 – outlook2010。
    「メッセージの返信、転送時に本文の先頭に日付と時間を挿入するマクロ」は、メールアイテムウィンドウから実行すればうまくゆきますが、メインウィンドウから実行するとエラーになってしまいます。 メインウィンドウからも実行できるようにする為、メールアイテムウィンドウを開く命令を追加してやるとうまく行くのではと思いますが、可能でしょうか? 可能でしたら実装方法をご教授願います。

    合わせて別件も書かせて頂きます。
    ・メッセージ作成ウィンドウにて、選択している行の先頭に引用記号の “<" を付けるマクロは出来ますでしょうか。
    (部分的に引用記号を付けたい場合があるので)
    ・表示フィールドの書式設定 – 差出人 の表示形式を「差出人/宛先」に選択すると自分が送信したメールは「宛先」が表示されるのかと思ったのですが、違うのでしょうか。IIf([差出人]="自分の名前",[宛先],[差出人]) とフィールド追加していますが、これではソートが掛かりません。良い方法があればお願いします。
    ・常にテキスト形式のメールで返信する場合、2010では設定できないのでしょうか?HTML形式に対するメールはHTMLになってしまいます。(「リッチテキスト形式のメッセージを送信する際…」 は、「テキスト形式に変換」を選択しています)
    ・2010ではヘッダーを隠せないようですが、ヘッダーにおける件名と送信者のフォントを小さく、あるいは非表示にしたいのですが、方法はありますでしょうか?(画面の面積がいらない情報で占有されている感が否めません)

    コメント by T_Y — 2011年8月22日 @ 9:07 PM | 返信

  91. お世話になっております。
    OUTLOOK2003SP3 を使用しております。
    メール送信時、件名、宛先、添付ファイル名を表示させる、マクロを使ってます
    スケジュールで、施設予約(例:打合せコーナー)を予約し、主席者にメールを送るで
    エラーになります。
    宛先がありませんで、エラーになってます。
    エラーの対処方法を、ご教授願います。宜しくお願い致します。

    コメント by 小泉 信二 — 2011年9月2日 @ 4:32 PM | 返信

    • マクロはこちらのブログにあるマクロなのでしょうか?
      もし、そうであれば、そのマクロが記載されているページにコメントしていただけますか?
      また、そうでない場合はどのようなマクロなのかを具体的に教えていただけますでしょうか?

      コメント by outlooklab — 2011年10月4日 @ 12:33 PM | 返信

  92. お世話になっております。
    OUTLOOK2003SP3 を使用しております。
    メール送信時、件名、宛先、添付ファイル名を表示させる、マクロを使ってます
    スケジュールで、施設予約(例:打合せコーナー)を予約し、主席者にメールを送ると
    エラーになります。
    宛先がありませんで、エラーになってます。
    エラーの対処方法を、ご教授願います。宜しくお願い致します。

    コメント by 小泉 信二 — 2011年9月2日 @ 4:39 PM | 返信

  93. お世話になっております。
    Outlook研究所様に1件開発をお願いしたい件がございまして、ご連絡差し上げます。

    概要としましては、
     ・Outlook2003, 2007, 2010において
     ・VBAで開発、COMアドインで配布可能な形式とする
     ・インターネット越しに、データベースに登録されたテキストメッセージ(例えば、「今日は定時退社日です。計画的に仕事を行い、残業を行わないようにしましょう」など)をメール本文(例えば、最下部)に挿入する
    といった内容です。
    他にもいくつか要件があるのですが、現在検討中のビジネスモデルに関係する部分でもありまして、コメント欄に記載するのがはばかられる為、一度お会いしてお打ち合わせさせて頂けませんでしょうか。
    (夜、休日など時間、場所はご都合に合わせます)

    インターネットで種々検索しましたが、Outlook研究所様が国内で一番Outlookに詳しいのではないかと思われ、是非ともお願いしたい次第です。

    もしよろしければ、記載のメールアドレスまでご連絡頂けませんでしょうか。

    ご検討のほど、どうぞよろしくお願いいたします。

    鈴木

    コメント by 鈴木 雅史 — 2011年9月21日 @ 12:58 AM | 返信

    • 大変申し訳ありませんが、こちらのブログは趣味の範囲で行っているものであるため、開発の請負などは行っておりません。
      Outlook の開発にあたってのサポートということであれば、マイクロソフト社のアドバイザリー サービスを使えば具体的な API の使用方法やサンプルなどの提供が受けられると思いますので、そちらにご相談されてはいかがでしょうか?
      アドバイザリー サービスについては http://www.microsoft.com/japan/services/support/advisory_service.mspx に詳細があります。

      コメント by outlooklab — 2011年9月21日 @ 1:00 PM | 返信

      • ご返信ありがとございました。(こちらからのご連絡が遅くなり大変申し訳ございませんでした)
        開発に際してはMSのアドバイザリーサービスの利用を検討することといたします。
        実現方法について、今後、可能な範囲でアドバイス頂ければ誠に幸甚です。
        どうぞよろしくお願いいたします。

        <このやり取りをご覧になられている方で、我こそは、という方いらっしゃいましたら是非鈴木宛ご連絡いただければ幸いです。>

        鈴木

        コメント by 鈴木 雅史 — 2011年10月1日 @ 11:31 PM

  94. お世話になります。
    Outlook2007を使用しています。

    メールに添付されたexcelファイルの特定のセルに入力された値をメール受信時にメールの件名、もしくは本文に追加することはできますか。
    もしくは添付ファイルに入力された値を条件にしてメールの自動仕分けを設定することはできますか。

    VBA 初心者です。
    ご教授ください。どうぞよろしくお願いいたします。

    コメント by 匿名 — 2011年10月4日 @ 10:51 PM | 返信

  95. お世話になっております。 OUTLOOK2003SP3 を使用しております。 メール送信時、件名、宛先、添付ファイル名を表示させる、マクロを使ってます スケジュールで、施設予約(例:打合せコーナー)を予約し、主席者にメールを送るで エラーになります。 宛先がありませんで、エラーになってます。 エラーの対処方法を、ご教授願います。宜しくお願い致します。マクロコードを記載します。

    Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)
    Dim MyDomain As String
    Dim existExternAddress As Boolean
    Dim cnt As Integer
    Dim fileNames As String
    Dim message As String
    Dim externAdd As String
    Dim i As Integer
    Dim strAddress As String

    ‘ 初期値
    MyDomain = “@●●.co.jp”
    existExternAddress = False
    cnt = item.Attachments.Count ‘ 添付ファイル数

    ‘ メールを保存する
    item.Save

    ‘ 宛先なしチェック
    If item.To = “” Then
    MsgBox “宛先がありません!”, vbExclamation + vbSystemModal
    Cancel = True
    Exit Sub
    End If

    ‘ 件名なしチェック
    If item.Subject = “” Then
    If MsgBox(“このメッセージには件名がありません。[OK] をクリックすると送信します。”, vbOKCancel + vbExclamation + vbSystemModal) = vbCancel Then
    Cancel = True
    Exit Sub
    End If
    End If

    ‘ 添付ファイルチェック
    If cnt = 0 Then
    fileNames = “添付ファイル無し”
    Else
    For i = 1 To cnt
    fileNames = fileNames & “添付” & i & “:” & item.Attachments.item(i).FileName & vbCrLf
    Next i
    End If

    ‘ 社外アドレスチェック
    For i = 1 To item.Recipients.Count
    With item.Recipients.item(i)
    strAddress = .Address
    If Not strAddress Like “*” & MyDomain Then
    existExternAddress = True
    End If
    End With
    Next

    If existExternAddress = True Then
    externAdd = “外部メールアドレス:有”
    Else
    externAdd = “外部メールアドレス:なし”
    End If

    ‘ 表示メッセージ
    message = “送信する前に確認してください。” & vbCrLf & _
    “To:” & item.To & vbCrLf & _
    “CC:” & item.CC & vbCrLf & _
    “BCC:” & item.BCC & vbCrLf & _
    fileNames & vbCrLf & _
    externAdd

    If MsgBox(message, vbOKCancel + vbExclamation + vbSystemModal) = vbCancel Then
    Cancel = True
    End If

    If existExternAddress = True Then
    If MsgBox(“外部メールアドレスが宛先にありますが、本当に良いですよね???”, vbOKCancel + vbExclamation + vbSystemModal) = vbCancel Then
    Cancel = True
    End If
    End If

    End Sub

    コメント by 匿名 — 2011年10月5日 @ 3:41 PM | 返信

    • 会議出席依頼メールでは To プロパティで出席者を取得することはできません。
      Recipients オブジェクトを使う必要があります。

      コメント by outlooklab — 2011年10月6日 @ 12:49 PM | 返信

      • 大変お世話になっております、Recipients オブジェクトを使う場合の、VBマクロを
        ご教授をお願い致します。

        コメント by 小泉 信二 — 2011年10月13日 @ 4:45 PM

  96. お世話になります。
    最近outlook2007を使用し始めたのですが、Exchange Server を使った会議出席依頼について質問があります。

    以前2003を使用していた時には、他の方からの会議出席依頼を受信すると、
    受信boxのmailを確認しなくても、自分の予定表に仮の予定として依頼が表示されていましたが、
    現在はmailを確認しないと予定表に反映されなくなってしまいました。

    不在の期間中に、時間の重複した会議依頼が多く困っています。

    2003と2007の違いなのか、以前とoutlookの設定が違っているのか定かではないのですが、
    いろいろ設定を変えて試してみてもなかなかうまく行きません。

    どうすればよいかアドバイスを頂けると助かります。
    よろしくお願いいたします。

    コメント by かつき — 2011年10月6日 @ 11:18 AM | 返信

    • Outlook 2003 でも Outlook 2007 でも会議出席依頼を処理する方法は同じで、[会議出席依頼を自動処理する] がオンになっていれば処理されるはずです。
      詳細は、http://office.microsoft.com/ja-jp/outlook-help/HP010080427.aspx をご覧下さい。

      なお、Outlook で自動処理する場合、不在であってもそのメールボックスに Outlook でログオンしておく必要があります。これもバージョンによらず同様です。
      Exchange Server のバージョンが 2007 以降であれば、サーバー側で自動処理することができ、この場合は不在時であっても仮の予定として入ります。

      コメント by outlooklab — 2011年10月6日 @ 12:52 PM | 返信

  97. お世話になります。 
    Outlook 2003 SP3 で外部にメール送信する時に、CC欄に決められた人(メール管理者)のメールアカウントが設定
    されていないとメールできないようにするにはどうすればよいでしょうか?

    Outlook の設定でできるのでしょうか?
    それともVBAでスクリプトを組むのでしょうか?

    以上よろしく願いします。

    コメント by 西村 — 2011年10月8日 @ 11:51 AM | 返信

    • 送信を中断するとなると、マクロを組む必要があります。
      ただ、特定のユーザーを常に Cc に追加したいということであれば、自動仕分けのルールで送信時のルールとして [名前/配布リスト をメッセージの [CC] に追加する] を設定することで実現はできるでしょう。

      コメント by outlooklab — 2011年10月11日 @ 12:53 PM | 返信

  98. はじめまして。
    Outlook 2010でVBAでメールメッセージウィンド上で、
    本文入力フィールドにカーソルが移動したことをイベント
    として検出することは可能でしょうか。
    This Outlook Sessionで利用できる関数を確認したつもり
    ですが、当方の実現したい機能を提供するものかが
    判断できず書き込みさせていただきました。
    よろしくお願いたします。

    コメント by 匿名 — 2011年10月10日 @ 1:08 PM | 返信

    • 残念ながら、本文入力フィールドにカーソルが移動した際に発生するイベントというものは Outlook にはありません。

      コメント by outlooklab — 2011年10月11日 @ 1:03 PM | 返信

  99. コメントありがとうございました。

    コメント by 匿名 — 2011年10月12日 @ 8:59 PM | 返信

  100. お世話になっております。
    PCリプレースのプロジェクトに関わっており、以前の記事にございました
    「Outlook 個人用フォルダ ファイルのパス名を取得するスクリプト」
    を使用して情報の取得を考えております。

    取得したPSTファイルの形式が「Office 97-2002 形式 (ANSI)」か「Outlook 2003 以降の形式 (Unicode)」かを
    確認するレジストリ値はございますでしょうか。

    Windows XP / Outlook2003 環境となります。

    宜しくお願い致します。

    コメント by taku — 2011年10月13日 @ 11:45 AM | 返信

    • PSTファイルの形式はレジストリには格納されておらず、実際にPSTファイルを開いてみないとわかりません。
      確認する方法を検討して実装してみます。

      コメント by outlooklab — 2011年10月13日 @ 12:54 PM | 返信

      • 早急なご返信有難うございます。
        何卒宜しくお願い致します。

        コメント by taku — 2011年10月13日 @ 1:59 PM

      • スクリプト作成頂き有難うございます。
        早速自身のPCでテストをさせていただいたのですが
        以下のエラーがでてしまいました。

        スクリプト:C:\test.vbs
        行:71
        文字:9
        エラー:ファイルを開けませんでした。
        コード:800A0BBA
        ソース:ADODB.stream

        原因はわかりますでしょうか・・?
        お手数をお掛けしますが
        宜しくお願い致します。

        コメント by taku — 2011年10月18日 @ 1:17 PM

      • エラーの通り、ファイルが開けなかったということなのですが、たとえば Outlook を起動したままだったりしませんでしょうか?
        PST ファイルを開いたままだとスクリプトでは PST ファイルが開けず失敗します。
        とりあえずエラーが発生しないよう修正してみました。
        なお、コメントはマクロが記載されているページにいただけると助かります。

        コメント by outlooklab — 2011年10月19日 @ 12:50 PM

  101. No.28 MORI,Yasushiです。
    ※コメント入力時のフォームが安定せず、うまく入力できたか、不安です。
     前回の私のお願いの続きにコメントできないようなので、
     新しくスレッドを立てました。

    前回、ご回答いただいてから だいぶ時間が経ってしまいました。
    どうしたらよいか見当がつかず、しばらく手付かずでしたが、
    ちょっと試してみて お伺いしたいことが出てきました。
    【リマインド】
      システム:OS XP Professional , Outlook 2003
      やりたいこと:ExchangeServer(?)から情報を取得する。
    【前回の訂正】
      CDOとADSIで うまくいかない状況の説明が逆でした。
      (正)
       CDO:変数strNamesの値は Empty値
       ADSI:「実行時エラー ’-2147217865(80040e37)’テーブルは存在しません。」
         (Set oRecordset = oCommand.Execute の実行時)

    【操作状況】
      パソコン起動時のウインドウズネットワークへのログイン
        ユーザ名: uuuu
        ログオン先: wwww
      メールサーバ: ssss
      メールログイン時のユーザID:dddd\uuuu

    【新たな状況】
      ADSIのとき
      、 DOMAIN = wwww ← dddd としたら、上記エラーは出なくなりました。
        しかし、eRecordset.EOF のチェック(IF)で EOF = True (BOFもTrue)であり、
        データベースの情報が取得できていません。
        strQuery = “(|legacyExchange DN= では 等号の右側の objRecip.Address は
          /O=dddd/OU=ccc_ADMINGROUP/CN=RECIPIENTS/CN=uuuu が取得されています。
          dddd,uuuu は、上記ユーザIDです。
          cccには 社名略号が入ります。

    ウインドウズネットワークのドメイン wwww とExchangeServer の ドメイン dddd が
    異なるので うまくいかないのでしょうか? 何かアドバイスがありましたら、
    お教えください。

    以上、よろしくお願いします。

    コメント by MORI,Yasushi — 2011年10月17日 @ 5:55 PM | 返信

    • Windows にログオンしているユーザーと Exchange 接続のユーザーが異なる場合、ADSI では認証の設定が必要になると考えられます。
      ただ、CDO なら問題はないと思います。
      CDO で警告ダイアログが表示されないよう Exchange Server を構成することは可能でしょうか?
      もしそうであれば、CDO で値が取得できない点についての調査を行った方が良いかもしれません。

      コメント by outlooklab — 2011年10月18日 @ 12:52 PM | 返信

      • 早速の回答、ありがとうございます。
        「Exchange Server を構成する」の意味がよく分からないのですが、
        サーバの管理者に 対応をお願いする、ということでしょうか?

        さて
        昨日の”訂正”でも述べたとおり、CDOでは エラーは発生していません。
        ただ、変数 strNames の値が Empty値です。
        今日、さらに分かったことは
         Set objSession = CreateObject(“MAPI.Session”) 実行後の objSession の値が
        Empty値だということです。

        ウェブで 「CreateObject(“MAPI.Session”)」を検索したところ
        cdosys.dll ではなく、 cdo.dll がインストールされていることが必要、とありました。
        私のパソコンには cdosys.dll は インストールされているものの、cdo.dll は見つかりませんでした。
        mapi.dll は インストールされており、そのバージョンは 1.0.2536.0 です。

        適切なバージョンの cdo.dll をインストールすれば うまく動く(objSession になんらかの Object が取得できる)のでしょうか?

        よろしくお願いします。
        ※一度、投稿しましたが、うまく送信できなかったようなので、再送します。 

        コメント by MORI,Yasushi — 2011年10月18日 @ 7:01 PM

      • 説明が不足していてすみませんでした。
        CDO は Outlook 2003 ではオプションであり、Office のセットアップの Outlook の項目で “Collaboration Data Objects” を追加インストールする必要があります。(ダウンロード可能な CDO のコンポーネントもいくつかありますが、これらは Outlook 2003 用ではありません。)
        また、Exchange Server を構成するというのは、Exchange のパブリック フォルダにセキュリティ設定のためのカスタム フォームを発行、保存する必要があるということです。パブリック フォルダの作成などを伴うため、Exchange サーバーの管理者の協力が必要になると思います。
        詳細については http://www.microsoft.com/japan/office/ork/2003/three/ch12/OutG01.htm をご覧ください。

        コメント by outlooklab — 2011年10月19日 @ 12:59 PM

      • お世話になります。

        CDOの場合、以下2点(特にセキュリティ絡み)により、ハードルが高そうですね。
         ①>Office のセットアップの Outlook の項目で 追加インストールする
          ・・・インストールディスクが手元にない。
         ②>Exchangeのパブリック フォルダにセキュリティ設定のための
          カスタム フォームを発行、保存する必要(Exchange サーバーの管理者の協力が必要)
         ※別に悪いことをするわけではないので、きちんとサーバ管理者に依頼をすればいいのかも
          しれませんが。

        とすると ADSIでやることになりますが
         >ADSI では認証の設定が必要
          どのようにすればよいか、教えていただけませんか。
          既に OUTLOOKは起動(ログイン)していて、「表示名」をダブルクリックしたり、
         「連絡先」から 情報を取得できる状態であっても、マクロからログインする必要が
         あるのでしょうか?

                      よろしくお願いします。

        コメント by MORI,Yasushi — 2011年10月19日 @ 6:22 PM

      • 残念ながら Outlook と ADSI は連動していませんので、Outlook が使用しているログオン情報を ADSI に流用することはできません。(Windows のログオン情報であれば、引き継げるのですが…)
        ADSI で認証を行う方法は http://blogs.technet.com/b/jpilmblg/archive/2009/05/21/adsi-programming-_2d00_-howto-_3a00_-papa090520.aspx などで紹介されていますので、こちらをご参照ください。

        コメント by outlooklab — 2011年10月20日 @ 3:37 PM

      • お世話になります。
        アドバイス ありがとうございます。

        ご紹介いただいたサイトに記述されているサンプルで、認証されるかチェックしてみました。
        1.Windowsログインの ドメイン wwww と ユーザ名 uuuu
        2.Outlookログインの ドメイン dddd と ユーザ名 UUUU
         (注. UUUU≠uuuu です。訂正します。)

        どちらでも、「Set ObjDsEntry = objDs.OpenDsobject…」で エラーは起きませんでした。
        一方、貴方に作成いただいたマクロ(No.28)では、
            ドメインはWindowsログインの ドメイン wwww
            ユーザ名は Outlookログインの ユーザ名 UUUU のたすき掛けでは、
         strQuery = “<LDAP://" & DOMAIN & … がエラーの発生なく実行され、
         ドメイン、ユーザ名とも Outlookログインの、 dddd と UUUU の組み合わせでは
         エラーとなります。(ユーザ名 UUUU は obj.Recip.Address として取得された
         文字列の一部です。)

        何回も お手数をお掛けしますが、何か アドバイスがありましたら、お願いいたします。

        コメント by MORI,Yasushi — 2011年10月20日 @ 7:23 PM

      • すみません。
        「2011年10月20日 @ 7:23 PM」の投稿を訂正します。
        エラーが発生するのは
          (正) Set oRecordset = oCommand.Execute
          (誤) strQuery = “<LDAP://" & DOMAIN & …
        でした。

        よろしくお願いします。

        コメント by MORI,Yasushi — 2011年10月20日 @ 7:29 PM

      • 元の記事のコメントに認証情報の追加方法を記述しました。
        なお、基本的に今回のマクロで Windows のログオン情報は一切使いません。

        コメント by outlooklab — 2011年10月21日 @ 12:58 PM

      • ありがとうございました。
        うまくいきました。
        感激です!!

        うまくいった理由は
         「ExchangeServerのドメイン dddd から ユーザ UUUU で認証を受けられた」から
        だと思いますが、そこで疑問が。
        strQuery に DOMAIN と ユーザ名CN=UUUU に記述されていますが
        (ユーザ名はOutlookから取得)
        今まで、ExchangeServerの認証を受けない(本日の追加ステートメントを実行しない)状態では
         1)ログイン状態は 以下の状態だと理解しました。(合っているでしょうか?)
          ①Windowsログインのドメインには ログインしている
          ②ExchangeServerには
            Outlookとしてはログインしているが、VBAとしてはログインしていない
         2)以下のような状況は どのようなメカニズムで発生するのでしょうか?
          strQueryの
          ①DOMAINが Windowsログインの wwww、ユーザ名CN=が UUUU(ADSIのユーザ名)のとき 
           ユーザ名が存在しないはずなのに
           Set oRecordset = oCommand.Execute でエラーが発生しない。
           (oRecordset.EOFは True)
          ②DOMAINが ExchangeServerログインの dddd、
           ユーザ名CN=が UUUU(ExchangeServerのユーザ名)のとき
           ログインできていないはずなのに
           「テーブルは存在しません」と、ドメインddddにアクセスしているかのような
           エラーメッセージが返ってくる
         ※これらは、”興味”なので お時間がありましたら、教えてください。

        最後に 改めて
         本当にありがとうございました。

        コメント by MORI,Yasushi — 2011年10月21日 @ 5:28 PM

      • 自己レスです。
        LDAPの ユーザ名 CN=UUUU は ログインユーザではなく、メールの送信先ですね。
        宛先を自分にしてトライアルをしていたので、自分のユーザ名がハンドリングされていたんですね。
        てっきり Outlookのログインユーザ名と思い込んでいました。

        そう考えると
          DAMAINを wwwwにしたときは、認証されているのでエラーもなにも出ず、
         ただ、データベースがないか、データベースに UUUUがない(当たり前)ので
         取得した情報を入れるオブジェクトが Empty値だったんですね。

         一方 DOMAINを ddddにしたときは 認証されていないのでエラーが発生したのだと。
         (”テーブル”がなんなのか、はよく分かりませんが。)

        コメント by 匿名 — 2011年10月22日 @ 12:56 AM

  102. はじめまして お世話になります
    さて、マクロに関してご教示下さい

    OUTLOOK2007で、受信したメールを、自動的に名前を付けて保存する方法を教えて欲しいです。

    受信したメールを残らず、エビデンスとして保存する必要があります
    受信フォルダにかかわらず、振分先のフォルダでも、新規に受信したメールを全て
     件名.msg
    で任意のフォルダ(例えば、c:\temp\)に保存したいです。
    また、メールに添付されたファイルも同じ、件名.msgに付加し保存したいです
    (イメージ的にはOutlookでメールを選択し、ドラッグ&ドロップを行ったときにできる msgファイルを
    自動でつくりたいです)

    お手数ですがご教示願います

    コメント by syo2910 — 2011年10月17日 @ 7:55 PM | 返信

  103. outlooklab様
    ご教授ありがとうございます。

    ご提示いただいたマクロを参考にして試した見ましたが、いくつか問題があります。

    1.受信フォルダ以外のフォルダへの振分設定しているメールが
      うまく保存されない(受信トレイをチェック対象にしているためか?)
    2.受信フォルダ内あるいは未読メールを保存対象にしている場合、
      同一件名のメールを別名として保存すると(例えば、A(1).msg )
      新着メールが来るたびに受信フォルダ内の全メール(あるいは未読のままの全メール)が複数回
      保存されてしまう。

    2.に関しては受信日時と件名を足したものをファイル名にし、既に存在する場合は保存しないようにすれば
    解決できそうだと思っていますが、1.の件がうまくできません。

    ご提示いただけるのであればマクロの作成をお願いいたします。

    コメント by syo2910 — 2011年10月18日 @ 2:15 PM | 返信

  104. 初めてメールさせていただきます。
    OUTLOOK2007において、分類項目を他のユーザーと共有することは可能でしょうか?
    または、分類項目を追加するマクロはございますでしょうか?
    お忙しいところ大変お手数をおかけしますが
    ご教授いただきたく
    どうぞよろしくお願い致します。

    コメント by ママプロ — 2011年10月19日 @ 6:16 PM | 返信

    • 分類項目を共有することはできませんが、マクロで追加することは可能です。
      たとえば、以下のようなマクロで「Test」という名前の青い分類項目を追加することができます。

      Sub AddCategory()
      Session.Categories.Add “Test”, olCategoryColorBlue
      End Sub

      コメント by outlooklab — 2011年10月20日 @ 3:42 PM | 返信

      • お忙しい中、ご教授ありがとうございました。
        お蔭様でうまくいきました。
        OUTLOOK2003の環境で試したところ、エラーになります。
        OUTLOOK2003でラベルではなく、分類項目を追加するには
        どのようにしたらよろしいのでしょうか?
        再度、お教えいただきたく、どうぞよろしくお願いいたします。

        コメント by ママプロ — 2011年10月21日 @ 1:26 PM

      • 残念ながら、Outlook 2003 ではマクロにより分類項目を設定することはできません。
        Outlook 2003 では分類項目は下記のレジストリに保存されていますので、このレジストリをエクスポートして、別の PC でインポートすれば設定は可能です。ただし、インポートする前に合った分類項目は消えてしまいます。

        HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Categories\MasterList

        コメント by outlooklab — 2011年10月21日 @ 1:58 PM

  105. 初めてメールさせていただきます。
    OUTLOOK2007において、予定表の分類項目を他のユーザーと共有することは可能でしょうか?
    または、分類項目を追加するマクロはございますでしょうか?
    お忙しいところ大変お手数をおかけしますが
    ご教授いただきたく
    どうぞよろしくお願い致します。

    コメント by ママプロ — 2011年10月19日 @ 6:17 PM | 返信

  106. はじめまして。
    私は仕事の関係で、出荷指示の用紙をFAXで受取り、
    出荷担当者に作業を依頼していました。

    そして最近、出荷場所の変更も伴い、
    少し離れた場所にある置場からの出荷になりました。
    FAX開通に対する費用対効果は小さいと考え、
    複合機からEメール送信、添付ファイルとして付いたファイルを
    自動印刷、という方法を取っていきたいと考えていました。

    現状、複合機からのEメールを受信するところまでは
    設定が整ったのですが、自動印刷の設定に苦心しております。
    はじめ考えていたのが、Gメールで受信→outlookで自動印刷
    という方法だったのですが、outlookの設定が良く分からず
    作業が止まってしまっています。

    何か良い方法があれば、ぜひご教示ください。
    宜しくお願いします!!

    コメント by 鈴木誠人 — 2011年10月20日 @ 4:07 PM | 返信

    • Outlook には受信したメールをルールで印刷する機能はありますが、この機能では添付ファイルは印刷ができません。
      そもそも添付ファイルを印刷するにはそのファイルに対応したアプリケーションで印刷を実行しなければならず、そのような処理が自動化できるかはアプリケーション次第となります。

      コメント by outlooklab — 2011年10月21日 @ 2:02 PM | 返信

  107. はじめまして。
    色々頑張ったのですが、ちゃんと出来ずにこまってしまいました。

    OUTLOOK 2003 メール機能のみ使用している業務です。
    各種セミナーの予約申し込みメールを受信し、審査してOKなら予約完了メールを返信するだけです。

    ただし、返信メールの件名の後ろにセミナー毎の採番をかきこみます。例えば、2-15(セミナー2番の15人目予約者)
    それが手間で困っており、スクリプトで「メールの件名の後ろにセミナー毎の自動採番を付与」し、仕分けルールでセミナー毎のフォルダに実行できたらと思っています。

    受信時に仕分けルールでセミナー毎のフォルダに振り分けています。
    返信もセミナー毎のフォルダでテンプレートを使って自動返信しています。
    処理したいフォルダを指定し、InputBoxなどで”2-15″とかスタート値を入力指定して使いたいです。

    30セミナー、最大定員300人で、とても一台のPCでは大変になってます。
    (予算削減で9月から普通のPCが一台メアド1個なのです。他PCは高セキュリティを厳守していてでこういった業務には使わない規則です)

    コメント by ぴさん — 2011年10月20日 @ 9:57 PM | 返信

    • まず、最初に受信する予約申し込みメールではセミナーの番号は件名に入っているのでしょうか?
      返信の際にセミナー番号を指定するということでしょうか?
      また、自動採番を行うとなると、どのセミナーが何番まで設定されているか、ということをどこかに保存する必要がありますね。
      それと、現在はルールで振り分けているということですが、どのように振り分けているのでしょうか?

      ちょっと複雑なものになりそうですので、もう少し仕様を明確にした方が良いと思います。

      コメント by outlooklab — 2011年10月21日 @ 1:08 PM | 返信

      • 早々ありがとうございます。
        最初から説明不足ですみませんでした。

        ■受信する予約申込みメールの件名にセミナーの番号が入っています。
         申込みメール記載要領
         件名 : セミナー番号n セミナー名
         本文 : ①名前、②連絡先、③ 、④ 、・・・・ 

        ■セミナー毎に予約者名簿をエクセルBookで作成しています。予約者の最終行が予約番号のカレント値になります。
        ■セミナーの番号で振分けしていますが、件名、本文とも記載がいい加減なメールも多く、手動で振分けを補完しています。 また、下記業務内容や審査の結果によりさらに下位フォルダに手動で移動しています。

        業務内容 
        ・開催日の異なる各セミナーに番号を付け、さみだれ式に5度に分割して受付開始する
        ・メール本文に項目漏れがあれば、情報不備メールを返信する
        ・同一差出人が同一セミナー番号に複数申込みした場合、重複メールを返信する
        ・同一差出人が別セミナー番号で同一セミナー名に申込みした場合、重複メールを返信する
        ・異なる差出人でも名前、連絡先などが同一の場合、重複扱いにする
        ・本文内容をチェックして対象外者である場合、内容相違メールを返信する
        ・対象者である場合、予約番号を付与した予約完了メールを返信する
            対象者の名簿(エクセル)を作る
            セミナー当日は、予約完了メールの印刷を持参することで、名簿の予約番号、名前などで本人確認する
        ・予約キャンセルを随時受付け、定員数に反映する
        ・各セミナー毎の定員後の申込みメールの場合、締切メールを返信す
        ・受付け開始前の申込みメールの場合、フライングメールを返信する

        ■フォルダ構成(受信トレイと送信済みアイテム配下の双方に作成)

        受付年月
           セミナー番号/名称 ←受信トレイ配下ではセミナーの番号で自動仕分けメールが入るフォルダ
               締切     ←手動で移動、仕分けルールで特定のテンプレートで返信、送信済みアイテム配下に移動
               不備     ←手動で移動、返信、送信済みアイテム配下に移動
               内容相違  ←手動で移動、仕分けルールで特定のテンプレートで返信、送信済みアイテム配下に移動
               重複     ←手動で移動、返信、送信済みアイテム配下に移動
               予約完了  ←手動で移動、件名に予約番号を付与、
                         仕分けルールで特定のテンプレートで返信、送信済みアイテム配下に移動
               事前キャンセル ←送信済みアイテム配下のみ作成
           セミナー番号/名称
               締切
               不備
               内容相違
               重複
               予約完了
               事前キャンセル
           :
           :

        フライング ←受信トレイ配下ではセミナーの番号で自動仕分けメールが入るフォルダ

        ・上記の「予約完了フォルダ」を指定して「件名に予約番号を付与」という部分を自動化したかったのです。
        ・工程数では人の作業工程が多いですが件数は少なく、圧倒的に件数が多いこの部分だけでも自動化できれば助かるということなのです。

        説明が長くて大変申し訳ありません。宜しくお願い致します。

                

                     

            

        コメント by ぴさん — 2011年10月22日 @ 3:58 AM

      • 以下の工程を自動化する、ということですね?
        > 予約完了  ←手動で移動、件名に予約番号を付与、
        >      仕分けルールで特定のテンプレートで返信、送信済みアイテム配下に移動

        これについて確認したい点がいくつかあります。
        1. このフォルダーには受信した予約申し込みメールが入る、ということでよろしいでしょうか?
        2. 仕分けルールで特定のテンプレートで返信、とのことですが、仕分けルールは通常は受信時にのみ実行されるはずです。どのようにして手動で移動したメールにルールで返信させているのでしょうか?
        3. 送信済みアイテム配下に移動、とありますが、自動付番したメールを送信済みに移動してしまう、ということでしょうか? となると、予約完了フォルダにある元の申し込みメールの件名には番号がついていないままの状態ということでしょうか?

        以下のようなマクロを想定していますが、この動作で問題がないかもご確認ください。
        マクロ 1: 返信用マクロ – 予約完了フォルダーのメールを選択して実行する
        1. 選択されたメールの返信メールを作成する。
        2. マクロがあらかじめフォルダーに保存されている番号保存用アイテムの予約番号を取得し、それに1加算したものを返信メールの件名に追加する。
        3. 加算した予約番号を番号保存用アイテムに保存する。
        4. 返信メールを表示する。
        マクロ 2: 設定用マクロ – マクロ 1 で使用される番号保存用アイテムを作成する。
        1. ユーザーからセミナー番号を取得する。
        2. ユーザーから予約番号の開始番号を取得する。
        3. 番号保存用アイテムを現在選択されているフォルダーに作成する。

        コメント by outlooklab — 2011年10月24日 @ 12:59 PM

  108. はじめまして。
    Outlookでトラブルがあってググっていたところ、こちらのサイトにたどり着きました。

    私はOffice for MacのOutlook2100を使っているのですが、
    使い始めて4カ月ほどの間に、突然今までの受信メールが全部消えるということが3回ほどありました。
    いつものようにOutlookを開くと、なぜかメールが消えているのです。
    アカウントの情報を見てみると、以前設定したアカウントが全部消えています。
    (ちなみにアカウントはYahooメールのものです。)

    容量オーバーかなにかでしょうか…?
    たしかに600通くらいのメールがたまっていたような気がするので…
    気持ち悪いので、思い当たる節があったら教えてください><

    コメント by ぽんぽん — 2011年10月22日 @ 11:14 PM | 返信

  109. お礼が遅くなり申し訳ございませんでした。
    うまくいきました。
    どうもありがとうございました。
    今後とも、どうぞよろしくお願い致します。

    コメント by mamapro — 2011年10月23日 @ 2:09 PM | 返信

  110. outlooklab様

    >103

    ありがとうございました。 早速試してみます

    コメント by syo2910 — 2011年10月25日 @ 8:49 AM | 返信

  111. 10/24 outlooklab さま
    NO.107 
    以下の工程が自動化したい部分です。
    ・ 予約完了フォルダ内のメールの件名に予約番号をつけて上書きする。

    以下の工程は現在、仕分けルールを随時実行しているので番号付与と連動しなくてもなんとかなります。
    むしろ、セッションで同一宛先に自動返信をしてしまうことも頻繁にあり、そういう時はこの仕分けルールでフォルダを指定して再度実行できるので独立しているほうが重宝です。
    ・ 予約完了フォルダ内のメールを仕分けルールで特定のテンプレートで返信、送信済みアイテム配下に移動する。

    確認点
    1.受信した予約申し込みメールは仕分けルールで親フォルダの「セミナー番号/名称フォルダ」に入り、人がチェック後に手動で予約完了フォルダに入れます。
    2. 「テンプレートで返信」する仕分けルールは受信時に実行されていないようです。仕分けルールのオプションを以下に設定して「仕分けルールの実行」ボタンで随時実行しています。
     ・受信トレイ内のメッセージに仕分けルールを適用する:OFF
     ・この仕分けルールを有効にする:OFF
    3. 自動付番したメールを送信済み側(処理済の意)に移動しますので、受信トレイ側の予約完了フォルダは空になり、また新着メールのチェック処理に使います。

    コメント by ぴさん — 2011年10月25日 @ 11:30 PM | 返信

  112. Outlook2003を使っています。
    「同期の失敗」フォルダ内の「ローカルの失敗」にメールがあります。(ほとんど受信メール。2通は宛先がブランク)

    ・ここに保存された原因
    ・保存されたメールの処理方法
    を教えていただけますか?

    コメント by KK — 2011年10月31日 @ 3:54 PM | 返信

    • ローカルの失敗に保存されているメールは、何らかの理由でサーバーへのアップロードに失敗したものです。
      ローカルのOSTファイルにあるメールが破損しているような場合にサーバーへのアップロードが失敗しますが、そのままフォルダーにあると何度もアップロードを繰り返してサーバーに負荷をかける可能性があるので、ローカルの失敗に移動してしまうようです。
      ローカルの失敗から一度受信トレイなどに移動し、その後やはりローカルの失敗に移動してしまうようであれば、サーバーに保存できない異常なデータが含まれていると考えられます。
      その場合は、そのメールをアップロードすることはあきらめて、個人用フォルダなどに移動して参照するようにすべきでしょう。

      コメント by outlooklab — 2011年11月1日 @ 9:27 PM | 返信

  113. おはようございます。何度も申し訳ございません。「コメント by hoge — 2011年8月9日」の名前をハンドルネームhogeに変更、または削除して頂けないでしょうか。現在クローラでこれしか引っかかってませんが、今後名前が外に出て行く予定でして。。。業務の内容を書き込んだのが知られると解雇されてしまいます。GoogleとYahoo!のみなさんにもお願いしていて、諸々の痕跡を全て消して回っています。本当に本当に申し訳ないのですが、何卒よろしくお願いいたします。

    コメント by hoge — 2011年11月1日 @ 8:08 AM | 返信

  114. お世話になっております。
    「コメントコーナー」で送信してしまいましたので
    改めて「質問コーナー」で送信させていただきます。

    エクセルVBAから『Exchange環境で共有されている他人の予定表を取得する』マクロを利用させていただいております、大変助かっております。

    その際、予定表フォルダに既に共有者名がある場合、このマクロを実行後に、予定表フォルダにさらに同じ名前が追加されてしまいます。
    たとえば、『山田太郎』という共有者名が既に予定表フォルダに表示されていた場合、マクロ実行後には『山田太郎』と
    『予定表-山田太郎』の二つが表示されます。
    この『予定表-山田太郎』を作成しないか、または、実行後に『予定表-山田太郎』を削除するか、どちらかの方法を
    ご教授いただけませんでしょうか?
    お手数をおかけしますが、どうぞよろしくお願い致します。

    コメント by mamapro — 2011年11月14日 @ 5:30 PM | 返信

    • こちら、回答が遅くなりまして申し訳ありません。
      動作確認をして回避方法があるか検討してみますので、しばらくお待ちください。

      コメント by outlooklab — 2011年11月16日 @ 12:52 PM | 返信

  115. お忙しい中、ご連絡ありがとうございます。
    お手数をおかけしますが
    どうぞよろしくお願いいたします。

    コメント by mamapro — 2011年11月16日 @ 1:42 PM | 返信

  116. はじめまして。Outlookのマクロについて質問がございます。

    Outlook2003の新規作成メールのメニューバーに独自のメニューとコマンドボタンを作成し、
    コマンドボタンをクリックするとメッセージが表示されるマクロを作成しましたが、
    以下のように正しく動作しませんでした。

    1. 1つ目の新規作成メールを開く→コマンドボタンをクリック→メッセージが表示される
    →OKボタンをクリック→メッセージが閉じる

    2. 1つ目の新規作成メールを最小化

    3. 2つ目の新規作成メールを開く→ウィンドウを最小化(コマンドボタンはクリックしない)

    4. 3つ目の新規作成メールを開く→ウィンドウを最小化(コマンドボタンはクリックしない)

    5. 1つ目の新規作成メールをアクティブにする→コマンドボタンをクリック
    →メッセージが表示される→OKボタンをクリック→メッセージが閉じない!
    →もういちどOKボタンをクリック(※結局メッセージが閉じるまで3回OKボタンをクリックすることになる)

    恐れ入りますが、解決方法をご教示ください。
    また、マクロのサンプルをご提供頂ければ大変助かります。

    コメント by user_001 — 2011年11月16日 @ 9:03 PM | 返信

    • 実際にはどのようなマクロを作成されたのでしょうか?
      こちらでマクロの動作を確認させていただきたいのですが。

      コメント by outlooklab — 2011年11月19日 @ 10:04 AM | 返信

  117. outlook2007においてマクロが使えなくなってしましました(VBEが開かない)
    現状のoutlook VBAをVB6.0でdll化しアドインとしてテストしていました
    そのアドインのテストの最中にoutlookが異常終了して以降何もできなくなりました
    関係あるかどうかわかりませんがアドインの「microsoft vba for outlook アドイン」が無効になっており、これを繋ぎ直そうとすると「有効なofficeアドインではありません」と怒られてしまいます
    outlookの再インストール、オフィスの再インストールも試みましたが変わりません、ネットもググってみましたがさっぱりです
    VBE以外のoutlookの機能は正常です
    何か情報をお持ちでしたらご教授願います

    コメント by ある — 2011年11月24日 @ 2:15 PM | 返信

    • [ツール]-[セキュリティ センター] の [アドイン] で [無効なアプリケーション アドイン] として表示されているアドインを有効にするには、そのウィンドウの下の方の [管理] ドロップダウンで [使用できないアイテム] を選択して [設定] をクリックし、アドインを選択して [有効にする] をクリックしてください。

      コメント by outlooklab — 2011年12月1日 @ 1:01 PM | 返信

      • いくらつなぎなおそうとしても結局できませんでした
        その後outlook自体が不安定になり最終的にPCのセットアップからやり直しました
        回答ありがとうございました

        コメント by 匿名 — 2011年12月1日 @ 7:07 PM

  118. お世話になっております。

    Outlookバージョン:2007

    Exchange 2010のメールボックスにOutlook 2007を接続している環境で、件名または本文に特定のキーワードが含まれるメールを受信したら、マクロ/仕分けルール/アクションアイテムなどを活用して、会議(または予定表)アイテムを自動登録する、ということは実現できないでしょうか。

    会議出席者=TO、CCに登録されているメンバ
    件名=メールの件名
    詳細=メールの本文
    時間=受信した時間から24時間後とか

    お知恵を拝借できると大変ありがたいと考えています。

    可能な範囲でご支援よろしくお願いいたします。

    コメント by ヤマダー — 2011年11月30日 @ 4:24 PM | 返信

  119. OUTLOOK VBAからaddinの状態が取得できますか?
    名前はapplication.COMAddIns.Item(x).Descriptionでとれそうですがそのほかの情報は単純にとれないのでしょうか?
    パス、アクティブ、ノンアクティブ、無効、できるならそのDLLのタイムスタンプ

    コメント by ある — 2011年12月1日 @ 7:36 PM | 返信

    • 残念ながら Outlook のオブジェクト モデルではアドインの情報はほとんど取得できません。
      ファイルのパスやタイムスタンプなどの情報はレジストリやファイルから取得する必要があります。
      アドインの状況はユーザー インターフェイスでも確認できますが、スクリプトなどで取得する必要があるということなのでしょうか?

      コメント by outlooklab — 2011年12月6日 @ 12:38 PM | 返信

      • 社内にばらまいたアドインの問い合わせ用に今接続されているDLLのバージョンや状況を簡易に知る方法がないかと、、
        お年を召された方に「今アドインどうなってます?繋がってる?タイムスタンプは?」と言ってももなかなか簡単にいかないもので、、この手間を省けたらと、、

        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Outlook\Addinsにはパス情報などが見当たらないんですが
        ご存知でしたらレジストリの場所とキー、取り方をご教授いただければ幸いです

        コメント by ある — 2011年12月7日 @ 10:36 AM

      • こちらについてはすぐにお出しできる情報がないので、確認して回答します。

        コメント by outlooklab — 2011年12月7日 @ 12:55 PM

      • Outlook のアドインの情報はレジストリの以下のいずれかに書き込まれています。

        HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Outlook\Addins
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Outlook\Addins

        上記のキーの下にアドインごとのキーが生成されており、そこに各アドインの情報が保存されており、LoadBehavior が 3 や 9 なら有効と判断できます。(奇数であれば有効です。)
        一方、そこからファイルなどの情報を取得する方法はアドインの種類ごとに変わります。

        まず、一般的に COM アドインといわれるアンマネージのアドインについては、キーの名前自体が Program ID となっており、HKEY_CLASSES_ROOT の下のキーにその CLSID が格納されています。
        そして、HKEY_CLASSES_ROOT\CLSID の下で格納されている CLSID と同じキーを捜し、その下の InprocServer32 の (既定) がパス名になります。
        そのパスをもとに FileSystemObject を使ってタイムスタンプなどは取得できます。

        しかし、Visual Studio Tools for Office によって作成された、いわゆる VSTO アドインの場合、レジストリにはアドインのファイルパスなどの情報がありません。
        そのため、スクリプトなどで DLL の情報を取得することはできなそうです。

        コメント by outlooklab — 2011年12月9日 @ 1:01 PM

  120. ご連絡ありがとうございます。

    お問い合わせ頂いた件ですが、自作のメニュー(”New Menu”)がすでにある場合には何もしない
    というように変更すると新規メールを作成するたびに自作のメニューが追加されてしまいます。
    つまり、新規メールを5通作成しようとすると5つ目のメールのメニューバーには”New Menu”が
    5つ並んでしまう状態です。

    コメント by user_001 — 2011年12月2日 @ 9:23 PM | 返信

    • 何もしないというのは、削除も追加もしないという意味なのですが、追加処理をしなくてもメニューが追加されてしまうのでしょうか?

      コメント by outlooklab — 2011年12月6日 @ 12:38 PM | 返信

  121. 初心者です、
    OUTLOOKでメールを受信したら、自動的にOUTLOOKを開き新着メールの本文を全部コピーするマクロなんかあったりしますか?
    最終的には、受信したメールをHPに貼り付ける作業を自動化したいです。
    Outlookバージョン:2007使用。ご教授願います。

    コメント by 匿名 — 2011年12月2日 @ 10:26 PM | 返信

    • 受信したメールの本文をテキストファイルなどにコピーするマクロなら作背可能です。
      しかし、最終的にそれを Web に貼り付けるという処理のほうが大変です。
      メールで Web ページの書き換えが必要なら、たとえばメールを送信するとそれがそのままブログの記事になるというようなサービスの利用をご検討されてはいかがでしょうか?

      コメント by outlooklab — 2011年12月6日 @ 12:40 PM | 返信

  122. 度々申し訳ございません。
    89.コメント by hoge — 2011年8月11日 @ 4:19 PM | 返信
    も削除いただけないでしょうか。
    お手数おかけし誠に申し訳ございませんが、
    何卒よろしくお願いいたします。

    コメント by hoge — 2011年12月3日 @ 2:19 AM | 返信

    • はじめまして。資料作成で困っており、どうぞご教示お願いします。
      仕事でoutlook2010を使用しています。メールをファイルエクスポートでエクセル一覧にしたら、日時情報がないため、本サイトの「Outlook 2010 で送信日時や受信日時を含むメッセージの一覧をエクスポートする」の記事を拝見し、やってみましたが、うまくいきません。フォルダによって状況がかわりますが、時刻なしの月日だけしか出力しない、または月日なしの 曜日と時刻しか出力しない といった状況です。
      月日と時刻の両方が必要です。
      outlook2010のパソコン2台及びoutlook2003のパソコンでも試しましたが、同様でした。
      メールの数が多く、手入力ではとても捌けないため、是非お知恵をお借りできないでしょぅか。どうぞよろしくお願いします。

      コメント by 百た — 2011年12月18日 @ 10:54 PM | 返信

      • 閲覧ウィンドウ (プレビュー) はオフになっていますでしょうか?
        1つのメールが2行にわたって表示されるビューでは、表示される日時情報が一部だけになってしまいます。
        必ず閲覧ウィンドウをオフにしてください。

        コメント by outlooklab — 2011年12月22日 @ 12:56 PM

  123. 初めまして。いつも参考にさせていただいております。

    早速ですが、マクロの要望を投稿させていただきます。
    Outlook2007を使用です。

    メールの内容をエクセルのセルに一つずつコピーすることは可能でしょうか。
    メールの内容につきましては、ニュースの事象がいくつも上下に並んでいるものです。

    また、仕事リストをフラグの有りなしで分類した際、フラグなしの項目にフラグを付けたリストが分類されてしまいます。されないものもあり、混同しています。
    解決法をご存知でしょうか。

    コメント by キサラ — 2011年12月4日 @ 7:03 AM | 返信

    • メールの内容を Excel のセルにコピーするということですが、本文の1行を Excel の一つのセルに対応させるという意味でしょうか?
      それとも、フォルダーのアイテムの一覧のデータを Excel にエクスポートするという意味でしょうか?
      マクロとしては、Outlook のから必要なデータを取得し、Excel の Cells に設定するというだけであるため、可能とは思われますが、どのデータをどのようにコピーするかという詳細が分からないとマクロにできません。

      なお、仕事リストでフラグのありなしで分類した際、メールアイテムはフラグがありになりますが、仕事アイテムはフラグがなしになります。
      特にメールアイテムはフラグがないものはそもそも仕事リストに表示されないのですが、フラグありなしで分類したい理由はなんなのでしょうか?

      コメント by outlooklab — 2011年12月6日 @ 12:51 PM | 返信

  124. ツール→オプションの情報ってapplicationの中にありますか?

    メール折り返し設定、エンコード指定の情報ってとれないですか?

    コメント by ある — 2011年12月5日 @ 1:08 PM | 返信

    • 残念ながらこれらの情報は Outlook のオブジェクト モデルでは取得できません。
      レジストリからなら取得できると思われます。

      コメント by outlooklab — 2011年12月6日 @ 12:53 PM | 返信

      • レジストリの場所、キーとかご存知でしょうか?

        折り返しの状況は送信時には分からなく、受信してみないとどこで折り返されてるか分りません
        受信者からたまにメールが「がったがたやで~」とおしかりを受けることがありますので
        折り返し状況を送信前に確認するプレビューを作りたいと思っています
        これについて方法論のアドバイス等いただければ幸いです
        #132桁にして作成時に気を付ければいいんじゃね、と言われればそれまでですが、、

        コメント by ある — 2011年12月7日 @ 10:46 AM

      • 折り返しの設定は HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\MailSettings の PlainWrapLen になります。
        また、送信時のエンコードは HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\Options\MSHTML\International の Default_CodePageOut です。

        送信前にプレビューするということですが、ちょっと良い方法が思いつきません。
        むしろ送信前に下手に改行をしないほうが良いのではないかと思います。

        コメント by outlooklab — 2011年12月7日 @ 1:05 PM

      • テキストボックスの幅を改行幅で変化させてそこにbodyを表示させて擬似的な改行状態で対応しました
        テキストボックス以上の行数があったりするとスクロールがついたりしてテキストボックスの改行が変わったりするのでちょっとはまり掛けましたが、、
        まぁ小細工を施しながら一応当初の目的に近いものになりました
        ありがとうございました

        コメント by ある — 2011年12月26日 @ 11:51 AM

  125. フォルダにあるメール一つ一つに対して処理を行うため、下記のようなコードを組んでいるのですが、全てのメールの処理をする前にループを抜けてしまうようです。
    For Each objMail In ActiveExplorer.CurrentFolder.Items
       RewriteSender objMail.EntryID
    Next
    これの原因はわかりませんか?

    コメント by tomo39 — 2011年12月6日 @ 7:33 AM | 返信

    • たとえば、For Each 文の直前に On Error Resume Next を追加したら回避できないでしょうか?

      コメント by outlooklab — 2011年12月6日 @ 12:54 PM | 返信

  126. outlook2007
    新規メッセージ本文上の右クリックのイベントは捕れますか?

    #右クリックからクイックパーツギャラリーにアクセスしたい、、

    コメント by ある — 2011年12月13日 @ 5:08 PM | 返信

    • 残念ながら、メッセージの本文の右クリックのイベントに相当するものはないようです。

      コメント by outlooklab — 2011年12月22日 @ 12:41 PM | 返信

  127. outlook2007
    返信時(元のメールを引用返信の場合)の_NewInspectorで.bodyを見ると元のメールの本来の本文しか入ってきません
    _NewInspectorを抜けた後の.bodyには元のメールのTOとかSUBJECTがくっついた状態が.BODYになってます

    返信時にメールの先頭に特定文字列を挿入しようとしたんですがこれにより_NewInspectorでbody=文字列 & vbcrlf&bodyとすると
    抜けたあとのメッセージ本文がヘッダー?と本文に挟まれた格好になってしまいます、、

    これを回避する手段がありますか?

    コメント by ある — 2011年12月14日 @ 9:51 AM | 返信

    • MailItemを監視してReplyイベントてフラグを立ててなんとか回避できそうなところまではわかりましたが
      複数のメッセージを立ち上げているときにそれぞれを監視(メッセージのアクティブが変わるたびにそのアイテムをMailItemにセット)する方法が分かりません
      inspectorの_Activeがそうかとも思いましたがどうも違うようですし、、
      #一件ずつ開く場合は_NewInspectorでできそうですが最後に開いた奴しか監視できません、、
      #_Replyイベントは_NewInspectorより先に動いてしまうのでタイミングが捕れません、、
      #_Replyイベントは一度キャンセルすると再度走らない(開いたメールの内部になにかフラグでも立ってるのか、、)

      これらを回避する方法、、はないですか、、
      エクスプローラーから複数開かれてもそれぞれが監視できるようにアクティブなメッセージがいつでも処理できる
      返信等のキャンセルに影響しない

      、、

      コメント by ある — 2011年12月15日 @ 1:43 PM | 返信

      • 以下のような方法で対処可能と思われます。

        1. NewInspector で Inspector の Activate イベントをハンドルさせる。
        2. Activate イベントで本文に追記し、イベントを解除する。

        コメント by outlooklab — 2011年12月22日 @ 12:52 PM

      • なるほど、、勉強になります
        細かい作り込みはこれからですがデバッグ上の動きではメッセージごとの処理が可能になりました
        いつもご助言ありがとうございます

        コメント by ある — 2011年12月26日 @ 11:35 AM

  128. Outlook2010で、メッセージのインポートについて

    お世話になっております。

    【環境】
    OS:Windows XP sp3
    Outlookバージョン:2010

    業務でOutlookを使用しておりますが、アプリで作成したメッセージを、Outlookにインポートし、下書きフォルダに保存するにはどうすればよいのでしょうか。

    作成されるメッセージはunix mailbox形式のテキストファイルで、To: 、Cc: 、From: 、Reply-To: 、Subject: 、および、本文が記入されています。これらを、宛先、CC、差出人、返送先、件名、本文に入力して、下書きフォルダに保存したいのです。
    作成されるメッセージは1通~数10通の場合がありますが、1メッセージ/1ファイルです。添付ファイルはありません。また、メッセージファイルはExcelのマクロで作成しているので、書式は変更することが可能です。

    やはり、マクロで読み取らないと無理なのでしょうか。

    コメント by yachtman004 — 2011年12月14日 @ 11:11 AM | 返信

    • 自分でもいろいろ調べてみました。外部で作成したメッセージを簡単にインポートする方法は無さそうなので、結局、自分でマクロを作ってしまいました。

      上で、From:で差出人も指定できるように書きましたが、これでは差出人詐称になってしまいますね(笑)。
      上記、マクロには、もちろん差出人詐称(!?)機能は実装しませんでした。

      これからも、マクロ作成の参考にさせていただきます。ありがとうございました。

      コメント by yachtman004 — 2011年12月20日 @ 2:34 PM | 返信

      • お返事が遅くなりましてすみません。
        ご自分で解決されたのですね。

        コメント by outlooklab — 2011年12月22日 @ 1:01 PM

  129. 初めまして。

    早速ですが、マクロの要望を投稿させていただきます。

    outlook2007を使用しております。
    以前、”任意のアカウントで返信するマクロ”と”返信メッセージで表示名をアドレス帳のものに置き換えるマクロ”を公開されて
    おりましたが、これを合体させたマクロは、ありますでしょうか。
    任意のアカウントで返信メッセージの表示名をアドレス帳のものに置き換えたいのですが、
    御検討をお願いできませんでしょうか。

    宜しくお願い致します。

    コメント by masumac — 2011年12月22日 @ 10:17 PM | 返信

    • 二つのマクロをマージすればよいのでしょうか?
      検討します。

      コメント by outlooklab — 2011年12月27日 @ 1:02 PM | 返信

  130. お世話になります。130番の質問の件です。コメントありがとうございます。
    「表示」タブ→「閲覧ウィンドウ」で「オフ」としており、閲覧ウィンドウは使用しておりません。他に何か気をつける点があるでしょぅか?

    コメント by 百た — 2011年12月24日 @ 5:50 PM | 返信

  131. お世話になります。131番の質問の件です。コメントありがとうございます。
    「表示」タブの「閲覧ウィンドウ」にて「オフ」を選択しており、閲覧ウィンドウは使用しておりません。他に気をつける点はあるでしょうか?
    よろしくお願い致します。

    コメント by 百た — 2011年12月24日 @ 6:03 PM | 返信

  132. メッセージの検索に関して教えていただきたいことがあります。

    OS:Windows XP SP3
    Outlook2007(自宅)および、Outlook2010(会社)

    過去のメールを探すときキーワードを使って検索しますが、一回で目当てのメールが見つからない場合でも、一連のやり取りの中での関連するメールが見つかることがあります。しかし、前後のメールや、一連のメールの最初から続けて読みたくても、検索にヒットしなかったメールは読めません。
    こんなとき、検索結果の一覧で、選択しているメールのファイル/フォルダの場所に行ければ良いと思うのですが、そのような方法はありますでしょうか?

    コメント by yachtman004 — 2011年12月29日 @ 12:00 PM | 返信

    • 残念ながら標準の機能ではアイテムが含まれているフォルダーを開くということはできないようです。
      マクロを使えば可能と思われます。

      コメント by outlooklab — 2012年1月10日 @ 12:50 PM | 返信

      • 回答ありがとうございます。
        そうですか、やっぱりマクロを使わないと無理ですか。
        Outlookのオブジェクトモデルがよく理解できていないので、学習のヒントでもいただければ、ありがたいです。

        コメント by yachtman004 — 2012年1月13日 @ 9:56 AM

  133. お世話になります。コメントありがとうございます。先週追伸を書込んだのですが表示されていないので、確認したら前の方の129と130番に書かれておりました。失礼いたしました)
    「Outlook 2010 で送信日時や受信日時を含むメッセージの一覧をエクスポートする」際に時刻が出力できない件について、
    「表示」タブの「閲覧ウィンドウ」にて「オフ」を選択しており、閲覧ウィンドウは使用しておりません。他に気をつける点はあるでしょうか?
    よろしくお願い致します。

    コメント by 百た — 2011年12月29日 @ 5:48 PM | 返信

    • 返信が遅くなりましてすみません。
      メッセージ一覧を表示している際に、受信日時などは正しく表示されていますでしょうか?
      もし、一覧表示で既に時間などが表示されていないようであれば、以下の手順で表示形式を変更してみてください。
      1. メッセージ一覧の上部の表示形式を変えたいフィールド ([受信日時] など) を右クリックし、[表示フィールドの書式設定] をクリックします。
      2. [表示形式] のドロップダウンからエクスポートしたい形式を選択します。
      3. [OK] をクリックします。

      コメント by outlooklab — 2012年1月10日 @ 12:54 PM | 返信

  134. こんにちは。Outlook2010を使っております。メール検索漏れ対策をご存知でしたら教えてください。
    仕事の重要なメールが多いため、数年来のメールの多くを保存しています。結果、受信トレイ1GBに加えてオフラインpstファイル5つに各10GB弱で、合計50GB弱のアウトルックメールを使っています。SSDなので検索は十分高速に行えるのですが、何故か時折検索がうまく行かない時があります。存在することがわかっているメールが、Outlookのメール検索機能を利用して適切な検索ワードで探しても、検索できないという意味です。毎回エラーが起きるわけではなく、なぜか時折問題が生じます。
    対策をご存知でしたら、教えて頂けますでしょうか?
    もしもOutlook内のソフトでは無く、他社の検索ソフトなら便利というような事でも、もちろん有り難いです。Googleデスクトップでは問題無く検索できますが、Googleデスクトップは、検索条件の設定が少なすぎ、また検索結果のソートが分かりづらく、特定の検索で500メールが検索されてそれの中から目当てのメールを探す際などは結構不便だと感じています。
    宜しくお願いいたします。

    コメント by 桃源郷 — 2012年1月7日 @ 12:04 PM | 返信

    • Outlook 2010 の累積的な修正プログラムによって検索処理が改善される場合があります。
      最新の修正プログラムを適用してみてください。
      現時点での最新の Outlook 2010 の修正プログラムは http://support.microsoft.com/kb/2597061 からダウンロードできます。

      コメント by outlooklab — 2012年1月11日 @ 12:58 PM | 返信

  135. 返信が遅れまして大変申し訳ございません。
    お問い合わせいただいた件について確認しましたが、
    追加処理をしない場合はメニューは追加されませんでした。

    コメント by user_001 — 2012年1月7日 @ 6:33 PM | 返信

    • 追加処理をしない場合にメニューが追加されないとのことですが、何もしないのはメニューが既に存在する場合ですから、追加されなくても問題ないと思います。
      ロジックとしては、追加しようとしているメニューが既に登録済みであるかを確認し、登録済みでない場合だけ追加する、ということなのですが。

      コメント by outlooklab — 2012年1月12日 @ 12:44 PM | 返信

  136. BVA初心者です。
    早速ですがご教授願います。

    Outlook2003を使っているのですが、本文に特定の文面が含まれるメールを受信したら別のメアドに①そのメールを転送する、②特定のファイルと本文を送信する

    こういったアクションをするマクロは作成可能なのでしょうか?よろしくお願いします。

    コメント by IT初心者 — 2012年1月13日 @ 9:28 AM | 返信

    • メールを転送したり、特定のファイルと本文を送信したりということはマクロで可能ですが、単なる転送ならマクロを使わずルールだけで十分です。
      やりたいことは転送したメールに特定のファイルを添付するということなのでしょうか?
      それとも、受信したメールと特定のファイルを新たなメールに添付して送信するということでしょうか?

      コメント by outlooklab — 2012年1月13日 @ 12:29 PM | 返信

      • お返事ありがとうございます。
        仰るとおりで、ある文面を含むメールを受信したら、受信したメールと特定のファイルを新たなメールに添付して自動送信するという動きになります。

        コメント by IT初心者 — 2012年1月13日 @ 2:59 PM

  137. よく使うメール宛先が宛先リストの下の方にあって
    必ずスクロールすることになります(宛先リストの記載順が連絡先での順と違うのも理解できません)。

    指定した名前(メールアドレス)を上に持って来ることはできませんか。

    コメント by 柴田淨兒 — 2012年1月15日 @ 4:31 PM | 返信

  138. Outlook2007でマクロを利用して予定表の書き出しを行っています。処理に数秒から十数秒かかるので、マクロが実行中であることをユーザ(私)に通知するようにできないかと思っています。

    Excelだと
    Application.StatusBar = “実行中…”

    を使ってステータスバーにメッセージを表示できるのですが、Outlookにはステータスバー自体がありません。

    何かよい方法をご存じであれば、ご教示ください。

    コメント by 山谷 純 — 2012年1月16日 @ 9:12 PM | 返信

    • VBA ではフォームを作ることもできるので、そのフォームの Initialize イベントで実際の処理を実装し、マクロ自体は定義したフォームを表示するだけにする、という方法が考えられます。

      コメント by outlooklab — 2012年1月20日 @ 1:10 PM | 返信

  139. いつもお世話になっています。

    選択したメールの重要度をまとめて変更するマクロを作りましたが、思うような動作をしません。
    どこが悪いのかわかりません。原因がおわかりでしたら、ご教示いただけませんでしょうか。

    ’選択した複数のメールの重要度を、一括して「通常」に変更する
    Sub ImportanceNormal()
    Dim oMail As MailItem
    For Each oMail In Application.ActiveExplorer.Selection
    oMail.Importance = olImportanceNormal
    Next oMail
    End Sub

    症状:複数のメールを選択して上記マクロを実行しても、最初の1通のメールだけしか重要度が変更されません。しかも実行直後には変わらずに、選択状態を解除したときに、初めて、先頭の1通だけ変更されます。

    バージョン:Outlook 2007(会社の2010でも同じ症状でした)
    OS:Windows XP SP3

    コメント by yachtman004 — 2012年1月17日 @ 11:02 PM | 返信

    • こんにちは。私のOutlook2007でも同じようになりました。

      お示しのマクロのFor Each処理に「MsgBox oMail.SenderName」を入れると、ちゃんと選択されたメールの発信元がが順々に表示されますので、マクロのロジックは正しいのだと思います。

      手動で重要度を変更する場合、変更したいメールで右クリックのコンテキストメニューからメールのプロパティを開き、重要度を変更できます。ところが、複数メールを選択して右クリックすると、コンテキストメニューにプロパティが出てきません。これからの推測ですが、Outlook2007では、複数メールの重要度をまとめて変更することはできない仕様なのではないでしょうか。

      コメント by 山谷 純 — 2012年1月18日 @ 10:04 PM | 返信

    • oMail.Importance = olImportanceNormal の後に、oMail.Save が必要です。
      プロパティを設定しても、Save メソッドを実行するまでは保存されません。
      選択解除を行ったときに、最初の 1 通だけは自動的に保存されるのでしょう。

      コメント by outlooklab — 2012年1月18日 @ 10:37 PM | 返信

      • 早速のご回答、ありがとうございます。
        oMail.Saveメソッド実行するようにしたらできました。
        ありがとうございました。今後とも、よろしくお願いします。

        コメント by yachtman004 — 2012年1月18日 @ 10:52 PM

      • 半端な知識で間違った書き込みをしてしまいました。yachtman004様、大変失礼しました。ラボ主様、ありがとうございました。

        コメント by 山谷 純 — 2012年1月18日 @ 10:53 PM

  140. outlook2007 SP2 MSO /Windows7Pro

    いつも参考にさせていただきありがとうございます。
    質問させていただきたいのですが背景を説明致します。

    まず、outlookの連絡先グループ及びアドレスを綺麗に整理・編集しました。これらの連絡先グループを仮にAと呼びます。

    そして、AppleのiCloudを使ってiPhoneとoutlookの連絡先を同期させて見ました。すると予想に反し、outlookの連絡先側にiPhoneのアドレスが追加で入ってしまったため、outlook連絡先を編集、削除etcしていたところ色々不思議な現象がoutlookの連絡先関連に出て困っております。

    そこでoutlookの連絡先をリセットしようと考え、PC上に保存してあるXXX.pstファイルを用いて元に戻したのですがうまくいきません。
    XXX.pstファイルを読み込むと、連絡先リストに、「個人用フォルダ内のYYYYYYY」と成って追加で入ってしまいます(Bと呼びます)。

    ところが、新規メッセージの作成で、宛先BOXから「連絡先」(Cと呼びます)のリストを見ると、現在の連絡先(B)にあるグループやアドレスでは無く、iCloudとの同期前の、最も大事な連絡先グループ(A)が表示され、そのアドレス選択も可能なのです。

    そこで質問です。
    ① Cのデータはどこかにファイルとして残っているはずなですがどこにどんな状態で有るのでしょうか?
    ② CのデータをBに戻すことはできますか?
    ③ XXX.pstファイルを読み込んだとき、Bでは無くAのように元通りにする方法は有るのでしょうか?

    よろしくお願い致します。

    コメント by マッチャン — 2012年1月20日 @ 5:01 PM | 返信

    • Outlook で PST を開くと、それは別のツリーとして読み込まれます。
      CTRL キーを押しながら 6 を押すとツリーが表示されるので、どういう状態かはわかると思います。
      そして、連絡先フォルダーを右クリックし、[プロパティ] をクリックして [Outlook アドレス帳] タブの [電子メールのアドレス帳にこのフォルダーを表示する] をオンにすると、アドレス帳を表示した時に上の方に表示されているドロップダウンで追加された連絡先フォルダーが選択できるようになるのです。

      これを踏まえて質問に回答すると以下のようになります。
      1. C のデータは A をアドレス帳に表示したものになります。
      2. これは、B の内容を C として表示したい、ということでしょうか? その場合は、上記の通り [電子メールのアドレス帳にこのフォルダーを表示する] をオンにするとアドレス帳に表示することはできます。
      ただし、ドロップダウンには「連絡先」が二つ表示される状態となります。
      3. PST の連絡先を別ツリーではなく既存の連絡先に戻したい場合は、[ファイル]-[インポートとエクスポート] で [他のプログラムまたはファイルからのインポート]-[個人用フォルダ ファイル (pst)] でインポートします。

      コメント by outlooklab — 2012年1月23日 @ 1:03 PM | 返信

  141. フィールドのアクセス方法について教えてください。
    Outlook2007の受信トレイに既にCategoriesというフィールドがあると思いますが日本語でカテゴリというフィールドを新規作成しました。VBAから選択されているアイテムのカテゴリフィールドに書き込みを行いたいのですがどのように行えばよろしいのでしょうか。
    宜しくお願いします。

    コメント by tom — 2012年1月23日 @ 1:35 PM | 返信

    • アイテムが objItem とすると、以下のようなコードで値を設定できます。

      objItem.UserProperties(“カテゴリ”).Value = “設定する値”

      コメント by outlooklab — 2012年1月26日 @ 12:50 PM | 返信

      • 早速のご回答、ありがとうございます。

        試しにApplication.ActiveExplorer.Selection.Itemが返すオブジェクトで
        MailItemオブジェクトであるものを取得し
        UserPropertiesプロパティから
        作成したカテゴリフィールドを探そうとしたのですが見つかりませんでした。
        (UserProperties.Countは0)

        そもそもOutlookのオブジェクト構造を理解していないので
        objItemの取得が悪いのではないかと思います。

        Outlookで既に受信トレイが選択されている状態としたとき
        objItem.UserProperties(“カテゴリ”).Value = “設定する値”
        のobjItemを取得するにはどのようにしたらよいのでしょうか。

        コメント by tom — 2012年1月28日 @ 1:00 PM

      • プロパティはフォルダに対して追加されたようですね。
        その場合、個々のアイテムにはプロパティが存在しないので、以下のようにします。

        Set objProp = objItem.UserProperties.Add(“カテゴリ”,olText) ‘ キーワード型なら olText ではなく olKeywords
        objProp.Value = “設定する値”

        コメント by outlooklab — 2012年1月31日 @ 12:52 PM

  142. いつも大変参考にさせて頂いております。

    大変、お忙しい所恐縮ではありますが、お力添えをお願い致したく
    投稿させて頂きました。

    会社にて以下仕様のPCに刷新を行いました。

    OS:Windows7 Pro
    バージョン:Outlook 2010

    その際、「送受信グループ」内の「次の時間ごとに自動的に送受信を実行する」
    の時間をデフォルト(30分)⇒(10分)に変更したのですが、
    急遽、時間を元に戻して欲しいとの要望があり、途方に暮れております。
    対象端末が1000台程あり、エンドユーザーに任せるのではなく、AD等のログインスクリプト
    を使用して何とかならないのか?と言われています。

    当方なりに色々と調べてはみたのですが、送受信グループ自体
    Outlookプロファイル毎に設定されているみたいでなかなか手が出しづらく
    困惑しております。

    何か手立ては御座いますでしょうか?
    何卒、ご教示の程、宜しくお願い申し上げます。

    コメント by こばこば — 2012年1月25日 @ 5:24 PM | 返信

    • 設定を初期状態に戻したいということであれば、%appdata%\Microsoft\Outlook にある拡張子が SRS のファイルを削除すれば送受信の設定が初期状態に戻ります。

      コメント by outlooklab — 2012年1月31日 @ 12:55 PM | 返信

      • ご返信誠に有難う御座います。

        取り敢えず、時間設定は初期状態に戻りましたので
        ほっと致しました。ありがとうございます。

        動きとしては、送受信グループの再作成を行ったと解釈すれば
        宜しいのでしょうか?
        その場合、IMAPキャッシュダウンロード方法(ヘッダーのみ・全ダウンロード)
        は消えてしまいますね。

        取り敢えず、適用には慎重になり、リスクも考えた上で
        着手しようと思います。

        ありがとうございました

        コメント by こばこば — 2012年1月31日 @ 1:31 PM

      • そうですね。送受信設定に含まれるものは初期化されますので、IMAP のダウンロード方法も削除されることになります。

        コメント by outlooklab — 2012年2月6日 @ 12:34 PM

  143. はじめまして。
    いつも勉強をさせていただいております。

    Outlookのフォルダ一覧に表示されているメールボックス名の変更について教えてください。
       OS:WinXP  Outlook:outlook2007

    Outlook画面のフォルダ一覧には〔メールボックス-名前〕が表示されていますが
    この参照先になっているExchangeサーバー側を変更してもOutlook側が変更されません。
    (端末の再ログオン,Outlook再起動を実施済み)

    要は結婚などで氏名が変更になった場合、Exchange側を変更したらユーザー側である
    Outlookは何もしなくてもメールボックス名が変更されるようにしたいと思っています。
    プロファイルを再作成すれば変更されるのは実際にやってみて確認をしましたが、
    実際にはユーザーに再作成をさせることは出来ません。

    どこか設定がおかしいのでしょうか? それとも無理なことなのでしょうか。

    よろしくお願いいたします。

    コメント by ゴジラくん — 2012年1月27日 @ 2:56 PM | 返信

    • 残念ながら、Exchange 側の表示名などを変更しても、自動で Outlook のプロファイルに反映されることはありません。
      Outlook の機能ではメールボックスの表示名の変更の反映はプロファイルの再作成が必要です。
      Extended MAPI でプログラムを作成すればプロファイルを再作成せずに変更が可能ですが、ちょっと敷居が高いかもしれません。

      コメント by outlooklab — 2012年1月31日 @ 12:46 PM | 返信

  144.  こんにちは、はじめまして。
    いつも活用させて頂いてます。

     教えてください。
    受信メールの一覧表示で各メールに メモ的なモノを書き加えたいのですが、可能でしょうか?
    フィールドの表示が   差出人 件名 ”メモ” 受信日時    の様な一覧表示で、
    “メモ” の部分に 直接書き込めれば ベストです。

     フィールドの選択から 新規フィールドで “メモ” (テキスト)を作ってみましたが、
    編集する方法がわかりません。

    Outlook2007 です。

    以上、宜しくお願いいたします。

    コメント by たなか — 2012年1月27日 @ 5:12 PM | 返信

  145. はじめまして。

    検索からこちら↓にたどり着きました。

    https://outlooklab.wordpress.com/2008/01/19/owa-%E3%81%AE%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%A7%E5%8F%82%E7%85%A7%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/

    私も同様にOWAのメールメッセージをローカルに保存したいと思っています。
    ところがOSがWindows7のため、Outlook Expressが利用できません。

    Windwos Liveメールにて同様の設定を試みましたが、サーバの種類に「HTTP」の選択肢がないところで、行き詰ってしまいました。

    ちなみにOutlookは所持していません。
    またOSのエディションがHomeのため、XP Modeも利用出来ません。

    このような環境でOWAのメッセージをローカルに保存する方法はありますでしょうか。
    よろしくお願いいたします。

    コメント by かー — 2012年2月3日 @ 3:32 AM | 返信

  146. はじめまして。
    社内のメール環境の整備のため、
    http://www.tp1.jp/mem/memb02_settool.html
    のような、自動でoutlookやwindowsメールの
    メールアカウント設定ができるツールを作りたいと
    思っているのですが、どう作れば良いのか見当も
    つきません。作り方またはここら辺の情報を提供している
    サイトなどの情報がありましたら、ご教授ください。
    vb,vc++など言語は拘りません。

    コメント by coogon — 2012年2月8日 @ 6:14 PM | 返信

    • Windows メールに関しては http://msdn.microsoft.com/en-us/library/ms715237(v=VS.85).aspx に情報があります。
      一方、Outlook に関しては自動作成のための情報がありません。おそらく VC++ で MAPI などを使用して作成することになるとは思いますが、詳細が公開されていないため、プログラムによるアカウント設定は困難でしょう。
      ただ、Outlook は PRF というファイルを用いてプロファイルを生成することが可能ですので、プログラムで PRF ファイルを生成し、それを Outlook に読み込ませるという方法で自動設定は可能かもしれません。
      PRF ファイルについては http://technet.microsoft.com/ja-jp/library/cc179062.aspx を参照してください。

      コメント by outlooklab — 2012年2月15日 @ 12:57 PM | 返信

  147. カジモどんと申します、初めて参加させていただきます。よろしくお願いいたします。
    Windous7、Outlook2007を使用しています。
    お客様の来店予約管理をしようと、予定表ビューをカスタマイズしているのですが、行き詰ってしまいました。
    TODOバーの仕事リスト1件に顧客1人を割り当て、連絡先フォルダで管理している顧客情報のうち、顧客ID、顧客氏名、ふりがなの3項目を自動的に表示させたいのですが、方法はありますでしょうか?顧客数は現在7,000名程です。
    仕事リストから任意の顧客のリストを予定表に直接ドラッグしようという魂胆です。
    みなさんのお知恵をお借りしたくよろしくお願いいたします。

    コメント by カジモどん — 2012年2月10日 @ 8:18 PM | 返信

    • Outlook のビューだけでご要望を実現することは困難と思われます。
      最終的に顧客のリストを予定表に直接ドラッグするというのは、具体的にはどういう結果を意図してますでしょうか?
      もし、仕事リストのアイテムに関連付けられている連絡先アイテムの情報を本文に追記して新規に予定を作成するということであれば、そのようなマクロを作れば実現可能かもしれません。

      コメント by outlooklab — 2012年2月15日 @ 12:59 PM | 返信

      • ご回答誠にありがとうございます。まさにoutlooklabさんのおっしゃるような動きをイメージしておりましたが、その後進展がありまして何とか解決の道筋が見えてきたところです。また少し自分で頑張ってみます。御親切に感謝申し上げます。今後ともよろしくお願いいたします。

        コメント by カジモどん — 2012年2月16日 @ 11:25 AM

  148. いつもお世話になります。

    Outlook 2007でApplication_ItemSend()を利用してマクロを作成しているのですが、
    どういうわけかメール送信ボタンを押してもごく稀にフックされないことがあるようです。

    Salesforce for OutlookというCOMアドインを入れてからのような気もしますが、
    これが有効でもフックされる場合がほとんどで、フックされないのはごく稀です。
    どういう場合にフックされないのかがわからず困っています。

    何か思い当たる原因は無いでしょうか?

    コメント by たろう — 2012年2月23日 @ 4:33 PM | 返信

    • Saleforce for Outlookというアドインを入れてからのような気がするとのことですが、それをアンインストールしたら現象は発生しないのでしょうか?
      もし、発生しなくなるのだとしたら、そのアドインも ItemSend イベントを使用しており、その処理に何らかの問題があるためマクロが実行されないという可能性があります。
      その場合はアドインの開発元にご相談ください。

      コメント by outlooklab — 2012年2月24日 @ 12:37 PM | 返信

      • コメントありがとうございます。

        Salesforce for Outlookに関してはおっしゃる通りだと思います。開発元へのルートは確認していますが、サポートが受けられるかどうかは判らない状況です。

        その後、Application_ItemSend()にフックされない現象が発生しているPCでは、ツール→セキュリティセンター→アドインで、”Microsoft VBA for Outlookアドイン” が「アクティブでないアプリケーション アドイン」に落ちている事がわかりました。

        Outlook 2007を再起動すると、”Microsoft VBA for Outlookアドイン” が「アクティブなアプリケーション アドイン」側に復活し、Application_ItemSend()もフックされるようになります。

        以下の様なMSDNのページも見つけましたが、問題の解決に繋がる情報かどうかよくわかりません。
        http://msdn.microsoft.com/ja-jp/library/ms268871(v=vs.80).aspx

        原因はともかく、”Microsoft VBA for Outlookアドイン” を「アクティブなアプリケーション アドイン」側に復活させる方法でも構いませんので、何か対処方法等もし心当たりがございましたらご教授頂けると幸いです。

        よろしくお願い致します。

        コメント by たろう — 2012年3月1日 @ 1:53 PM

      • 「Microsoft VBA for Outlookアドイン」というのは VBA マクロを実行するためのアドインであり、これがアクティブでなくなると Application_ItemSend のような VBA で実行されるイベントが実行されなくなります。
        再起動すると復活するということですので、一時的に何かがマクロのアドインを無効にしてしまっていると思われますが、何がそれをやっているのかがわからない限り回避させるのは難しいと思われます。
        VBA のアドイン以外のアドインを止めて現象が起こらなければそのアドインが原因と思われますので、それを外すぐらいしかできることはないでしょう。

        コメント by outlooklab — 2012年3月2日 @ 1:06 PM

  149. いつもお世話になっております。
    Exchange Server2007 Outlook2010を社内で使用しております。

    予定表の共有の有無を社内ユーザー数(約1万人)の調査を毎月しております。

    Outlookのクライアントから予定が共有化されているか、一人づつ検索するという方法で
    調査をしております。

    調査方法が非常にアナログで、単純に共有されてるかどうかを調査するだけなので、マクロで自動化できないかと考えております。

    何卒、ご教示の程、宜しくお願い申し上げます。

    コメント by さかい — 2012年2月24日 @ 12:02 PM | 返信

  150. お世話になります。
    「2007outlook予定表印刷アシスタント」について教えてください。
    windows7、outlook2010を使用しています。
    予定表を1か月ごとに印刷をし、終了予定を管理しています。
    仕事で使っていますので、月曜日を週の最初とした場合、月によっては2か月にまたがって印刷されてきてしまいます。
    解決方法の一つとして、マイクソフトのサポート窓口で「2007outlook予定表印刷アシスタント」を教えていただきダウンロードいたしました。
    希望に近い形で印刷できそうなので、使いたいのですが、印刷可能のどのプリンターを指定しても「2007microsoft office componentは応答していません」となります。
    何か設定が必要なのか、考えられる原因がおわかりであれば教えていただえれば助かります。
    よろしくお願いいたします。

    コメント by 土居まゆみ — 2012年3月13日 @ 2:23 PM | 返信

  151. はじめまして。Windows7でOutlook2007を会社で使っております。
    数名の間で以下の症状が確認され、解決策がないかと困っております。もしご存知でしたら教えて頂けますと幸甚です。

    ・メール本文を書き終えて送信すると、書き途中の時点の内容が送られてしまう。
    (送信済みメールボックスを見ても、書いたはずの終盤の文章や編集結果が反映されていない。)

    →素人の推測では、自動保存が行われた時点の内容に、バグ(?)で戻ってしまって、メールが送られているのかも、と思います。
    自動保存の間隔は1分です。たまに起こるので、発生条件が分かりません。

    以上となります。どうぞ宜しくお願い致します。

    コメント by 宮元 — 2012年3月14日 @ 7:41 PM | 返信

    • http://support.microsoft.com/kb/973404 に記載されている以下の不具合ではないかと思います。

      ・次のシナリオを検討してください。
      ・新しい電子メール メッセージを作成および保存するのには、 下書き フォルダーです。
      ・メッセージ本文に新しい内容を追加し、メッセージを送信します。
      このシナリオでは、メッセージで、 送信済みアイテム フォルダーまたは受信者の [受信トレイ] フォルダーで新しい内容を含んでいません。

      この KB の修正プログラムを適用するか、Office 2007 の SP3 を適用してみてください。

      コメント by outlooklab — 2012年3月15日 @ 12:12 PM | 返信

  152. はじめまして。このWEBサイトにはかなりお世話になっています。

    マクロの要望です。
    「返信や転送時の引用文前に挿入されるヘッダー情報を変更したい。」

    検索すると同様の質問はあるのですが解決策は見つかりませんでした。
    私は諸事情でThunderbirdから乗り換えたのですが、どうもこの分厚いヘッダー部が嫌なのです。
    そこで、Thunderbirdライクに

    「(yyyy/mm/dd hh:mm), %name% wrote:」

    と書き換えるか、もしくは一部だけ削って

    「—–Original Message—–
    From: %name% [mailto:hoge@fugafuga.com] 」

    の様にするマクロは可能でしょうか。
    当方の環境はOutlook2010+Win7、Outlook2007+WinXPです。
    もし作って頂ければ多少は自分でアレンジすることも考えています。
    (まだマクロのさわり(しかもExcelの)しか分からないもので、、、)

    以上宜しくお願い致します。

    コメント by azjun — 2012年3月14日 @ 10:43 PM | 返信

    • マクロでできるか検討してみます。

      コメント by outlooklab — 2012年3月15日 @ 12:13 PM | 返信

      • ありがとうございます!
        早速試してみましたが、返信時だけ元メッセージが引用されていません。転送時は引用されています。
        また、メッセージウィンドウからではなく(メッセージを開かずに)受信トレイウィンドウから直接実行したり、アドオンの様に「返信・転送したら自動で機能が実行される」(従来と同じ作業で機能を実現する)というような事は無理でしょうか。マクロだと難しそうですが。
        とりあえずはショートカットを割り当てて使ってみます。これでも希望通りの動きになりそうです。

        コメント by azjun — 2012年3月19日 @ 2:28 PM

      • 受信トレイから直接実行するには、ActiveInspector.CurrentItem を ActiveExplorer.Selection(1) に置き換えます。
        なお、返信・転送時に自動で行うとなると、ちょっとマクロでの実装は複雑になりますので、ショートカットの割り当てでお願いいたします。

        コメント by outlooklab — 2012年3月23日 @ 1:04 PM

      • マクロを見てみましたが、返信時だけ元メッセージが引用されない原因が分かりません。
        根本的にどこかの知識が不足しています。すいません。
        更に、返信時は「> (yyyy/mm/dd hh:mm), %name% wrote:」と先頭に引用符号(>)があるのですが、
        転送時は先頭に引用符号が付きません。元メッセージ全てが引用符号の無い文となっています。
        (返信時は元メッセージが無いので返信時の元メッセージに引用符号が付くかは分かりません。)

        引用符号の設定を反映させる事は難しいでしょうか。
        う~ん、根本的にやり方を考え直した方がいいんでしょうかねぇ。

        コメント by azjun — 2012年3月22日 @ 4:42 PM

      • 失礼しました。
        インデント記号をつけて返信や転送する場合を考慮していなかったので、考慮するようにマクロを変更しました。

        コメント by outlooklab — 2012年3月23日 @ 1:02 PM

  153. お世話になります。
    ひとつ教えてください。Outlook2003を使用しております。

    メールを転送する際に、元のメッセージを添付するときと、
    元のメッセージを残して送信するときとあります。
    その場合、「オプション」→「メールオプション」→「返信/転送時のスタイル」で
    切り替えを実施しております。
    マクロで実施することは、可能でしょうか。

    コメント by nobuaki — 2012年3月20日 @ 12:54 PM | 返信

    • マクロで設定を変更することはできませんが、添付して転送の処理をマクロで実装することは可能です。
      サンプルを作って後程公開します。

      コメント by outlooklab — 2012年3月23日 @ 1:03 PM | 返信

  154. 質問です。Outlook 2003で毎日8:00に当日のスケジュールが印刷されるよう設定するマクロをどなたか教えていただけないでしょうか。

    コメント by Mai — 2012年3月26日 @ 8:21 PM | 返信

    • Outlook には指定時刻にマクロを実行させる機能はないため、Windows のタスクで実行する必要があります。
      また、予定表を印刷するという機能もマクロにはないため、当日のスケジュールを HTML ページなどで作成し、印刷するという処理が必要となります。

      コメント by outlooklab — 2012年3月28日 @ 12:42 PM | 返信

  155. お世話になります。

    初心者です。
    Outlook 2003を使っております。
    職場でみんなが代表メールを使って業務をしており、
    今回、社員全員の送信メールを全員が閲覧、保管できるように下記のようなスクリプトを使うことになりました。

    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim objMe As Recipient
    Set objMe = Item.Recipients.Add(“abcd@abcd.co.jp”)
    objMe.Type = olBCC
    objMe.Resolve
    Set objMe = Nothing
    End Sub

    BCCには代表メールが挿入されています。
    これですべての送信メールを全員が確認できるようになりましたが、
    社長や部長、経理担当だけはOutlookに別のアカウントを使って
    このアカウントのメールだけはBCCに挿入されないようにしなければならない状況です。
    何卒、ご教示の程、宜しくお願い申し上げます。

    コメント by 匿名 — 2012年4月2日 @ 11:54 AM | 返信

    • Outlook 2003 では送信に使用されたアカウントを識別する方法はありません。
      そのため、特定のアカウントを使った、という条件でマクロの動作を変えることができないということになります。
      代替案として、メールの秘密度により BCC の付与を制御するというのはどうでしょうか?
      メールの作成時にツールバーのオプションで秘密度が選択できます。ここで標準以外を選択すると、Item の Sensitivity プロパティが 0 以外になりますので、これを基準にして BCC を追加するかどうかを判断するというものです。

      コメント by outlooklab — 2012年4月3日 @ 12:48 PM | 返信

  156. エクセルからVBAでOUTLOOK2007の予定表へ、予定アイテムを登録しようとしています。
    現在のところ
    Set myFolder = myNameSpace.GetDefaultFolder(9) ‘起動時フォルダーで、指定 カレンダー指定
    で、OUTLOOKデフォルトの予定表への登録ができています。

    しかし、OUTLOOKは複数の予定表を作れますので、デフォルトの予定表ではなく、自分で後から作った予定表に予定アイテムを登録したいと考えています。
    その場合、myNameSpace.GetFolder(フォルダID)で取得できると思っているのですが、このID自体の取得ができていません。

    複数ある予定表のうち、特定の予定表への登録をする方法をご存知であればご教授いただけないでしょうか?

    なお、目的としては、OUTLOOK内に「iCloud内の予定表」という予定表があり、これがiCloudによりiPADやiPhoneへ自動で連携されているので、ここへ予定を追加したいということになります。現状では、iCloud内の予定表ではなく、デフォルトの予定表への登録しかできていません。

    何卒、ご教示のほどお願いします!

    コメント by rvp — 2012年4月2日 @ 1:08 PM | 返信

    • iCloudの予定表はフォルダーの一覧で表示した際にツリーのどこに追加されるのでしょうか?
      例えば、フォルダーの一覧で “iCould” があり、その下に “予定表” として iCloud の予定表があるなら、以下のようにして取得可能と思われます。

      Set myFolder = myNameSpace.Folders(“iCloud”).Folders(“予定表”)

      コメント by outlooklab — 2012年4月3日 @ 12:54 PM | 返信

  157. 早速のご教示ありがとうございました。

    以下のコードでトライしまして、MsgBoxでiScheduleと返されますので、少なくともフォルダは取得していることが確認できました。
    (すみません、OUTLOOKのデフォルト予定表と紛らわしいので、iCloud側の予定表をiScheduleとしました。

    Set myFolder = myNameSpace.Folders(“iCloud”).Folders(“iSchedule”)
    MsgBox.name

    しかしながら、以下の通り進めているのですが、どういうわけかデフォルトの予定表にアイテムが書きこまれてしまいます。

    ‘outlook 起動
    Set oApp = CreateObject(“Outlook.Application”)
    Set myNameSpace = oApp.GetNamespace(“MAPI”)
    Set myFolder = myNameSpace.Folders(“iCloud”).Folders(“iSchedule”)

    ‘アイテムの作成
    Set objITEM = oApp.CreateItem(1) ‘予定表作成画面を指定
    objITEM.display ‘編集画面を表示

    ‘アイテムを作成
    objITEM.Subject = mySubject ‘件名
    objITEM.body = myBody ‘本文
    objITEM.Start = myDate

    ’保存処理
    objITEM.Save
    objITEM.Close 0

    myFolder の取得まではいけているようなのですが、subjectやbodyなどをmyFolder に結びつけるところができていないように推測しています。
    (Saveのところで、myFolderを指定しなければいけないのかもしれないとトライしていますが、今のところ上手く行ってはおりません。)

    お忙しいところ申し訳ないのですが、なにかご教示いただけるところはありますでしょうか?
    どうぞ、よろしくお願いします。

    コメント by rvp — 2012年4月5日 @ 10:24 AM | 返信

    • 取得したフォルダーにアイテムを追加する場合は、以下のようにします。

      Set objITEM = myFolder.Items.Add()

      あるいは、アイテムを作成し、保存した後に、以下のようにフォルダーへ移動するという方法もあります。

      objITEM.Move myFolder

      コメント by outlooklab — 2012年4月5日 @ 8:29 PM | 返信

  158. はじめまして、お世話になります。

    ご教示ください。
    こちらで公開されている「仕事と予定の重複アイテムを削除するマクロ 」は当方が探していたものと
    一致し感激しました。
    是非、参考にさせて頂きたいと思い、とりあえず全文をコピペして実行してみたところ・・・。

    If colItems(i).Body = colItems(j).Body And _
    colItems(i).Start = colItems(j).Start And _
      colItems(i).End = colItems(j).End Then

    配列のインデックスが範囲内にありません。と出ます。
    対策をお教えいただけないでしょうか?

    コメント by うーちょ — 2012年4月9日 @ 8:02 PM | 返信

    • アイテムを削除する際には For を最後から実行しなければならないことを失念していました。
      修正しましたのでご確認ください。

      コメント by outlooklab — 2012年4月14日 @ 4:14 PM | 返信

      • 確認しました。
        ありがとうございました。

        コメント by うーちょ — 2012年4月15日 @ 7:32 AM

      • 申し訳ありませんが、もう少しお付き合いください。

        本日確認時には問題なかったのですが、重複する予定が「3件」以上ある場合は、やはり
        「配列のインデックスが範囲内にありません。」と出るようです。
        どうしても自力で解決できません。
        引き続きよろしくお願いいたします。

        コメント by うーちょ — 2012年4月15日 @ 10:32 PM

  159. はじめまして。次のマクロ作成について教えてください。
    Outlook2010を利用しています。

    仕分けルールの実行をマクロ処理で行いたいと思っています。
    以下の手順をマクロ化することは可能でしょうか。
    (手順は仕分けルールの実行ダイアログ内です)

    1.実行する仕分けルールの選択 : すべて選択
    2.実行するフォルダー        :受信トレイ
    3.メッセージの種類         :全てのメッセージ
    4.今すぐ実行

    2と3はソース内で変更できるようにしたいです。

    ご教示のほどお願いします。

    コメント by てし — 2012年4月13日 @ 12:10 PM | 返信

  160. はじめまして。
    Outlook2010で分割メールを結合するマクロ「MergeMessages」で
    容量の大きなメールを結合すると
    「myTemp.Attachments.Add strFileName, olByValue, 99, “結合されたメッセージ”」
    の行でエラー(number:-2147467259)になってしまいますが
    C:\Users\****\AppData\Local\Temp\結合されたメッセージ.eml
    には結合されたものが格納されており
    添付ファイルも取り出すことができます。
    どうにかして
    C:\Users\****\AppData\Local\Temp\結合されたメッセージ.eml
    をエクスプローラーからダブルクリックして開くように
    開きたいのですが
    これをマクロで行うことは可能でしょうか?

    コメント by emlを開きたい — 2012年4月18日 @ 2:52 PM | 返信

  161. はじめまして。初心者なのでお手数ですが教えください。OUTLOOK2007のかな文字入力の仕方です。よろしくお願いいたします。

    コメント by qp — 2012年4月21日 @ 12:21 AM | 返信

  162. 初めまして、宜しくお願いいたします
    outlookのファイルが二つあります。(outlook)と(outlookデータファイル) このうちの後者を削除したいのですが、どなたか方法を教えて下さい。

    コメント by 小山 正男 — 2012年5月2日 @ 6:36 PM | 返信

    • 削除したいというのはプロファイルから削除したいのでしょうか? それともファイル自体を削除したいのでしょうか?
      また、Outlook のバージョンはいくつでしょうか?

      コメント by outlooklab — 2012年5月8日 @ 12:53 PM | 返信

  163. 仕事で、係の予定を共有する際に、一覧性を確保したいので、エクセルで予定表を作っています。
    ところが、それでは、出席予定者にいちいち同じ内容をOutlookで打ち込み、送付することが必要になって冗長です。
    よって、エクセルから、会議開催日時、場所や出席予定者を呼び込みその行の内容から、自動で会議の出席依頼を送付することはできないのでしょうか?

    エクセル及びアウトルックは何れも2010です。
    なお、エクセルの表は以下のようなものです。

    ◯エクセルの表

    セル番地  A B C D E F G H
    1 出席者1  出席者2  出席者3

    2      日             開始時    終了時    会議内容            場所     上田     山口     広池

    3   2012/5/10       13:00   15:00    効率化打ち合わせ     山田会館    ◯      ◯      ◯ 
     
    4   2012/5/11        9:30   11:15    工程会議            所内       ◯              ◯

    (エクセルの表について)
    (1) 1及び2行目がタイトル

    (2) 3行目からが、会議の詳細です。(A3セルが「2012/5/10」、B3セルが「13:00」のつもり)
      ※時間は多分、半角でないとダメと思いますが、時(13)と分(00)を別々の列にする必要があるかどうかもわかりません。

    (3) 出席者メンバーは係員なので、3名固定ですが、そのうち、その日の会議出席予定者については◯を打ってます。
      例えば、5月10日の会議では、3名全員が出席、5月11日は上田と広池が出席で山口が欠席です。

    (4)  ここで、例えば3行目にカーソルがあった場合にマクロを起動させると、アウトルックが立ち上がり、3行目の予定、つまり5月10日の予定が
       出席者に自動的に送信されるというマクロです。

    (5)  F2、G2、H2には名前といっても、メールアドレスのエイリアスをいれることとしてます。

    ※ 
    会議の日時などについては、カーソルのある行から呼び込み、
    送信先は 会議開催日のF列~H列が空白セルでないときには、送信者をF2~H2から、呼び込み、空白の場合はブランクとするということを
    やるんだということはわかっても、

    メールの送信するマクロは発見しましたが、会議の出席依頼をするマクロについては
    ネットを調べましたが、見つかりませんでした。

    アウトルックのマクロがほぼ、全くわからない状態
    例えば、会議出席アイテムの番号すらわかりません。
    (olAppointmentItem 1は予定ということなのですが、会議出席依頼も1で良い?)
    こういった状況なのでどうしたら良いか全くわかりません。

    申し訳ないですがよろしくお願いします。

       

    コメント by 匿名 — 2012年5月13日 @ 9:52 PM | 返信

  164. お世話になります。VBA初心者の者です。
    社内で使用しているOutlook2003で、受信した時に社内のLDAPサーバーを参照して、差出人をLDAPの表示名に振り替えるマクロを探しています。
    「メッセージの差出人を連絡先の表示名に置き換え、さらに連絡先ごとのフォルダに振り分けるマクロ」
    「Outlook 2003 で受信者の詳細な情報をグローバル アドレス帳から取得するマクロ 」
    あたりを組み合わせればできるかと試したのですが、うまく動きません。
    サンプルとなるマクロを教えていただきたくお願いいたします。
    環境
    クライアントはoutlook2003
    LDAPは、アドレス帳にて表示可能(連絡先には取り込んでいない)
    LDAPは社内にあり、ADにて構成されている。
    よろしくお願いいたします。

    コメント by こば — 2012年5月18日 @ 5:06 PM | 返信

  165. 初めまして、よろしくお願いいたします。

    Outlook2003+Exchangeの環境で使用しています。

    メール受信時にメールヘッダを参照できないかという相談です。

    先日、差出人を偽装したメールが発見されたとかで、
    「怪しいと思われるメールはメールヘッダで送信元サーバなどを確認するように」
    という指示が出ました。

    そもそも、差出人が偽装されているので、なにをもって怪しいとするのか不明です。
    とはいえ、受信メール全てのメールヘッダを確認するのも現実的ではありません。

    そこで、メールを受信したらメールヘッダのReceived: fromで始まる行を本文に付加
    できないかと考えました。

    以下のような処理をするVBAをメール受信時に実行させることは可能でしょうか?
     ①受信したメールのメールヘッダを取得する
     ②メールヘッダのあたまからReceived: fromで始まる行を探していき、最後の2つ
    を記録する
     ③本文の冒頭に記録した内容を付加する

    以上、よろしくお願いいたします。

    コメント by art2 — 2012年5月24日 @ 10:55 PM | 返信

    • Outlook 2003 の場合、メッセージヘッダーを取得するには CDO のインストールが必要となります。
      また、差出人だけでなく、Received ヘッダーも偽装は可能ですので、最後の 2 つだけを取り出したとしても、それで怪しいかどうかを判断することは難しいと思います。(確認するならすべての Received ヘッダーの整合性を見る必要があります。)
      差出人の偽装を防ぐには S/MIME 署名や Sender ID などを使用したほうが良いのではないでしょうか?

      コメント by outlooklab — 2012年5月29日 @ 10:21 PM | 返信

      • ご回答ありがとうございました。
        仰るとおりかもしれません。他の方法を考えて見ます。

        コメント by art2 — 2012年6月6日 @ 10:09 PM

  166. はじめまして

    Exchange 環境で共有されている他人の予定表のデータを取得するマクロ
    を拝見させていただきました。

    そのなかでユーザ名をインプットボックスから取得していますが、予定表にチェックがついているユーザのデータを取得する方法はありますでしょうか

    よろしくお願いします。

    コメント by sazu — 2012年6月1日 @ 2:18 PM | 返信

  167. Outlookの使用法についての質問です。
    Outlook2010を使用しています。
    受信したメールをオリジナルなエンコーディングのまま取り出す方法を教えていただきたいのですが。ヘッダーや添付ファイルも含んだメール全体を, メーラがデコードしたりレンダリングする前の形(ネットワークから受信した生データ)で取り出したいという意味です。vbaスクリプトを使用する方法でもかまいません。

    コメント by msanagi — 2012年6月11日 @ 3:45 PM | 返信

    • Outlook はメッセージを受信し、PST などに保存する際、元のメールのヘッダーなどを解析して MAPI プロパティに分割して保存します。
      そのため、デコードする前のデータは失われており、プログラムなどで取得することはできません。
      C++ を使えば、MAPI プロパティから MIME 形式のメッセージを再構成することも可能ですが、それは受信した生データとは異なるものとなりますので、ご要望のものとはならないでしょう。
      受信した生データをそのまま使用する必要があるのであれば、Outlook 以外のメールクライアントを使ってください。

      コメント by outlooklab — 2012年6月12日 @ 12:47 PM | 返信

  168. いつも参考にさせていただいております。
    Outlook 2010のTo doバーに表示される予定は、pstのデータ ファイルのもののみでしょうか。Outlook ConnectorによりWindows Liveのマイ カレンダーを表示している場合は、[重ねて表示]をしても、マイ カレンダーを最上位にしても表示されないようです。もしマイ カレンダーをTo doバーに表示する方法がありましたらお知らせいただければ幸いです。

    コメント by Agesaki — 2012年6月15日 @ 1:41 PM | 返信

  169. 会社の会議室予約をExchangeServer+Outlook2003でするようになっているのですが、自分が使用したい日時の各会議室の予定表をチェックして空きのある部屋を抽出するマクロを「Exchange 環境で共有されている他人の予定表のデータを取得するマクロ」をベースに1室毎に指定日時の予定がNothingがそうでないかをFor文で回すようにして作成しました。1部屋(1ユーザ)のチェックに1~5秒かかってしまい40部屋チェックするのに数分かかります。複数の指定した部屋(ユーザ)の指定日時の予定有無を一括でチェックできる手段はないでしょうか?

    コメント by skhr — 2012年6月22日 @ 6:09 PM | 返信

    • 特定の日時で予定が入っているかどうかだけを確認するなら空き時間情報を取得するという方法があります。
      マクロでも使えますが、グループスケジュール機能ですべての会議室をまとめカレンダーを作成し、それによって空き時間を確認するというのはどうでしょうか?

      コメント by outlooklab — 2012年6月25日 @ 12:38 PM | 返信

  170. 質問:マクロで本文に改行を入れたい
    バージョン: Outlook2007
    お世話になります。チャールズと申します。件名に特定の文字があるメールについて、添付ファイルを保存し、添付ファイルを削除し、保存先のパス&ファイル名をメール本文に加えてそのメールを保存したいと思い、次のようなマクロを書いて仕訳ルールから「スクリプトを実行」で実行させるようにしました。
    「添付ファイルをディスクに保存し、そのファイルへのリンクをメッセージの添付ファイルと置き換えるマクロ」を大いに参考にさせていただきました。
    マクロは動くのですが、添付ファイルが複数あるとずらずらと並んでしまいます。
    添付ファイルのパス&ファイル名毎に改行したいのですが、可能でしょうか。
    なお、リンクにして添付すると、セキュリティ設定でブロックされ添付ファイルが参照できなくなります。

    Public Sub Save_Replace(objMsg As MailItem)
    Const SAVE_DIR = “C:\My Documents\”
    Dim SAVE_DIR As String
    Dim objFSO
    Dim objItem As MailItem
    Dim objAttach As Attachment
    Dim cAttach As Integer
    Dim strFileName As String
    Dim strExt As String
    Dim strBase As String
    Dim i As Integer
    Dim c As Integer

    Set objFSO = CreateObject(“Scripting.FileSystemObject”)

    Set objItem = objMsg

    cAttach = objItem.Attachments.Count ‘添付ファイルの件数をカウント

    For i = 1 To cAttach ‘A
    Set objAttach = objItem.Attachments(i)
    strFileName = SAVE_DIR & objAttach.FileName
    strExt = Mid(strFileName, InStrRev(strFileName, “.”))
    strBase = Left(strFileName, Len(strFileName) – Len(strExt))

    c = 1
    ‘同名の添付ファイルがあった場合添字をつける
    While objFSO.FileExists(strFileName)
    strFileName = strBase & “(” & c & “)” & strExt
    c = c + 1
    Wend
    objAttach.SaveAsFile strFileName ‘添付ファイルを保存

    objItem.Body = strFileName & ” ” & objItem.Body ‘添付ファイルの保存先を加える

    Next ‘A終わり

    For i = cAttach To 1 Step -1 ‘添付ファイルを逆順に削除
    objItem.Attachments(i).Delete
    Next
    objItem.Save ‘編集したメールを保存
    End sub

    コメント by チャールズ — 2012年7月1日 @ 11:51 PM | 返信

    • VBA では改行は vbCrLf であらわされます。
      そのため、下記のとおり修正することで、ファイル名の直後に改行を入れることができるでしょう。

      修正前:
      objItem.Body = strFileName & ” ” & objItem.Body ‘添付ファイルの保存先を加える
      修正後:
      objItem.Body = strFileName & vbCrLf & objItem.Body ‘添付ファイルの保存先を加える

      コメント by outlooklab — 2012年7月3日 @ 12:42 PM | 返信

  171. お世話になります。早速試してみたところ、改行を入れることができました。ご教示ありがとうございました。チャールズ

    コメント by チャールズ — 2012年7月3日 @ 8:39 PM | 返信

  172. oulookのメール転送についての質問です。
    win7、outlook2010を使用しています。宜しくお願い致します。

    ある日、今まで転送できていた人(Aさん)への転送ができなくなってしまいました。

    私がメールを転送しようと転送ボタンを押し、宛先にAさん、CCにBさんを入れ転送したところ、Aさんは受信せず、Bさんだけが受信してしまいます。
    私の送信済みboxの中にはちゃんとそのメールが入っています。エラーも何もでません。

    メールを新規作成して宛先にAさん、CCにBさんを入れ、転送内容を本文にコピペすると、これはAさんもBさんも受信できます。

    またBさんが同じメールを、宛先にAさんを入れて転送すると、これもAさんは受信できます。
    Aさんから私に転送メールを送ると、私は受信できます。

    つまり私からAさんへの転送だけがなぜかできなくなってしまいました。(今まではできていました)

    一応セーフモードで起動してからも試してみましたが、結果は同じでした。

    一体何が原因なのでしょうか?また、対処法はありますでしょうか?
    恐れ入りますが、宜しくお願い致します。

    コメント by nekobotto — 2012年7月13日 @ 2:38 PM | 返信

    • Outlookでエラーが表示 されないという以上、メールの送信はできているはずです。
      オプションの [配信確認の要求] (開封確認の方ではありません) をオンにして転送してみてください。
      もし、それで A さんのサーバーから配信通知が返ってくるなら受信側の問題となるでしょう。

      コメント by outlooklab — 2012年7月17日 @ 12:49 PM | 返信

      • ご返信ありがとうございました。

        あれから数日経ち、Aさんのoutlookは、さらに新規作成のメールも受信しなくなりました。
        これも私からのメールだけで、ほかの方からのメールは受信できています。

        [配信確認の要求]もオンにして送信はしたのですが、恥ずかしながら配信通知の確認方法がわからず困っています(Aさんはやはり受信していません)

        [送信済みアイテム] フォルダーの中の[配信確認の要求]を設定して送信したメッセージをダブルクリックして開き「メッセージ」タブを見るのですが、「表示」グループがありません。
        この「表示」グループの中にある「確認」ボタンで通知の確認ができると思っていたのですが、違うのでしょうか?

        初心者で恥ずかしく申し訳ありませんが、ご教示願います。
        どうぞよろしくお願い致します。

        コメント by nekobotto — 2012年7月19日 @ 3:30 PM

      • 配信確認の要求をつけてメールを送信した場合、相手方のサーバーに正しく到達していればサーバーから配信済みの通知が返ります。
        そのようなメッセージを受信していないということであれば、相手方のサーバーに届いていないか、サーバーが配信確認要求をサポートしていないということが考えられます。
        たとえば、受信側サーバーの迷惑メールフィルターなどに引っかかったりしていないでしょうか?

        コメント by outlooklab — 2012年7月25日 @ 12:52 PM

  173. outlook2010で受信したメッセージを自動的に再送信するVBAプログラムを作成したいと考えているのですが、初心者のため苦戦しています。
    開いているメッセージを再送信するプログラムと受信時にアクションを起こすプログラムの例は見つかったのですが、これらをつなげて受信時に自動で再送信するプログラムにしたいと考えています。
    条件としては再送信時にfromおよびToを自分自身にし、CC,BCCは削除する必要があります。

    再送信するコード
    http://www.jpsoftwaretech.com/outlook-vba/resend-this-message/

    コメント by KA — 2012年7月16日 @ 12:28 PM | 返信

    • 転送ではなくて再送信なのですね。
      ご提示いただいたページのコードはメッセージ作成の画面を表示させる必要があるので、受信したメッセージを自動的に再送信というような用途で使うのは難しいかもしれません。
      受信したメッセージを OFT として保存し、それを CreateItemFromTemplete で開いて送信すれば可能ではないかと思います。

      コメント by outlooklab — 2012年7月17日 @ 12:56 PM | 返信

  174. Outlook2010の連絡先について、教えていただきたくお願いいたします。
    現在、数台のPCに共有NAS1台の環境で、Outlook2003を使用しています。
    PC1台のみインターネットの接続してメールの送受信を実行します。
    その1台の個人用アドレス帳を共有ドライブに入れており、
    他のPCはローカルドライブに同じファイル名で個人用アドレス帳を設定してあり、
    Outlookの起動時に、コマンドバッチで共有ドライブのPABファイルを各PCのローカルに
    コピーさせることにより、個人用アドレス帳を共通のアドレス帳として使用しています。

    こういった運用でOutlookを2010にアップするにあたり、2010では個人用アドレス帳が
    使用できないので、共通のアドレス帳をどうすべきか悩んでおります。
    送受信を行わないPCもメールの作成はそれぞれ行うので、メールを送受信するPCの
    pstファイルを丸ごとコピーするようにはしたくないのです。
    そこで共有ドライブに連絡先用のpstファイルを作り、それをコピーするようにしようと思ったのですが、
    送受信するPCのOutlookでメールの送信者アドレスを右クリックして登録する場合に、
    通常の連絡先でなく、作成した共有ドライブpstの連絡先に入るようにしたいのですが方法がわかりません。
    2003ではアドレス帳のオプションでアドレスの登録先を変更できるのですが、
    2010でも同様に登録先を変更できるのでしょうか?

    コメント by たんく — 2012年7月26日 @ 12:49 PM | 返信

    • 残念ながら Outlook 2010 では追加する連絡先フォルダーを指定することはできないようです。
      面倒でも既定の連絡先フォルダーに追加した後、共有している PST の連絡先に移動するしかないでしょう。

      コメント by outlooklab — 2012年7月31日 @ 12:57 PM | 返信

      • ご回答ありがとうございました。
        変更はできないのですね、残念です…
        運用で対応します。

        コメント by 匿名 — 2012年8月5日 @ 11:45 AM

  175. 初めまして。長文ですがよろしくお願いいたします。

    xpからwin7へ転送ツールでOEメールデータを転送したかったのですが、outlook2010でインポートする際、
    数分?インポートしているようなメッセージが出ましたが、その後
    「フォルダーの参照 Outlook Express 4.x、5.x、6.x、またはWindows Mailのメールフォルダーを選択してください。」
    といったメッセージが出てうまくいきませんでした。なにひとつインポートされていませんでした。

    http://support.microsoft.com/kb/2460686/ja←こちらのサイトを参考に移行作業を行いましたが、
    以下の点が異なる手順です。

    ・xpで転送ファイルを作成する際、カスタマイズを開き、お気に入りとwindows設定のみを転送対象としてチェックを入れました。
    *詳細設定は触れていません。

    ・新しいコンピュータへの転送方法で外付けHDDかUSBを選択しながらも、実際の保存場所を新7PC(win7)のデスクトップ上に
    作成した共有フォルダにしました。(2台は同じLAN内にある為、これが可能です)

    ・win7側で転送ファイルを取り込む際も、新しいコンピュータへの転送方法で外付けHDDかUSBを選択しながらもデスクトップの
    フォルダを選択し、その中の転送ファイルを選択しました。

    ・Outlook2010でインポートを実行する前に、先にアカウントを作成(メアドがファイル名のデータファイルを作成)し、
    その後上記サイトのSTEP4のインポート作業を行ったところ、フォルダーの参照が出ました。

    以上、4点、影響が出ない範疇だろうと思い、サイトの手順と異なる作業方法となりましたが、どれかが悪さをしたとか
    わかりますでしょうか。

    コメント by C201 — 2012年7月29日 @ 11:42 AM | 返信

    • インポートするデータ量はどのぐらいでしょうか?
      もし 1G を超えるようなら、インポート前の変換処理でタイムアウトが発生していると考えられます。
      その場合は、ファイル名を指定して実行で下記のコマンドを実行して下さい。

      c:\Program Files\Windows Mail\WinMail.exe

      これを実行すると変換処理が行われているダイアログが表示されますので、その表示が終わったら Outlook でインポートをします。
      詳細については https://outlooklab.wordpress.com/2012/02/11/windows-7-%e3%81%ae%e4%b8%ad%e3%81%ae-windows-%e3%83%a1%e3%83%bc%e3%83%ab/ もご覧ください。

      コメント by outlooklab — 2012年7月31日 @ 1:01 PM | 返信

  176. お世話になります。
    会社がOutlookに移行したため、いろいろカスタマイズするにはVBAしかないと思い、
    検索してこのサイトにたどり着きました。いろいろなマクロを参考にさせていただいており、
    大変助かっております。そこで1つ教えていただきたいことがあります。

    「フォルダ(受信トレイなど)のメール一覧にユーザ定義フィールド(名前をX-Mailer)を追加して
    選択したメールのヘッダの中のX-Mailerを見つけ出し、
    追加したユーザ定義フィールドに表示する。」

    というものです。
    NewMailExイベントで受信した際にヘッダ部分からX-Mailerを抽出するところまでは
    わかったのですが、フォルダ内の選択したメールのユーザ定義フィールドにアクセスする
    方法がわからず困っております。なんとか方法はないでしょうか?

    お時間ありましたら、ご教示いただけると大変助かります。
    よろしくお願いします。

    コメント by やまやま — 2012年7月31日 @ 9:00 PM | 返信

    • ユーザー定義フィールドにアクセスするには MailItem オブジェクトの UserProperties コレクションを使います。
      たとえば、objItem に格納されている MailItem オブジェクトに “X-Mailer” というユーザー定義フィールドを追加し、その値を “Outlook 14.0” とするには以下のようにします。

      Set objProp = objItem.UserProperties.Add(“X-Mailer”, olText)
      objProp.Value = “Outlook 14.0”

      コメント by outlooklab — 2012年8月1日 @ 12:50 PM | 返信

      • 返信ありがとうございます。ご教示いただいた方法できました。ただ、最後に、objItem.saveとしないといけないんですね。
        画面にも表示されました。ありがとうございました。

        コメント by やまやま — 2012年8月1日 @ 9:38 PM

  177. いつも参考にさせて頂いております。

    会社のスケジュール管理システムから送信されるメールを元に、Outlookの予定表アイテムを
    作成するマクロを作りたいと考えておりますが、力不足にてご助力をお願いできますでしょうか。

    似たようなマクロを過去に公開して頂いておりますが、メール本文に記載されている日時情報などを
    予定表アイテムに反映したい要望がございます。

    スケジュール管理システムからのメールは、以下のルールで送信されます。

    <メールのルール>
    =======================

    件名:
     スケジュール登録のお知らせ「(スケジュール名称)」

    本文:

     登録者 : (登録者氏名)

     ————————————————–
     下記のスケジュールが登録されました。
     ————————————————–
     件名 : (スケジュール名称)
     分類 :
     日時 : 2012/07/30 19:30 – 20:00 (←日付表示の例)
     設備 :
     場所 : (場所)
     備考 :

    =======================

    仕分けルールを作成し、件名が合致した場合にマクロを実行
    予定表アイテムに以下のルールで作成したい。

    <作りたい予定表アイテム>
    =======================
    件名       (上の例ではスケジュール名称)
    場所       (上の例では場所)
    開始時刻    (上の例では 2012/07/30 19:30)
    終了時刻    (上の例では 2012/07/30 20:00)  
    本文       (メールの本文全部コピー)
    =======================

    具体的な方法を教えて頂けますと幸いです。
    よろしくお願いします。

    コメント by 中村家 — 2012年8月1日 @ 11:38 AM | 返信

    • 本文の解析をしないといけないので、マクロはちょっと複雑になるかもしれません。
      検討してみます。

      コメント by outlooklab — 2012年8月1日 @ 12:53 PM | 返信

      • ありがとうございます。
        急ぎではありませんので、ご都合の良い時にご対応頂けますと幸いです。
        よろしくお願いします。

        コメント by 中村家 — 2012年8月1日 @ 3:05 PM

  178. お世話になります。
    Outlookのマクロを検索しているうちにこのサイトにたどり着きました。

    マクロ初心者の為、下記の内容をマクロで実現出来るものなのかの判断が付かず、
    実現可否と実現可能であればマクロをご教示頂けますと幸いです。

    「内容」
    Aさん(A-san@keitai.jp)から社内のアドレス(kaisya@hoge.jp)に空メール
    (または、任意の本文が記載されてたメール)を送信されると、上記”kaisya”
    アカウントのOutlookにて、
     ”送信元:send-addr@hoge.jp” もしくはOutlookの「返信先の指定」機能と同様に返信時の宛先がこれに変わる
     ”宛先:rcvd-addr@hoge.jp”
     ”件名:test”
     ”本文:hogehoge”
    といった内容のメールを自動的で作成・送信するようなマクロを作成し、
    上記のマクロを自動仕訳のスクリプト実行を行うことで実現したいと
    思っております。

    上記の内容は実現できますでしょうか?
    ご教示のほど、よろしくお願いいたします。

    コメント by ばぢゃ — 2012年8月1日 @ 12:18 PM | 返信

    • マクロで実現は可能です。
      ただ、この内容だとだれが kaisya@hoge.jp に送信されたのかという情報がありませんが、それで問題ないのでしょうか?

       ”送信元:send-addr@hoge.jp” もしくはOutlookの「返信先の指定」機能と同様に返信時の宛先がこれに変わる
       ”宛先:rcvd-addr@hoge.jp”
       ”件名:test”
       ”本文:hogehoge”

      コメント by outlooklab — 2012年8月1日 @ 12:58 PM | 返信

  179. お世話になります。outlook2007/windows XPです。仕事で、「受信したメールの本文をエクセルに貼り付ける」作業が毎日20分くらいあります。VBAを使って効率化したいと思い次のようなマクロを書きましたが動きません。お力をお貸しいただけないでしょうか。Excelも2007です。
    前提:
    仕訳ルールで対象のメールを選び、その中で「スクリプトを実行」により実行しようと考えています。
    メール本文を書き出すファイルはできれば毎回1つにしたく、対象メールが複数あるときはシートを足していきたいです。1メール1ファイルでも可です。

    Public Sub SaveRevisionMail(objMsg As MailItem)

    Const ExcelPaste = “C:\test\lPaste.xlsx”
    Dim objWorkbook As Object

    ‘Excelを開く
    Set objWorkbook = GetObject(ExcelPaste)
      Set objSheet = objWorkbook.sheets(1)
    本文をエクセルに貼り付け
    objSheet.Cells(1, 1) = objItem.Body   <<ここから動きません
    objWorkbook.sheets.Add

    End Sub
    どうぞよろしくお願いします。
    チャールズ

    コメント by チャールズ — 2012年8月6日 @ 7:42 PM | 返信

    • 「ここから動きません」とあるのですが、objMsg という名前でアイテムが引き渡されているはずなのに、objItem で参照しようとしているようです。
      また、このマクロだと常にシート1に本文が追加され、シート2以降は追加されても中身が空になってしまうのではないかと思います。
      下記のようにすべきではないでしょうか?

      Set objSheet = objWorkbook.sheets.Add
      ‘本文をエクセルに貼り付け
      objSheet.Cells(1, 1) = objMsg.Body  

      コメント by outlooklab — 2012年8月10日 @ 1:05 PM | 返信

    • アドバイスありがとうございます。やってみます。

      コメント by チャールズ — 2012年8月10日 @ 7:12 PM | 返信

      • 大変お世話になっております。179でいただいたアドバイスをもとに、次のマクロを書きました。仕分ルールは結局放棄しマクロ内に未読のメールという条件を記述したことと、あとoutlook2007からoutlook2010のバージョンアップしました。おかげ様でマクロは動きます。ただ1つだけニーズにそぐわないので変えたいものの、どうしたらよいかわからない点があります。メールの本文をエクセルに書き出すと1つのセルに全部の内容が入ってきます。手作業でコピー->貼り付けを行ったときのように、表は表として複数のセルに貼り付くようにしたいのですが、そういうことは可能でしょうか。
        どうぞよろしくお願いします。
        Public Sub Excel書き出し()

        On Error Resume Next

        Dim myItem As Object
        Dim myFolder As Folder
        Dim iwkItem As Integer
        Dim myBook As Object
        Dim objSheet As Object
        Dim jwkRow As Integer
        Dim myBody As Object

        Set myNameSpace = Application.GetNamespace(“MAPI”)
        Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)

        Set xlApp = CreateObject(“Excel.Application”)
        Set myBook = xlApp.Workbooks.Add
        xlApp.Visible = True

        iwkItem = 1
        jwkRow = 1

        For Each myItem In myFolder.Items

        If myItem.UnRead = “True” Then
        Set objSheet = myBook.Sheets.Add

        myBook.Sheets(1).Cells(1, 1).Value = myItem.Subject ‘A列:件名

        myBook.Sheets(1).Cells(1, 2).Value = myItem.ReceivedTime ‘B列:受信日時

        myBook.Sheets(1).Cells(1, 3).Value = myItem.Body ‘C列:本文 (ここがイマイチなので改善したい)

        iwkItem = iwkItem + 1
        Debug.Print iwkItem

        Else
        ‘開封済みの場合何もしない
        iwkItem = iwkItem + 1

        End If

        Next myItem

        Set xlApp = Nothing
        MsgBox (“終了”)

        End Sub

        コメント by チャールズ — 2012年8月11日 @ 4:25 PM

  180. Outlookのマクロを検索しているうちにこのサイトにたどり着きました。
    このサイトのVBAを応用し、件名および本文に「あと%%dd%%日」と書いてあると自動的に「XX日」と変換するものを作成しました。
    本文はHTMLで装飾したのですが、 objItem.Bodyを使うとただのテキストになってしまい、装飾がなくなってしまいます。
    「装飾を施したまま、”あとXX日”と自動変換」するようなことは可能でしょうか。
    やり方があれば教えてください。

    ‘ ここをトリプルクリックでマクロ全体を選択できます。
    ‘ 新しいインスペクタが開かれる際のイベントをハンドルするためのオブジェクトを宣言
    Dim WithEvents myInspectors As Inspectors
    ‘ 起動時に上記のオブジェクトに設定
    Private Sub Application_Startup()
    Set myInspectors = Application.Inspectors
    End Sub
    ‘ 新しいインスペクタが開かれた場合の処理
    Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)
    Dim strBody As String
    Dim strSub As String
    Dim objItem
    ‘ 開かれたアイテムを取得
    Set objItem = Inspector.CurrentItem
    If objItem.MessageClass = “IPM.Note” Then ‘ アイテムがメール
    If objItem.Sent = False Then ‘ アイテムが送信前
    strSub = objItem.Subject
    strSub = Replace(strSub, “%%dd%%”, DateDiff(“y”, Now, “2012/10/31”))
    If objItem.Subject strSub Then objItem.Subject = strSub
    strBody = objItem.Body
    strBody = Replace(strBody, “%%dd%%”, DateDiff(“y”, Now, “2012/10/31”))
    If objItem.Body strBody Then objItem.Body = strBody
    End If
    End If
    End Sub

    コメント by 匿名 — 2012年8月8日 @ 6:16 PM | 返信

    • HTML 形式の本文で装飾を残したまま文字列を変更したい場合は、Body プロパティではなく HTMLBody プロパティを使用します。

      コメント by outlooklab — 2012年8月10日 @ 1:14 PM | 返信

      • 返信ありがとうございます。
        すごく単純だったんですね。できました。
        ありがとうございます。助かりました。

        コメント by 匿名 — 2012年8月10日 @ 3:08 PM

  181. 始めまして。
    簡単なことで悩んでいます。 outlookの印刷機能が物足りないので、メール本文を全選択して、wordに貼り付けて運用しています。これをマクロでどのように表現するのかが分かりません。
    つまり、メール本文を全選択して、クリップボードへコピーしたいのです。(手動ならCtrl-a、Ctrl-vの2回でOKの動作)

    メールはRTF形式なので、文字列だけでなく、ピクチャ形式(excelからコピーしたグラフ等)を含んでいます。
    DataObjectを使って、PutInClipboardでコピーできるのは、文字列だけのようです。
    ひょっとして、これはWIN32のAPIを直接呼び出さないといけないのでしょうか?

    コメント by みっち — 2012年8月20日 @ 2:34 PM | 返信

    • Outlook のバージョンはいくつでしょうか?
      2007 以降であれば、Inspector オブジェクトの WordEditor プロパティで Word の Document オブジェクトとして本文の情報が取得できるため、それに対して Word のマクロと同等の処理ができます。
      たとえば、以下のようなマクロで現在表示中のメール本文を新規に作成した Word 文書に貼り付けることができます。

      Public Sub CopyCurrentItemToWord()
      Dim oDoc ‘As Word.Document
      Dim oNewDoc ‘As Word.Document
      Set oDoc = ActiveInspector.WordEditor
      With oDoc.Application
      .Selection.WholeStory
      .Selection.Copy
      End With

      Set oNewDoc = CreateObject(“Word.Document”)
      oNewDoc.Application.Selection.PasteAndFormat 16
      oNewDoc.Application.Visible = True
      End Sub

      コメント by outlooklab — 2012年8月21日 @ 12:44 PM | 返信

      • 素晴らしい!
        ありがとうございます、まさに希望どおりのマクロです。(Outlook2007で確認しました)
        Outlookのマクロの情報は少なくて、苦労しておりました。
        あらためて感謝いたします。今後ともよろしくお願いいたします。

        コメント by みっち — 2012年8月21日 @ 10:45 PM

  182. いつも大変お世話になっております。
    excelのVBAはたくさんあるのに、outlookが少ないと嘆いていたところに
    このようなすばらしいページに辿り着き、幸せを感じております。

    是非作成して頂きたいマクロがあります。
    自分で作ってみようと試みましたが、初心者には厳しかったです。

    あるMLに返信したいのですが、そのMLの設定でReply-ToがMLのアドレスになっています。
    outlookでは自動的にReply-Toに返してしまうようですが、Fromアドレスに返信するようには
    できませんでしょうか?
    遅くなりましたが、outlook2010です。

    元メールから差出人のアドレスをコピーして貼り付ければ済む話なのですが…

    何卒よろしくお願いします。

    コメント by 匿名 — 2012年8月21日 @ 9:05 PM | 返信

  183. いつも貴重な情報を拝見させていただいております。

    さて、…..
    Outlook 2010 において、複数アカウントを設定している場合に、メールへの返信で、常に特定のアカウントを使用するマクロは、どの様になりますでしょうか?
    Outlook 2003 の場合は、下記リンクでご紹介いただいておりますが、2010 でも、このままで可能でしょうか?
    https://outlooklab.wordpress.com/2008/07/19/%E4%BB%BB%E6%84%8F%E3%81%AE%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%A7%E8%BF%94%E4%BF%A1%E3%81%99%E3%82%8B%E3%83%9E%E3%82%AF%E3%83%AD/

    コメント by makoto — 2012年8月23日 @ 10:17 AM | 返信

    • Outlook 2010 にて、問題なく機能することを確認できましたので、御礼旁々、お知らせ申し上げます。ツールリボンでも、新しいタブとその中にマクロ起動を設定し、「名前の変更(M)」で、タブ名とマクロ実行表示名を、それぞれ、たとえば「Reply」「Via XXX」に変更することで、コンパクトにリボン上にアイコン表示させて、使うことができるようになりました。

      コメント by makoto — 2012年9月6日 @ 12:45 PM | 返信

  184. 先日178.にてマクロをご教示頂いたものです。その節はありがとうございました。
    おかげさまで概ね実現したい内容のマクロが作成できました。

    しかしながら、動作検証をしていたところスマホでは”REPLY_TO”で設定したアドレスを
    表示することができない仕様?のようで、返信時に送信者のアドレスが表示されてしまいます。
    (ガラケーやWeb Mail 等では問題なく”REPLY_TO”で設定したアドレスが表示されています。)

    そこで、REPLY_TO ではなく、MAIL_FROM 自体にREPLY_TO と同一のアドレスを指定して
    メールの送信を行いたいと考え、SEND_TOと同様に下記のMAIL_FROMの記述を追加してみましたが
    “henshin@hoge.co.jp”が送信元のアドレスにならず、実際のアドレス(A-san@hoge.co.jp)が
    表示されてしまう状況です。

    Dim objNotif As MailItem
    Set objNotif = Application.CreateItem(olMailItem)
    Const MAIL_FROM = “henshin@hoge.co.jp” ‘返信用アドレス
    objNotif.Recipients.Add MAIL_FROM

    このような記述では正しく動作しませんでしょうか?
    何度も申し訳ありませんが、送信元のアドレスを任意のアドレスに指定する方法をご教示頂きたく
    お願いいたします。

    コメント by ばぢゃ — 2012年8月27日 @ 4:07 PM | 返信

    • 差出人のアドレスを変更する場合は以下の記述を objNotif.Send の前に追加してください。

      objNotif.SentOnBehalfOfName = REPLY_TO

      なお、この方法で送信しても、受信環境によっては返信アドレスが REPLY_TO で指定したものにならない可能性があります。
      この場合、ウィルスやスパムのなりすまし防止策として実際の送信者を表示していると考えられ、Outlook では対処できないかもしれません。

      コメント by outlooklab — 2012年8月29日 @ 12:29 PM | 返信

      • ご回答ありがとうございます。
        早速、ご教示頂いた内容にて検証してみた結果、無事想定通りの結果となりました。
        キャリアでは問題ありませんでしたが、一部のプロバイダでは迷惑メールとして扱われる場合がありました。
        しかしながら、こればかりはOutlook側ではどうする事も出来ないと思っております。

        非常に助かりました。本当にありがとうございました。

        コメント by ばぢゃ — 2012年8月29日 @ 3:35 PM

  185. 管理人様、
    Makoto と申します。先ほど、183. へ返信すべきところ、誤って 182. へ返信してしまったようです。ご訂正いただければ、幸いに存じます。
    または、182.への私の返信を削除いただければ、再度、同じ内容を183.へ返信いたします。

    コメント by makoto — 2012年8月27日 @ 9:33 PM | 返信

    • 遅くなりましたが、訂正してみました。
      ただ、アイコンが設定できませんでした。

      コメント by outlooklab — 2012年9月6日 @ 12:47 PM | 返信

  186. 178.、184.にて質問させて頂いたものです。
    何度も投稿してしまい申し訳ありません。

    ご教示頂きました内容のマクロをOutlook 2003 の仕訳ルールのスクリプトに登録したところ、
    下記の事象が発生しました。この事象はOutlookの仕様となりますでしょうか?

    仕訳ルール:[差出人]が(hoge1@docomo.ne.jp かhoge2@ezweb.ne.jp かhoge3@softbank.jp かhoge4@yahoo.co.jp の場合、Project1.作成マクロ を実行する。
    ※”作成マクロ”は予め設定しておいた宛先・件名・本文のメールを作成・送信するマクロとなります。

    上記のドコモやWebメールから空メールを送信した際には問題無くマクロを実行する事ができ、メールも送信できるのですが、AUやSBから空メールを送信した際には仕訳ルールの実行時に「クライアントの処理が失敗しました。」とのエラーが発生し、仕訳ルール(マクロの実行)が正しく行えませんでした。
    しかしながら、AUやSBであっても件名に何らかの文字を入力すると(空メールでなければ)正常に仕訳ルール(マクロの実行)を行う事が出来ています。

    AUやSBの携帯(スマホ)から空メールを送信した際に仕訳ルールのスクリプト実行によるメールの作成・送信が正しく行えない動作は仕様となりますでしょうか。
    また、エラーが発生した際には当該仕訳ルールが無効となってしまう為、何か回避策はありませんでしょうか?

    何度も質問ばかり申し訳ありませんが、もし、お分かりになるようであればご教示の程よろしくお願い致します。

    コメント by ばぢゃ — 2012年8月30日 @ 3:35 PM | 返信

    • 何度もすいません。
      上記の事象はWindows XP + Outlook 2003 では発生しますが、Windows 7 + Outlook 2010 では発生しませんでした。
      検証時はWin7+2010で行っており問題なかったのですが、実運用はWinXP+2003で行う必要がある為問題となっています。

      コメント by ばぢゃ — 2012年8月31日 @ 9:50 AM | 返信

      • 原因がよくわからないのですが、エラー発生時にルールが無効になる件についてはマクロの先頭に On Error Resume Next を追記することで回避できる可能性があります。
        何かわかりましたらこちらで回答します。

        コメント by outlooklab — 2012年9月6日 @ 12:55 PM

      • ご回答ありがとうございます。
        ご教示頂きました通り、マクロの先頭に On Error Resume Next を記入してみましたが、
        残念ながら、事象解消には至りませんでした。
        お手数ですが、何かお分かりになられましたらご教示頂けますと幸いです。

        コメント by ばぢゃ — 2012年9月10日 @ 3:51 PM

      • On Error Resume Next で回避できないとなると、VBA の記述以外の問題で現象が発生していると考えられます。
        Outlook 2003 でしか発生しないようですので、Outlook 2003 の不具合などの可能性も考えられるのですが、既知の不具合情報などは見つけられませんでした。

        仕訳ルールのスクリプトしてではなく、NewMailEx で実行した場合でもエラーとなるのでしょうか?

        コメント by outlooklab — 2012年9月13日 @ 12:38 PM

      • すいません。返信が遅くなりました。
        NewMailEx で実行した場合でもエラーとなりました(ただしく検証できているか自信がないです。。。)ので、
        マクロの内容の問題では無く、Outlook側の問題と考えればいいでしょうか?

        コメント by ばぢゃ — 2012年9月18日 @ 3:20 PM

      • そうですね。Outlook 2003 に何らかの問題があると考えられます。

        コメント by outlooklab — 2012年9月22日 @ 4:48 PM

      • ご回答ありがとうございました。
        Microsoftのサポートに確認してみることにします。
        色々とありがとうございました。

        コメント by ばぢゃ — 2012年9月24日 @ 12:04 PM

  187. たいへんお世話になっております。

    1点、ご教授いただきたいことがあります。

    今回、会社のほうが、全社のメールサーバーとメイラーを、Exchange+OUTLOOKから、GoogleApps+GMAILに移行することになりました。
    そこで思うに、私が社内業務用に作成し、使用していたOUTLOOK VBAのマクロはこれにより一切使えなくなると思ったほうがよいのでしょうか?
    また、GMAILの機能として、同様なマクロ機能はあるのでしょうか?

    現在のOUTLOOK VBAマクロ機能ではかなりのロジックを組んで、OUTLOOK子画面上のボタンを配置し、そのボタン押下により個別のメール内容を判断して、メールの返信文作成やファイル等の再配布等を行うような機能を持たしています。

    よろしくお願いいたします。

    コメント by sspp — 2012年9月5日 @ 6:06 PM | 返信

    • GMAIL は IMAP4 サーバーとしてアクセスできるはずなので、Outlook から GMAIL に IMAP4 で接続すればマクロも使い続けられるのではないかと思います。

      コメント by outlooklab — 2012年9月6日 @ 1:01 PM | 返信

  188. 初めて投稿させていただきます。
    sakura57と申します。
    OUTLOOK VBAマクロの利用は初心者となります。

    業務効率化のために色々と検討しており現在は
    下記をベースに追加でカテゴリーに分けた後に連番をつける方法を探しています。

    Outlook 研究所 2012年2月18日
    メッセージの受信時に連番を件名に付与するマクロ
    カテゴリー: Outlook 2003 マクロ,Outlook 2007 マクロ,Outlook 2010 マクロ,Outlook VBA マクロ — outlooklab @ 12:00 PM
    メッセージの受信時に連番を件名に付与するマクロ

    【詳細】
    上記では、【「特定の言葉を件名に含む」メールまたは「特定の送信者」からのメールのみに】という条件が入っておりますが
    この条件を【カテゴリー分けをしたい際に】に変更したいです。
    イメージとしては受信トレイ内の最新受信メールに対してカテゴリー赤を選択した場合
    カテゴリの色と分けと同時に連番を振り、カテゴリーでソートした際に赤のカテゴリーの最新受信メールが何件目か人目で分かるようにしたいです。
    ※カテゴリーの色分けをした順番ではなく、受信時間に対して連番を振って欲しい。

    その設定を複数のカテゴリー(青、黄色、緑など)に対してどうようにそれぞれ連番を振り分けたいです。

    Ver:outlook2010
    OS:Windows XP pro

    上記のようなことは可能でしょうか。
    出来れば作成したマクロをご教授いただけないでしょうか。
    宜しくお願い致します。

    コメント by sakura57 — 2012年9月12日 @ 11:59 PM | 返信

    • 受信時間で連番を振るとなると、色分けの際に一度振りなおした連番を振りなおす必要が生じる場合があります。
      たとえば、9:00 に受信した Message A に 1、10:00 に受信した Message B に 2 と振っていた場合に、その後 9:30 に受信した Message C の色分けを行ったら Message C が 2 になり、Message B が 3 になるということですよね?
      これはかなり厄介なロジックです。
      せめて受信時に自動的にカテゴリーわけが可能であればよいのですが…

      コメント by outlooklab — 2012年9月13日 @ 12:58 PM | 返信

  189. 返信ありがとうございます。行いたい処理としてはご認識の通りです。

    >これはかなり厄介なロジックです。
    >せめて受信時に自動的にカテゴリーわけが可能であればよいのですが…

    では最初に「特定の言葉を件名に含む」メールに対してカテゴリー分けを自動に行い
    その際に自動的に連番をつけるのであれば問題ないでしょうか。
    こちらの対応であれば運用上、問題ありませんので、再度、ご検討願います。
    何卒宜しくお願い致します。

    コメント by sakura57 — 2012年9月13日 @ 4:36 PM | 返信

  190. お世話になります。 R.R.です。

    メールを受信し、受信トレイから、 .moveメソッドと用い他のフォルダーへ移動させようとすると、何故か必ず、「ゴミ箱」トレイに移動されてしまいます。 .moveメソッドでは特にエラーが起きていません。
    また、指定した移動先のフォルダーも存在しており、.moveを実行する前に、ウォッチウィンドウで確認しても正しくそのオブジェクトは存在します。
    移動先に指定するフォルダーの名前や、階層構造などを変えても同じです。何故か、かならずゴミ箱に移動してしまいます。 仕分けルールや迷惑メールの設定なども確認しましたが、特にそれらしき設定は見当たりません。

    環境; Windows7 + Oultook2010
    Excel上のVBAでOutlookを操作しています。メールの送受信や、メールの作成等、他の一般的な機能は、特に問題なく動作させることができています。 フォルダーの移動だけ、おかしな動きになります。

    よろしくお願いいたします。

    コメント by R.R. — 2012年10月13日 @ 6:02 AM | 返信

    • R.R.です。その後、いろいろ試みたところ、移動先を[Gmail]フォルダーの下に置いたところ、moveメソッドで正常に移動させることができました。それ以外のところにあるフォルダーに移動させようとすると、エラーにならずに、ゴミ箱へ直行するようです。

      コメント by R.R. — 2012年10月13日 @ 10:04 PM | 返信

      • R.R.です。moveしたメールは、最終的にやはり、ゴミ箱に入れられてしましました。

        「受信トレイ」から.moveメソッドである[Gmail]下にあるフォルダーに移動することはできたのですが、
        その後、送受信を実行すると、.moveメソッドで移動したメールだけが「ゴミ箱」に移動されてしまいます。
        「受信トレイ」から手動でフォルダーへ移動したメールは、全く内容が同じであるにもかかわらず、送受信を実行しても「ゴミ箱」には移動されません。

        VBAで処理したメールだけが、どんどんゴミ箱に移動されてしまうので、困っています。
        何が原因なのでしょうか。 よろしくお願いいたします。

        コメント by R.R. — 2012年10月13日 @ 11:11 PM

      • Gmail には IMAP でアクセスしているのでしょうか?
        私も、IMAP サーバー上のアイテムを move メソッドで移動するとゴミ箱にアイテムが移動されるのを確認しましたが、移動先のフォルダーにもアイテムは存在します。
        おそらくは move メソッドが「アイテムのコピー+削除」という処理で実装されており、削除された際にゴミ箱に移動されているのではないかと推測できます。

        コメント by outlooklab — 2012年10月16日 @ 12:53 PM

      • outlooklab様、ありがとうございます。Gmailは、IMAPです。Gmailの場合は、outlookでは、フォルダー操作が正しくできないという問題があるようですね。Gmailをやめて、Yahooメールにしたら、全く問題なく動作しました。

        コメント by 匿名 — 2012年10月24日 @ 3:39 AM

  191. Outlook2007です。
    「転送・返信時にメッセージの件名や本文にアクセスする方法」を参考にさせていただき、
    本文の特定文字を自動置換するマクロを作成しているのですが、例えば
    myMail.Body = replace(myMail.Body,’A’,’B’)
    のようにすると、本文が勝手に折り返し処理されてしまいます。試しに
    myMail.Body = myMail.Body
    とやっただけでも同様でした。この折り返し処理をさせない方法はありますでしょうか。

    コメント by t-aizawa — 2012年10月15日 @ 8:42 PM | 返信

    • メッセージの形式が HTML 形式ではありませんか?
      Body プロパティを使うとメッセージ形式がテキスト形式となるため、予期しないフォーマットの変更がされてしまいます。
      HTML 形式のメール本文を変更する場合は Body の代わりに HTMLBody を使用してください。

      コメント by outlooklab — 2012年10月16日 @ 12:57 PM | 返信

      • ご返信ありがとうございます。

        メッセージはテキスト形式なのです(メールはすべてテキスト形式で作成するようにしています)。
        他に何か要因は考えられますでしょうか…。

        コメント by t-aizawa — 2012年10月17日 @ 12:29 AM

      • もしかすると、そのメッセージは本来自動的に折り返されているのではないでしょうか?
        VBA で処理する前に、本文の上部に以下のような表示はありませんか?
        「このメッセージ内の余分な改行が削除されました」

        コメント by outlooklab — 2012年10月17日 @ 12:56 PM

      • いえ、「このメッセージ内の余分な改行が削除されました」は表示されていません。
        返信時ではなく新規メール作成時でも同様な症状になりますし。

        その後さらに検証したところ、行頭に引用符(>)があり、かつ、文末に句読点(、。)がないと
        70文字付近で折り返されてしまうようです。検証に使ったコードは以下です。
        Public Sub Test()
        Dim myMail As MailItem
        If ActiveInspector.CurrentItem.MessageClass = “IPM.Note” Then
        Set myMail = ActiveInspector.CurrentItem
        myMail.Body = myMail.Body
        End If
        End Sub

        例えば、
        >http://download.microsoft.com/download/6/8/5/68581865-3b24-4244-b3c0-190541de52d4/reimaging_jp.doc
        という行があると、上記マクロを実行すると
        >http://download.microsoft.com/download/6/8/5/68581865-3b24-4244-b3c0-19
        >0541de52d4/reimaging_jp.doc
        と勝手に折り返し整形されてしまいます。行頭に引用符(>)がない場合は折り返しされません。
        また、
        >http://download.microsoft.com/download/6/8/5/68581865-3b24-4244-b3c0-190541de52d4/reimaging_jp.doc
        のように、行頭に引用符があっても、後ろに句読点がある場合は折り返しされないようです。

        このような勝手に折り返される動作をさせないようにする方法はないでしょうか。

        長文失礼しました。

        コメント by t-aizawa — 2012年10月18日 @ 8:21 PM

      • 確かに先頭に > があると 70 文字で改行されるようですね。
        このような動作に関する情報が見つからないのですが、何かわかりましたら記事にします。

        コメント by outlooklab — 2012年10月19日 @ 12:51 PM

  192. 始めまして。

    Outlook 2010を使用しております。

    現在スケジュールの代理権限を複数名から(許可レベル : 編集者)を受けております。その中で1名分(Aと致します)だけ急に会議通知のコピーが届かなくなり、私がAの代理で送信した会議依頼の受信者からの承諾等の返事もAには届きますが、私あてには全く届かかなくなってしまいました。
    直接スケジュールから会議の変更・送信などはできます。またAの代理権限の設定も確認しましたが問題なく、他の人の設定と同じで原因がわかりません(この問題がおきてから、一度私の権限を削除し、再設定もおこなっております)。
    ITチームにも相談済みですが、こういったケースは今までにないということで、解決しておりません。
    大変困っておりご回答頂けると幸甚です。
    どうぞ宜しくお願い致します。

    コメント by admin 11 — 2012年10月16日 @ 12:19 PM | 返信

    • 代理人への会議出席依頼の転送は、アクセス権の設定ではなく受信トレイの隠し転送ルールで行っています。
      そのため、ルールに問題があったり、転送ルールが削除されたりした場合に、転送が行われなくなるという問題が発生します。
      以下の手順で代理人設定とルールの設定をやり直してみてください。
      1. 現在の代理人の設定と自動仕分けルールの設定をメモしておきます。
      2. 代理人をすべて削除します。
      3. Outlook を /cleanrules オプション付きで起動し、ルールを初期化します。
      4. 代理人を再設定します。
      5. 自動仕訳ルールを再設定します。

      コメント by outlooklab — 2012年10月17日 @ 12:53 PM | 返信

  193. Outlook(2003)からエクセル(2003)に連絡先を取得するマクロを作成しています。
    一応動くのですが、1件出力するのに3.4秒かかってしまいます。
    私の場合500件あり28分掛かります。もっと件数が多い場合も想定するとちょっと処理が遅すぎて使えない状況です。

    —— 中略
    For i = 1 To FLRC
    Cells(r, 1).Value = Mid(myFolder.Items(i).Department, 1, 3)
    Cells(r, 2).Value = myFolder.Items(i).LastName & myFolder.Items(i).FirstName
    Cells(r, 3).Value = myFolder.Items(i).Email1Address
    Cells(r, 4).Value = myFolder.Items(i).Account
    NEXT i
    ——
    この書込み時に遅いのですが、もっと早く処理できる方法はあるのでしょうか? それとも別のOSでのやりとりはこんなものなのでしょうか。

    コメント by Shiro — 2012年10月17日 @ 6:01 PM | 返信

    • 確かに3.4秒というのはかかりすぎですね。
      ただ、コードが非効率な気もします。
      以下のようにしたら速くなるのではないかと思います。

      For i = 1 To FLRC
      With myFolder.Items(i)
      Cells(r, 1).Value = Mid(.Department, 1, 3)
      Cells(r, 2).Value = .LastName & .FirstName
      Cells(r, 3).Value = .Email1Address
      Cells(r, 4).Value = .Account
      End With
      NEXT i

      コメント by outlooklab — 2012年10月18日 @ 12:37 PM | 返信

  194. ありがとうございます!! 教えていただいた「with」で挟むコードにしたところ、
    3.4秒 ⇒ 2.18秒 になりました。 10分も早く処理できました!!

    やはり、同じ参照のところはWithでくくったほうが断然早くなるのですね。
    とても勉強になりました。ありがとうございました。

    コメント by Shiro — 2012年10月19日 @ 10:03 AM | 返信

    • すみません。

      何が関係しているのかよくわからないのですが、実行するたびに処理が早くなり、
      今では1件処理するのに0.64秒で処理できるようになりました。
      500件を処理するのに5分30秒ほどで終わるようになりました。

      とにかく、「With」で囲んで信じられないほどの効率化ができました。
      ありがとうございました。

      コメント by Shiro — 2012年10月19日 @ 3:13 PM | 返信

  195. お世話になります。 outlook 2010とExcel2010のVBAを使い、メールの送受信の自動処理を行っています。
    .SendAndReceive メソッドの送受信を実行させる部分で「次のサーバーのアカウント名とパスワードを入力してください」のパネルが表示されることがあり困っています。一度このパネルが表示されると、「OK」ボタンを押して、すぐに同じパネルが表示され、次に進むことができません。
    このパネルに設定されているサーバー名、パスワードを再入力しても結果は同じです。
    結局、outlook2010を再起動しない限り解決できません。

    せっかくもう少しでVBAで完全自動化できたのですが、この問題のために、常に人が状況を監視していないと運用できない状態で困っております。

    下記の工夫をしてみましたが、頻度は減ったものの、1、2時間でこの問題が発生してしまいます。

    やったこと

    outlookの設定を下記のように変更した。
    1.「予定された送受信を無効にする」 を有効に設定
    2.「次の時間ごとに自動的に送受信を実行する」のチェックを外す

    また、.SendAndReceiveの実行の頻度を5秒ごとにすると、1,2分以内に発生します。10秒にすると1、2時間ぐらいで発生するようです。実行の頻度を減らせば改善できそうですが、確率の問題であって、結局、いつ発生するかわからないため、自動運用ができない状態です。

    メールサーバー側の問題かとも思いましたが、いったん発生するとoutlookを再起動しないと解決できない、ということから、outlookの問題なのか、とも思ったりしています。

    解決方法、または、問題の回避方法はないでしょうか。

    尚、メールサーバーは、@yahoo.co.jp です。

    コメント by Lock — 2012年10月29日 @ 2:48 AM | 返信

    • 推測となりますが、Outlookの送受信間隔は最低でも1分であるため、5秒おきや10秒おきという極めて短期間で送受信を定期的に繰り返すというような使用方法は想定されていないのではないかと思います。
      とりあえず、1分間隔にして現象が発生するかどうか確認してみてください。

      コメント by outlooklab — 2012年10月29日 @ 12:58 PM | 返信

      • outlooklabさん、返信ありがとうございます。
        原因としては、送受信処理が完了する前に、別の送受信の要求(.SendAndReceive)が実行されたときに発生するようです。(Outlookの「次の時間ごとに自動的に送受信を実行する」のチェックを有効にしておくと、非常に高い頻度で発生する)。
        .SendAndReceive メソッドは、非同期実行になっているようです。(VBEでステップイン F8)させると送受信が完了していないのに次のステップが選択される)。
        この.SendAndReceiveメソッドの実行を”同期”実行(つまり、送受信が完了したら制御がcallerに戻る)にすることはできないでしょうか。
        あるいは、.SendAndReceiveを呼んだあと、送受信が完了したことを示すoutlookのどこかのプロパティをDo Loopで監視して待ってから、次の.SendAndReceiveを実行するようにするとか。
        そのようなプロパティはないものでしょうか。
        よろしくお願いいたします。

        コメント by Lock — 2012年10月30日 @ 4:34 AM

      • SendAndReceive メソッドを同期実行にすることはできませんが、SyncObject の SyncEnd イベントで送受信の完了は確認できるでしょう。

        コメント by outlooklab — 2012年11月13日 @ 12:33 PM

  196. お世話になります。
    outlook2003で、メール送信時に添付ファイルのサイズを表示させるマクロを希望しえおります。
    検索していたところ、下記を見つけ早速動かしてみたのですが、上手くいきません。

    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim I As Long
    For I = 1 To Item.Attachments.Count
    MsgBox I & “番目の添付ファイル” & Item.Attachments(I).Size & “バイト”
    Next
    End Sub

    『実行時エラー438
    オブジェクトは、このプロパティまたはメソッドをサポートしていません。』

    テスト時には、Excel 、またはWordをひとつ添付しています。
    良い方法があればご教示いただけますでしょうか。

    お手数おかけします。
    どうぞよろしくお願いいたします。

    コメント by comecco — 2012年11月8日 @ 2:21 PM | 返信

    • Outlook 2003 では添付ファイルのサイズを取得することはできません。
      Outlook 2007 以降をお使いください。

      コメント by outlooklab — 2012年11月13日 @ 12:42 PM | 返信

      • やはりそうでしたか。
        お手数おかけいたしました。
        ご回答ありがとうございました。

        コメント by comecco — 2012年11月14日 @ 3:19 PM

  197. いつもお世話になっております。
    現在、会社内のPCをWindows7に切り替えているのですが、その際にメーラーがOutlookExpressからOutlookに合わせて
    切替をしております。その際に、アドレス帳の移行として、一度csvに出力し、outlook側でインポートしているのですが
    当たり前の話ですがフォルダ構成とグループ登録は消失してしまいます。
    どうにかこのフォルダ構成、グループ登録をいかしたままOutlookへの移行ができないか試行錯誤しております。
    何かより手はないでしょうか。

    コメント by yoshimasa — 2012年11月14日 @ 9:06 PM | 返信

    • 残念ながら、フォルダ構成やグループの情報を Outlook Express から Outlook にインポートするという方法はないようです。

      コメント by outlooklab — 2012年11月21日 @ 1:01 PM | 返信

  198. OUTLOOK2003/2007/2010にて、
    連絡先へCSVファイルからインポートを行いたいのですが、
    手動でならわかるのですが、
    対応ユーザ及び頻度の多さから何とか自動で行いたいと思っております。
    何か手段等ありましたら教えて頂きたく、よろしくお願い致します。

    コメント by 菊地 — 2012年11月16日 @ 12:17 PM | 返信

    • CSV ファイルの内容を解析し、連絡先アイテムを作成するというマクロを作れば自動化はできるかもしれません。

      コメント by outlooklab — 2012年11月21日 @ 1:05 PM | 返信

      • コメントありがとうございます。
        やはり簡単には出来ない感じですね。
        暫くは手動で対応して様子を見る事にします。

        コメント by 菊地 — 2012年11月21日 @ 1:22 PM

  199. アウトルック2003を使っています。
    グローバルアドレスから『ある会社(A社)を指定して検索するマクロ』を作りたいのですが、コードを教えて下さい。
    宜しくお願いします。

    コメント by ペンネーム船長 — 2012年11月25日 @ 8:55 PM | 返信

    • 残念ながら Outlook 2003 のオブジェクト モデルではグローバルアドレス一覧で会社名を指定して検索することはできません。
      CDO 1.21 というものを使えば可能ですが、検索した結果をどうするのでしょうか?

      コメント by outlooklab — 2012年11月28日 @ 12:43 PM | 返信

      • A社の検索そのものをマクロボタンに登録したいのです。
        [新規作成(N)]⇒[宛先]⇒[名前を表示するアドレス一覧(S)=グローバルアドレス一覧]⇒[詳細(V)]⇒[検索(D)]⇒[表示名(D)=A社]
        以上をマクロボタン一つで操作したいのです。

        コメント by ペンネーム船長 — 2012年12月1日 @ 11:05 AM

  200. メール誤送信対策で参考にさせていただき、ダイアログ表示などのプロトタイプを作ったところ「送信時に自動暗号化の上、2通目にパスワード送付するメールを自動生成する」ようなことはできないか、という話があがっています。Zipファイル圧縮の例は確認できましたが、その際に暗号化するなどの対応は可能でしょうか?

    コメント by mobazou — 2012年11月28日 @ 3:23 PM | 返信

    • Windows の標準機能では Zip ファイルにパスワードをかけることができません。
      そのため、Zip ファイルにパスワードをかけることができる何らかのアプリケーションと併用しない限り、このようなことはできません。
      マクロで実装することは極めて困難と思われます。
      そのようなことを可能にするサードパーティ製の Outlook 用アドインもあるのではないかと思いますので、そういったものを使用されることをお勧めいたします。

      コメント by outlooklab — 2012年11月30日 @ 12:31 PM | 返信

      • そうでしたか・・・ アドバイスありがとうございます。アドイン等マクロ以外の方法を検討してみます。どうもありがとうございました。感謝。

        コメント by mobazou — 2012年11月30日 @ 1:08 PM

  201. outlook2003 SP1をexchangeで使用しております。
    マクロで予定表の共有にアクセス権を追加したいと思っているのですが、
    いい方法が見つかりません。

    良い方法がありましたら、お教え願えますでしょうか?

    コメント by FUJI — 2012年11月28日 @ 6:07 PM | 返信

    • 残念ながら、Outlook のマクロではアクセス権の設定を行うことができません。
      Exchange の API を使用すればできるかもしれません。

      コメント by outlooklab — 2012年11月30日 @ 12:35 PM | 返信

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

        今回はあきらめることにします。

        コメント by FUJI — 2012年12月1日 @ 12:27 PM

  202. Outlook2007で、複数の予定表を使い分けているのですが、事情があってデフォルトの予定表(”予定表”)と別の予定表(”仕事”)を同期したいと思っています。

    最初の方針として、デフォルトの予定表をいったんicsファイルで書き出してローカルに保存し、それを予定表(仕事)にインポートするということを考えました。この方法なら、予定のコピーだけでなく、修正された予定の変更もできるはずです。しかし、Outlookでファイルからのインポートを行うと、インポートされた予定はデフォルトの予定表に取り込まれてしまいました。特定の予定表を指定して、そこにicsファイルからインポートすることはできないのでしょうか。また、もしできるのなら、マクロでその作業を行う方法をお教え下さい。なおicsファイルに書き出すマクロはすでにあります。

    icsファイル経由が難しければ、デフォルト予定表からアイテムを一つずつコピーするのが次善の方針と思います。それぞれのフォルダを取得するコードは、Outlookのヘルプ等からなんとか見つけたのですが、アイテムをコピーするコードが分かりません。お教えいただけますとありがたく思います。望ましくは、単なるコピーではなく同期(予定の削除や変更も反映)できるとよいのですが、これは無理なのでしょうか。

    コメント by 山谷 純 — 2012年12月4日 @ 8:33 AM | 返信

    • やりたいことは既定の予定表から別の予定表への予定のコピーということでよいでしょうか?
      単なるコピーではなく同期となると、たとえば別の予定表にコピーする際にあらかじめ「既定からコピー」というような分類項目を付けておき、次回のコピーの際には以前コピーしたアイテムをいったん削除してからコピーするというような方法が考えられます。
      これならマクロにできますがどうでしょうか?

      コメント by outlooklab — 2012年12月6日 @ 12:12 PM | 返信

      • はい、既定の予定表から別の予定表へのコピーです。Keep it simpleということで、単純なコピーで行かせてください。

        ところで、icsファイルから既定以外の予定表にインポートする機能は、OUTLOOK2007にはないのでしょうか。

        コメント by 山谷 純 — 2012年12月7日 @ 12:02 AM

  203. 理由があって、あえて送信トレイの自動送信を利用せず(送受信間隔を1440とかに設定する)、送信トレイにたまったメールのQUEを自分(マクロ)でOPENし、送信ボタン押下(マクロ)でメールを送信させるか
    マクロというのは作成可能でしょうか。

    コメント by moumoonman — 2012年12月5日 @ 1:29 AM | 返信

  204. 質問です。
    Body から特定文字列の直後にある日付文字列を利用して、アラームを設定しようとしています。
    下記の作業はVBAで記述することはできますでしょうか。

    —–
    Body 内の[特定文字列]を含む行を検索し、[特定文字列+コロン]をトリムする。

    検索したい行のフォーマット
    → :

    欲しい情報
    → 
    —–

    これがVBAで記述できれば自分がやりたいことの実現に近づくのですが、理想のサンプルが見つかりません。
    もし、記述できるのであればご教示いただけますでしょうか。
    よろしくお願いいたします。

    コメント by mino_s2000 — 2012年12月13日 @ 1:41 PM | 返信

    • 一部情報が欠けているので修正します。

      —–
      Body 内の[特定文字列]を含む行を検索し、[特定文字列+コロン]をトリムする。

      検索したい行のフォーマット
      → [特定文字列]:[yyyy/mm/dd]

      欲しい情報
      → [yyyy/mm/dd]
      —–

      コメント by mino_s2000 — 2012年12月14日 @ 11:15 AM | 返信

      • 以下でどうでしょうか?
        Item.Body = Replace(Item.Body, “[特定文字列]:”, “”)

        コメント by outlooklab — 2012年12月14日 @ 1:01 PM

  205.  簡単なはずなのにわかりません。
     マクロで『送信済みアイテム フォルダにメッセージのコピーを保存する』をオフにする方法がわかりません。
     どのオブジェクトのなんていうプロパティか教えてください。

    コメント by わや — 2012年12月15日 @ 2:51 PM | 返信

    • MailItem オブジェクトの DeleteAfterSubmit です。これを True にすると送信後にアイテムを送信済みアイテムに保存せず、削除する動作となります。

      コメント by outlooklab — 2012年12月17日 @ 1:01 PM | 返信

      •  ありがとうございました。希望通り動作します。助かりました。

        コメント by 匿名 — 2012年12月17日 @ 3:31 PM

  206. 204で返信できなかったためこちらに書きます。

    説明不足でした。

    Bodyには所謂メール本文が記されていて、その中の特定の1行を検索したい、
    という意味で質問をいたしました。

    Bodyに検索したい1行のみ記されていれば、ご回答のような記述で問題ないのは確かです。

    言葉足らずでした。
    ご回答お待ちしております。

    コメント by mino_s2000 — 2012年12月17日 @ 9:02 AM | 返信

    • 本文内に [特定文字列]: という文字列がほかにもあるということでしょうか?
      その場合は、以下でどうでしょうか?

      Item.Body = Replace(Item.Body, “→ [特定文字列]: [“, “→ [“)

      もし→ が行頭になければならなかったり、[yyyy/mm/dd] のフォーマットも解釈しなければならないとなると、解析のためのロジックは複雑になります。
      Instr や Left、Mid などを組み合わせれば実現は可能とは思いますが、その場合はルールをもう少し厳密かつ明確にしていただかないとコードに落とせません。
      まずは上記のような記述でご要望を満たせないかご確認いただけますでしょうか?

      コメント by outlooklab — 2012年12月17日 @ 12:51 PM | 返信

      • 文章作成能力が低くて申し訳ありません。
        伝わっていないようですので、もう一度説明します。
        何度も何度も申し訳ありません。

        下記のようなテンプレート化されたメールを受信した際に、
        「Action Date:yyyy/mm/dd」の「yyyy/mm/dd」をアラームで利用したいと思っています。

        ご教示くださった Replace メソッドでは、Body の他の文章も含まれてしまいます。

        —————————————
        From: sender@xxx.com
        Subject: 【hogehoge】xxxxxxxxxx
        Body:
        xxx 様

        xxxxxxxxxxxx。
        xxxxxxxxxxxxxxxxxxx、
        xxxxxxx。

        xxxxx:xxxxx
        xxxxx:xxxxxxx
        Action Date:yyyy/mm/dd
        xxxxx:xxxxxxxxx
        xxxxxxxx:xxx

        以上。


        Sender’s Signature

        ——————————————

        何卒よろしくお願いいたします。

        コメント by mino_s2000 — 2012年12月18日 @ 4:31 PM

      • ご要望を適切に理解できずにすみません。
        そのようなことであれば、以下の記述で実現可能でしょう。

        strBody = Item.Body
        strDate = Mid(strBody, Instr(“Action Date:”) + 12)
        strDate = Left(strDate, Instr(strDate, vbCrLf) – 1)

        このようにして取得した strDate をアラームに使用することができます。

        コメント by outlooklab — 2012年12月19日 @ 1:02 PM

      • ありがとうございます。
        おかげさまで、希望のマクロを作成することができました。
        この度はありがとうございました。

        コメント by mino_s2000 — 2012年12月21日 @ 4:22 PM

  207. はじめまして。英語のサイトも探してみたのですが、なかなかうまくできないので、お知恵を拝借させて頂きたくご連絡致しました。

    Outlook2010ですが、ネットワークドライブ上に置かれた20個程のPSTファイルを全てOpenするマクロまたはVBAを組みたい、というものですが、可能でしょうか?

    LANの不具合でネットワークドライブが外れた際に、OpenしていたPSTファイルが全て外れてしまい、毎回手動でOpenしなければならず、、
    何卒、何卒宜しくお願い申し上げます。

    コメント by Keiko Shimokoshi — 2012年12月18日 @ 1:15 PM | 返信

  208. はじめまして。
    Outlook2010を使用しています。
    ほぼ1年前の124のコメントで「ある」さんが書かれていますが、私も送信してみないと折り返しの状況がわからないのは大変不便に感じています。
    「ある」さんのご要望は送信前のプレビューでしたが、いっそのことVBAで強制的に改行させることはできませんでしょうか?
    使い方としては、
     1.普通にメールを作成
     2.整形したい部分を範囲選択
     3.マクロ実行で、その部分を整形(折り返し桁数で改行)
     4.必要に応じて修正
     5.メールを送信
    のような感じです。
    高機能な整形は不要で、単純に強制改行させるだけで良いのですが、マクロのご検討をお願いできませんでしょうか?

    コメント by HiTaK — 2012年12月21日 @ 3:52 PM | 返信

    • 範囲選択は必要でしょうか?
      もし範囲選択をするとなると、Outlook ではなく Word のオブジェクトモデルを使用する必要があり、マクロが複雑になります。
      本文全体ということであれば、検討してみます。

      コメント by outlooklab — 2012年12月25日 @ 7:03 PM | 返信

      • 本文全体で結構です。
        ご検討よろしくお願いします。

        コメント by HiTaK — 2012年12月25日 @ 11:06 PM

  209. お世話になります。OUTLOOK(2003)でメールのフォームをカスタマイズし、フォームライブラリに登録し、このフォームで受信したメールをAccess VBAでDB化することを考えています。ここで、カスタマイズ追加したテキス卜ボックス(TextBox1など)を、VBAから参照したいのですが、方法がわかりません。
    既存のパーツ(発信者・件名・内容など)の参照は、MAPIでできることは理解しています。
    試しに下記のように書いても、「このプロパティまたはメソッドをサポートしていません」のエラーとなります。
    【例】※Microsoft DAO3.6とOUTLOOK 11.0 Object Libraryの参照設定済み
    Set myNaSp = GetNamespace(“MAPI”)
    Set myFolder = myNaSp.GetDefaultFolder(olFolderInbox)
    For myindex = 1 To myFolder.Items.Count
    Set myItem = myFolder.Items(myindex)
    Msgbox myItem.Subject ‘OK:件名が表示できる
    Msgbox myItem.Body ‘OK:メール内容が表示できる
    Msgbox myItem.TextBox1 ‘NG:こう書いてもエラーになる

    メールフォームにカスタマイズ追加したコントロールの参照方法がありましたら、ご教示頂ければ幸いです。(MS Office環境は2003です)

    コメント by ひでひで — 2012年12月21日 @ 9:46 PM | 返信

    • メールフォームにただ単にコントロールを貼り付けただけでは、その内容はメール送信後に失われます。
      コントロールに入力されたデータを保持する必要がある場合、そのコントロールとユーザー定義フィールドを関連付け、データの取得・設定にはユーザー定義フィールドを使用します。
      詳しくは http://msdn.microsoft.com/ja-jp/library/aa155722(v=office.10).aspxをご参照ください。バージョンは古いですが、カスタムフォームの作り方などはほとんど変わっていません。

      コメント by outlooklab — 2012年12月25日 @ 7:10 PM | 返信

      • ご教示ありがとうございました。トライしてみます。

        コメント by ひでひで — 2012年12月27日 @ 10:37 PM

  210. アウトルックに不慣れな者です。
    あるホームページに載っていたコードを参考に、以下のようなマクロを作成しました。(エクセルのワークシートにコマンドボタンを作成しています。)

    【依頼】このようにして添付した添付ファイルを一括で削除したいのですが、どのようなコードを作成すれば良いのか教えて下さい。
    (複数のファイルを添付した場合でも一括で削除したい。そんなコマンドボタンを作りたい。)

    Private Sub CommandButton1_Click()
    On Error Resume Next ‘⇒エラーが出ても無視してそのまま処理を続ける
    Dim パス As String

    パス = Range(“J18”).Value’⇒セルJ18に添付したいファイルのパスが記載されている

    ThisWorkbook.Activate
    ‘このブックのワークシート上のセルを選択する
    ActiveSheet.Range(“A1:I16”).Select ’⇒セルA1~I16の範囲に本文が記載されている

    ‘OutLookと連携させる
    ActiveWorkbook.EnvelopeVisible = True

    With ActiveSheet.MailEnvelope
    .Item.To = “●●●●●●@●●●.so-net.ne.jp” ‘送信先アドレス
    .Item.Subject = “◎◎◎◎◎の件” ‘タイトル
    .Item.Attachments.Add (パス) ‘ファイルを添付
    End With

    End Sub

    コメント by ペンネーム船長 — 2013年1月6日 @ 10:15 PM | 返信

    • アイテムに添付したファイルをすべて削除するのであれば、以下のようになります。
      With Item.Attachments
      For i = .Count To 1 Step -1
      .Remove i
      Next

      あるいは、添付した後にディスク上からそのファイルを削除するということだと、Outlook のオブジェクトモデルでは実現はできません。
      FileSystemObject を使用して削除することになるかと思います。詳細は、http://msdn.microsoft.com/ja-jp/library/cc427994.aspx を参照してください。

      コメント by outlooklab — 2013年1月7日 @ 1:03 PM | 返信

  211. 以下のように記述したのですが、「オブジェクト変数またはWithブロック変数が設定されていません」のエラーが出ます。
    正しいコードを教えて下さい。

    Private Sub CommandButton1_Click()

    Dim Item As Object
    Dim Attachments As Object
    Dim i As Integer

    With Item.Attachments
    For i = .Count To 1 Step -1
    .Remove i
    Next
    End With

    End Sub

    コメント by ペンネーム船長 — 2013年1月10日 @ 10:30 AM | 返信

    • Item には削除したい添付ファイルがあるアイテムを指定します。
      以前いただいたコードでは ActiveSheet.MailEnvelope.Item に添付ファイルを追加していたようですので、その添付ファイルを削除するということであれば以下のようになります。

      With ActiveSheet.MailEnvelope.Item.Attachments
      For i = .Count To 1 Step -1
      .Remove i
      Next
      End With

      コメント by outlooklab — 2013年1月10日 @ 12:10 PM | 返信

  212. 以下のコードでやりたいことが出来ました。

    有難う御座いました。

    Private Sub CommandButton1_Click()
    Dim i As Integer

    With ActiveSheet.MailEnvelope.Item.Attachments
    For i = .Count To 1 Step -1
    .Remove i
    Next
    End With

    End Sub

    コメント by ペンネーム船長 — 2013年1月10日 @ 1:01 PM | 返信

  213. はじめまして
    最近Outlook2010を使い始めました。
    VBAを活用するときなどに参考にさせて頂いています。

    後述の2つの記事を参考にしつつ、転送ボタンを押したときに作成されるメールの本文の先頭に、
    日付と時間を挿入しようとしています。
    しかし、転送ボタンを押したときに作成されるメールの本文を変えようとすると、Outlook2010が
    転送用に新たに作成したメールの本文ではなく、転送元のメールの本文を書き替えようとして
    しまうようです。

    転送メールのSubjectの変更には成功していますので、間違ったオブジェクトにアクセスしている
    わけではないと思うのですが、本文は変更できないなどの制限があるのでしょうか。

    コードは以下の通りです。
    アドバイスを頂けると幸いに存じます。

    Private WithEvents myInspectors As Outlook.Inspectors

    Private Sub Application_Startup()
    Set myInspectors = Application.Inspectors
    End Sub

    Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)
    If TypeName(Inspector.CurrentItem) = “MailItem” Then
    Dim objMail As MailItem

    Set objMail = Inspector.CurrentItem

    If Left$(objMail.Subject, 3) = “FW:” Then
    objMail.Subject = “TEST:” & objMail.Subject
    objMail.Body = “TEST:” & vbCrLf & objMail.Body
    End If
    End If
    End Sub

    [記事1]
    https://outlooklab.wordpress.com/2008/06/14/%E8%BB%A2%E9%80%81%E3%83%BB%E8%BF%94%E4%BF%A1%E6%99%82%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AE%E4%BB%B6%E5%90%8D%E3%82%84%E6%9C%AC%E6%96%87%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB/

    [記事2]
    https://outlooklab.wordpress.com/2009/03/07/%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AE%E8%BF%94%E4%BF%A1%E3%80%81%E8%BB%A2%E9%80%81%E6%99%82%E3%81%AB%E6%9C%AC%E6%96%87%E3%81%AE%E5%85%88%E9%A0%AD%E3%81%AB%E6%97%A5%E4%BB%98%E3%81%A8/

    コメント by ちゃすけ — 2013年1月19日 @ 10:40 PM | 返信

    • 確かに、転送時の NewInspector イベントだと転送元のメールの本文が変更されてしまいますね。
      MailItem の Forward イベントで変更してみましたが同様でした。
      転送メールの準備中に発生するイベントの中だと本文のひも付けがうまくできていないのかもしれません。
      回避策を検討してみます。

      コメント by outlooklab — 2013年1月24日 @ 10:16 PM | 返信

  214. はじめまして。
    大変初歩的な質問かと思うのですが、宜しくお願いします。

    excelからoutlookの新規メールをを作成し、
    件名に「件名」
    本文に「本文」
    を入力。

    名前の選択ダイアログを表示して、
    検索欄に「宛先(アドレスでなく名前)」
    を入力する。

    というマクロを組みたいのですが、
    わからない点がいくつかあります。

    自宅のoutlookで以下のコードを実行したところ、
    名前の選択ダイアログの表示までは行うことができたのですが、
    検索欄への入力を行うコードがわからず、
    目的を達せていない状況です。

    最終的には、勤務先の
    outlook+ExchangeServer(?)の環境で実行したいのですが、
    同様のコードを実行すると、
    名前の選択ダイアログを表示できずエラーとなってしまいます。

    TO(宛先)ボタンに設定されている、
    ダイアログの名前を調べる方法はどのようにしたら良いのでしょうか?
    「TOボタンで表示されるダイアログ」の様な指定ができるのでしょうか?

    また、ダイアログの検索のテキストボックスを指定するには、
    どうしたら良いのでしょうか?

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

    Sub メール開く()

    Set OlApp = CreateObject(“Outlook.Application”)
    Set myItem = OlApp.CreateItem(olMailItem)
    myItem.display

    myItem.Subject = “題名”
    myItem.body = “本文”

    Set snd = OlApp.session.GetSelectNamesDialog()←ここがエラーになる

    ????=”宛先”←ここが不明

    snd.display

    End Sub

    コメント by mota — 2013年1月25日 @ 2:54 AM | 返信

    • 残念ながら、名前の選択ダイアログの検索文字列の初期値を設定することはできません。

      コメント by outlooklab — 2013年2月1日 @ 12:20 PM | 返信

      • ご返答ありがとうございました。できるのではないかと時間を使ってしまっていたので、できないとわかり助かりました。

        コメント by mota — 2013年2月4日 @ 12:43 AM

  215. いろいろと調べてみたのですが、どうしてもわからず、貴サイトに質問させて戴くことにしました。
    初歩的な質問かと思うのですが、ご教示をお願いいたします。

    今日の日付を調べて、翌週の月曜日から4週間分の予定表を印刷するマクロを作りたいと考えています。
    自分なりにあれころ調べてみて、“AppointmentItem.PrintOut”が予定表印刷に関係ありそうだというのは突き止められたのですが、そのメソッドに必要なパラメータ(印刷開始日とか)を解説したサイトが、見つけられませんでした。
    もしお手数でしたら、○○のサイトに出ているといった情報でもかまいません。
    またもし、別の手法があるようでしたら、そちらを教えていただくことになるのかもしれません。

    ちなみにOutlookのバージョンは2007です。
    どうぞよろしくお願い申し上げます。

    コメント by zaki — 2013年2月1日 @ 11:22 AM | 返信

    • AppointmentItem の PrintOut は予定単体を印刷するためのメソッドであり、週間予定表のようなものを印刷するメソッドは Outlook には用意されていません。
      方法がほかにあるかは検討してみます。

      コメント by outlooklab — 2013年2月1日 @ 12:50 PM | 返信

      • 当方の不勉強なお願いにもかかわらず、ご丁寧な回答をいただき、ありがとうございました。
        そもそもメソッドが用意されていないんですね。ぜんぜん見当違いの調査をしていることがわかりましたので、これはこれで私にとっては、長足の進歩だと言えます。
        他の方法を検討くださる、とおっしゃっていただいたので、あせらず自分でも引き続きやり方を模索してみたいと思います。
        (かなり知識不足ではありますが)
        重ねてお礼を申し上げます。ありがとうございました。

        コメント by zaki — 2013年2月5日 @ 4:16 PM

  216. Outlook2010 の VBA で困っています。 マクロ の記録からしかプログラミングしたことがないので、どのような変数があって設定をすればいいのかがわかりません。
    やりたいことは、連絡先に複数のサブフォルダが設定されていたり、連絡先候補と同様に連絡先の並びに複数の連絡先フォルダが追加されて細かくアドレスを分類されている状態で、Outloookアドレス帳に一切表示されていない状態から、各フォルダのプロパティのOutlookアドレス帳タブにある、電子メールのアドレス帳にこのフォルダーを表示すると言うチェックボックスにチェックを入れたいのです。
    自分で何とか探せたのは連絡先のサブフォルダの名前を表示してみるところまでです。
    プロパティの設定の方法や、連絡先の並びのフォルダの選択の仕方等を教えていただけると幸いです。

    コメント by masa — 2013年2月11日 @ 8:49 AM | 返信

    • 連絡先フォルダーを表す Folder オブジェクトの ShowAsOutlookAB プロパティを True にすると連絡先をアドレス帳に表示できます。
      ただ、連絡先の表示の並びは残念ながら変更できません。

      コメント by outlooklab — 2013年2月18日 @ 10:30 PM | 返信

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

        > ただ、連絡先の表示の並びは残念ながら変更できません。
        質問が判り難くてすみません。連絡先の並べ替えと言う意味ではなく、連絡先候補と同じように連絡先と並列で登録されているフォルダという意味でした。
        連絡先フォルダは「OlFolderContacts」、連絡先候補は「OlFolderSuggestedContacts」と指定して取れるのですが、ユーザーが指定したフォルダの場合、どうやって取ったらいいのかという事を書いたつもりでした。

        連絡先フォルダとその下の階層のフォルダについてはお応えいただいたプロパティ変更でやってみようと思います。
        引き続き、並列のユーザー指定フォルダの取得方法をご教授頂ければと思います。

        コメント by masa — 2013年2月18日 @ 10:42 PM

      • 既定の連絡先フォルダーと同じレベルのフォルダーを取得するには、連絡先フォルダーの Parent プロパティで親フォルダーを取得し、そのフォルダーの Folders コレクションからフォルダーを探すという処理が必要になります。
        取得したフォルダーが連絡先かどうかは DefaultItemType が olContactItem かどうかで判別できるでしょう。

        コメント by outlooklab — 2013年2月19日 @ 12:22 AM

      • 最後に頂いたコメントに返信のリンクが付いていなかったのでこちらに返信させていただきます。

        お答えいただいた方法でカレントユーザーの連絡先の情報は無事取得できました。
        たまたま、複数のアカウントが登録されていて別アカウントの連絡先の情報の取得に悪戦苦闘していましたが、こちらも .GetNameSpace(“MAPI”) を使用すると言う方法が判り解決しました。
        (これを使うとせっかく教えていただいたParentから並列のフォルダを追跡する方法は使わなくなりましたが)
        お陰様で意図するマクロを作れましたし、大いに勉強させていただきました。
        本当にありがとうございました。

        コメント by masa — 2013年2月21日 @ 1:15 AM

  217. OUTLOOK2010を会社で使用していて、行頭インデント文字のことで困っているので、お知恵を頂戴いたしたく。

    昨年11月まで、社内メールではNotesを使用していましたが、その後メールシステムはOffice365に
    変更になりましたが、社内の大半の方は従来通り文字装飾等を行うために、何の装飾もないメールでも
    HTML形式やリッチテキスト形式でメール送信が行われています。

    しかし、私個人は文字装飾されたメールが見づらいために、これらメールに対してもテキスト方式に
    変換して返信行うのですが、その変換の際に行頭のインデント文字が削除されてしまいます。

    そこで、そもそもテキスト変換時にインデント文字の削除が行われない方法、あるいは、後から
    インデント文字を挿入するマクロ等で実現する方法を探しましたが、見つけることができませんでした。

    私自身が不勉強なだけかも知れませんが、もし上記いずれかの手段をご存知でしたらお教え願います。

    よろしくお願いします。

    コメント by TAKESHIKO — 2013年2月11日 @ 10:23 PM | 返信

    • そもそも、HTML やリッチテキストでは文字のサイズが一定ではなく、画像や表の埋め込みなども可能であり、メールの折り返しを行うというのは極めて困難です。
      そのため、HTML やリッチテキストではインデント記号を挿入するというオプションを設定していたとしても、実際には埋め込むのは記号ではなくインデントを表す書式となり、折り返される位置は表示側で決まる動作となります。
      これをマクロでどうにかするのは非常に難しいと思います。

      コメント by outlooklab — 2013年2月18日 @ 11:42 PM | 返信

  218. このサイトに記載されている皆さまの会話が理解できないレベルなので躊躇されましたが藁をつかむ思いで書き込んでおります。

    Quitとだけメール本文に書かれているメールが、送られるという現象が多発しています。
    送り先は、直前に送ろうとしていたメールのあて先で、どうやら、皆、送信保留となったために送信トレーを開いて
    何回か送信ボタンを押したらしいのですが、はっきりしたことはよくわかりません。
    原因あるいは、対策をご存知でしたらお教えいただけないでしょうか。

    何卒よろしくお願いいたします。

    コメント by QuitQ — 2013年2月18日 @ 1:50 PM | 返信

  219. 218 QuitQです Outlook2007を使用しております

    コメント by QuitQ — 2013年2月18日 @ 1:53 PM | 返信

    • 現象が発生する際に、以下のようなエラーは出ていませんか?

      タスク ‘アカウント名- 送信’ エラー (0x800CCC13) を報告しました: ‘ ネットワークに接続することはできません。ネットワーク接続かモデムを確認します ‘。

      この場合、下記の修正プログラムの適用で現象を回避できるかもしれません。
      http://support.microsoft.com/kb/2596845 Outlook 2007 修正プログラム パッケージ (Outlook の x-none.msp) の説明: 2012 年 12 月 11 日

      コメント by outlooklab — 2013年2月18日 @ 11:45 PM | 返信

      • お返事ありがとうございます。エラーメッセージが出た と言っていましたので、確認してみます。QuitQ

        コメント by 匿名 — 2013年2月19日 @ 10:28 AM

      • 218QuitQです。エラーメッセージはそのとおり!という人がいるのですが、修正プログラムはすでに適用済みでございました。
        開封確認要求もしていない人もいました。送信トレーを開いて、複数回送信した ということ以外共通点がみつかっておりません。
        ご報告いたします。

        コメント by 匿名 — 2013年2月20日 @ 11:52 AM

      • エラーメッセージは、ひとりからそのとおりという回答があったのですが、修正プログラムが適用済みであることがわかりました。
        ご報告まで

        コメント by 匿名 — 2013年2月20日 @ 4:06 PM

  220. コメント191で質問させていただいた者です。
    結局、原因や直接の回避策は判らないままですが、
    「Outlook Object Model で本文の編集のために Word の機能を呼びだすマクロ」
    を参考にさせていただき、Wordオブジェクトの方で文字置換することで回避できました。

    元の原因が不明なままでスッキリしませんが、とりあえず目的は達せられました。
    ありがとうございました。

    コメント by t-aizawa — 2013年2月20日 @ 12:42 AM | 返信

  221. 数時間調べたのですが、方法が見つからなかっため、教えていただければ幸いです。
    非常に基本的なところなのですが、開いているメール本文の任意の部分を選択した後で、マクロを起動すると、その選択文字列をstring型変数に代入するということをしたいと思っています。

    以下のような、
    myString = ActiveInspector.CurrentItem.Body
    ではなく、

    事前に選択した文字列を取得したいのです。

    例えば、メール内の住所部分をマウスで選択し、それを変数に入れるようなことがしたいのです。

    海外のフォーラムでは、Wordを開いてそこで処理して戻ってくる手法が一般的で、Outlook内でダイレクトに選択文字列を取得することができないようなのですが、いかがでしょうか?

    よろしくお願いします。

    コメント by TK — 2013年2月21日 @ 1:21 PM | 返信

    • Outlook のオブジェクトモデルでは現在表示している本文を取得することはできません。
      Outlook 2007 以降ならメールの表示を行う Word のコンポーネントの機能を利用し、取得することができます。

      コメント by outlooklab — 2013年2月22日 @ 12:53 PM | 返信

      • ご返信ありがとうございました。

        やはり、Outlook単独ではできないんですね。
        WordEditor経由でトライしてみようかと思います。

        コメント by TK — 2013年2月22日 @ 1:17 PM

  222. いつも有益な情報をありがとうございます。

    Windows8(64bit)でOutlook2013(最新パッチ適用済み)を使っています。
    ファイルが添付されたメールを受信すると、メール一覧の「サイズ」欄に表示されるサイズ値が、添付されているデータサイズの3~4倍になる現象(例:3MBが11MBになる)が起きて悩んでいます。(再現率100%)
    そのメールに対して、アクション→メッセージの編集で添付を削除すると、削除した添付ファイルのサイズ分は小さくなるのですが、依然として大きいサイズのままです。
    メッセージのプロパティでインターネットヘッダーを見ると、ヘッダーのほかに、本文やエンコードされた添付ファイルのデータが入っていて、これがサイズが大きい理由のようです。
    よく調べてみると、添付のないメールもインターネットヘッダーに本文のデータが入ってしまっています。
    2013を使い始めてしばらくの間は、この問題は起きていなかったような気がします。
    この問題を解決する方法はありますでしょか?

    以下は「やってみた」ことです。
    ・色々なアドレス、プロバイダーから送信するも、すべて同じ現象。(そのメールを他のメーラーで受信すると、正常なサイズで受信できる)
    ・Officeの「修復」&パソコン再起動を試すも変わらず。
    ・他のメールアドレスを使い新しいPSTに受信するアカウントを追加するも、同現象が発生する。
    ・Outlookのセーフモードでも同じ現象が発生する。
    ・受信によって大きくなってしまったメールを転送すると、正常なサイズ送信される。
    ・新規メッセージで添付を送信する場合は、正常なサイズ送信される。
    ・ウイルスチェック、スパイウェアチェックでは問題なし。
    ・ウイルスチェック、スパイウェアを無効にしても同現象が発生する。

    ・Outlookの設定を1からやり直すのが辛いので、再インストールは試していません。
    よろしくお願いいたします。

    コメント by もりぞう — 2013年2月23日 @ 5:04 PM | 返信

    • 自己レスです。【解決済み】

      Windows8上に、新しいユーザーアカウントを作成、ログイン後、Outlookに新しいアカウントを作成しメールを受信したところ、正常なサイズ表示で受信されました。
      そこで、OutlookのEXEやDLLに問題があるわけではなさそうと判断しまして(根拠なく)、関係ありそうなレジストリ情報を見ていたところ、
       HKEY_CURRENT_USER\­­Software\­­Microsoft\­­Office\­­15.0\­­Outlook\­­Options\­­Mail

       SaveAllMIMENotJustHeaders
      という名前が値 ”1”で存在していたので、それを”0″に変更してメールを受信したところ、「インターネットヘッダー」部分にDATAが入ることなく、正常なサイズで受信できるようになりました。
      なぜ、値が”1″になってしまったのかは、わからないです。

      コメント by もりぞう — 2013年2月25日 @ 6:03 PM | 返信

      • 情報ありがとうございます。
        確認してみましたが、SaveAllMIMENotJustHeaders を 1 にするような設定は Outlook のインターフェースには見つかりませんでした。
        何かわかったら記事にします。

        コメント by outlooklab — 2013年3月4日 @ 12:34 PM

  223. いつも大変お世話になっております。
    メールの返信および転送時について教えてください。

    OEでは、相手からの受信したメールを返信または転送した際に
    送信先の相手はそのメール内にあるccやtoなどのメールリンクが有効になっており
    アドレスを参照することができました。
    OUTLOOK2010では、メールリンクがすべてテキスト化されてしまい
    アドレスを参照することができません。

    この場合は、どのようにしたらリンクが残せるでしょうか。

    コメント by キムラ — 2013年2月24日 @ 10:16 PM | 返信

    • 残念ながら Outlook には返信・転送メールの本文に含まれるヘッダー内の宛先などをリンクにするという機能は無いようです。
      マクロでなら実現できるかもしれません。

      コメント by outlooklab — 2013年3月4日 @ 12:33 PM | 返信

  224. かじじ といいます

    早速ですが、質問させていただきます。

    VBAでやりたいことは、新規メール、転送、返信、全員に返信 ボタンを押したとき、一行目に
    【XXX社外秘】の文字列を入れるということです。
    貴サイトを調べると、よく似た機能のマクロがあるので参考にして、動かそうとしたのですが、
    ①文字列が表示されない。②署名が消えてしまう。になってしまいます。
    どのように実現したらよいのでしょうか?
    基本的な質問になってしまいましたが、よろしくアドバイスをお願いします。

    ‘——————
    ‘ 新しいインスペクタが開かれる際のイベントをハンドルするためのオブジェクトを宣言
    Dim WithEvents myInspectors As Inspectors ‘ 起動時に上記のオブジェクトに設定
    Private Sub Application_Startup()
    Set myInspectors = Application.Inspectors End Sub ‘ 新しいインスペクタが開かれた場合の処理
    Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)
    Dim strBody As String
    Dim objItem
    Dim s As Integer
    ‘ 開かれたアイテムを取得
    Set objItem = Inspector.CurrentItem
    If objItem.MessageClass = “IPM.Note” Then ‘ アイテムがメール
    If objItem.Sent = False Then ‘ アイテムが送信前
    objItem.Body = strBody
    s = InStr(1, strBody, “【XXX社外秘】”)
          s = InStr(1, strBody, “【XXX社グループ外秘】”)
         objItem.Body = strBody
    End If
    End If
    End Sub
    ‘——————

    コメント by かじじ — 2013年2月27日 @ 11:03 PM | 返信

    • NewInspector イベントのタイミングでは、Body プロパティで本文を変更しても、表示されるメッセージが変更されていない場合があるようです。
      下記の URL のマクロのように、Inspector の Activate イベントで追加するようにしてみてください。
      https://outlooklab.wordpress.com/2013/01/26/%e8%bb%a2%e9%80%81%e6%99%82%e3%81%ab%e6%97%a5%e4%bb%98%e3%81%a8%e6%99%82%e5%88%bb%e3%82%92%e6%9c%ac%e6%96%87%e3%81%ab%e8%bf%bd%e8%a8%98%e3%81%99%e3%82%8b%e3%83%9e%e3%82%af%e3%83%ad/

      コメント by outlooklab — 2013年3月4日 @ 12:37 PM | 返信

      • 回答ありがとうございます。
        早速、URLのマクロを動作させましたところ、転送ボタンをクリックしてもmyInspector_Activate()がコールされません。
        下記がそのコードですがHello World(1)は、表示されますが、Hello World(2)が表示されません。何が問題なのでしょうか?

        ‘——————
        ‘ 新しいインスペクタが開かれる際のイベントをハンドルするためのオブジェクトを宣言
        Dim WithEvents myInspectors As Inspectors
        ‘ 起動時に上記のオブジェクトに設定
        Private Sub Application_Startup()
        Set myInspectors = Application.Inspectors
        End Sub
        ‘ 新しいインスペクタが開かれた場合の処理
        Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)

        If TypeName(Inspector.CurrentItem) = “MailItem” Then
        If Inspector.CurrentItem Like “FW:*” Then
        MsgBox “Hello World(1)”
        ‘ Activate イベントを実行するための設定
        Set myInspector = Inspector
        End If
        End If
        End Sub

        Private Sub myInspector_Activate()
        Dim objItem As MailItem

        Set objItem = myInspector.CurrentItem
        ‘コメントを挿入
        MsgBox “Hello World(2)”
        myInspector.WordEditor.Application.Selection.TypeText Now
        Set myInspector = Nothing
        End Sub

        コメント by かじじ — 2013年3月6日 @ 9:28 PM

      • myInspector_Activate をハンドルするオブジェクトが定義されていないようです。
        以下の1行を先頭に追加してください。
        Dim WithEvents myInspector As Inspector

        コメント by outlooklab — 2013年3月7日 @ 12:53 PM

  225. お世話になります。
    送ったメールに添付がある場合、その送った宛先とccにメールを再送信するVBAを書きたいんですが
    どのように書けばいいのでしょうか。
    会社でOutlook2007をしているんですが、添付ファイルのパスワードを別途送るポリシーを送らないといけない為、非常に手間で困ってます。
    現在は手作業でメールを選択し、[メッセージ] タブの [その他のアクション] から[このメッセージを再送] を選択しています。
    是非、ご教示のほど、よろしくお願いします。

    コメント by umi — 2013年3月4日 @ 12:43 AM | 返信

    • これは、本文と添付ファイルを削除した再送機能をマクロで実装するということでしょうか?
      そういうことであれば検討してみます。

      コメント by outlooklab — 2013年3月4日 @ 12:39 PM | 返信

  226. プラスで決められたテンプレートまで適応してもらえたらもう最高です。
    可能な部分までで構いませんので是非、よろしくお願いします。

    コメント by umi — 2013年3月4日 @ 11:43 PM | 返信

  227. はじめまして
    受信済みのメールアイテムに対して、wordeditorで本文の文字列置き換えを行うと、エラーが出ます。
    受信済みのメールアイテムを開き[移動]ー[アクション]ー[メールの編集]を行った状態であれば、エラーは出ません。
    そこで、受信済みのメールアイテムを開き[移動]ー[アクション]ー[メールの編集]と同じ事をスクリプトで行うためにはどのようにしたら実現できるでしょうか。
    ご教示のほど、よろしくお願いします。

    コメント by 匿名 — 2013年3月5日 @ 2:25 PM | 返信

    • 以下を実行するとメッセージの編集ができるようになります。

      Application.ActiveInspector.CommanBars.FindControl(ID:=5604).Execute

      コメント by outlooklab — 2013年3月7日 @ 12:52 PM | 返信

      • ありがとうございます。
        ご教示いただいた、コードで無事目的を達成することが出来ました。
        先にバージョンを書くべきでしたが、Outlook2010の環境上手く行きました。

        コメント by 匿名 — 2013年3月11日 @ 1:46 PM

  228. よろしくお願いします。

    コメント by umi — 2013年3月8日 @ 12:48 AM | 返信

  229. かじじです

    224のアドバイス ありがとうございます。

    下記の様なコードにして、実行してみました。ほぼ希望の形になっているのですが、
    何回か、送信しているうちに、実行エラーが表示されてしまいます。「文書がロックされています・・・」
    エラーコードは4605だったと思います。デバックボタンを押すと本文に、コメントをセットしているラインが
    ハイライトになります。このコメントをセットしたあとに、後処理が必要ということはないでしょうか?

    ‘ ここをトリプルクリックでマクロ全体を選択できます。
    Dim WithEvents myInspectors As Inspectors
    Dim WithEvents myInspector As Inspector

    Private Sub Application_Startup()
    Set myInspectors = Application.Inspectors
    End Sub

    Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)
    If TypeName(Inspector.CurrentItem) = “MailItem” Then
    ‘転送時
    If Inspector.CurrentItem Like “FW:*” Then
    ‘ Activate イベントを実行するための設定
    Set myInspector = Inspector
    End If
    ‘返信時
    If Inspector.CurrentItem Like “RE:*” Then
    ‘ Activate イベントを実行するための設定
    Set myInspector = Inspector
    End If
    ‘新規
    If Inspector.CurrentItem Like “” Then
    ‘ Activate イベントを実行するための設定
    Set myInspector = Inspector
    End If
    End If
    End Sub
    ‘イベント起動(新規、返信、転送ボタン)
    Private Sub myInspector_Activate()
    Dim objItem As MailItem
    Const Header As String = “【XXX社外秘】” & vbCrLf & “【XXXグループ外秘】” & vbCrLf & “【秘密】” & vbCrLf

    Set objItem = myInspector.CurrentItem
    ‘ 本文にコメントを挿入

    myInspector.WordEditor.Application.Selection.TypeText Header ‘ <==== ここがハイライト
    ' イベント解除のための設定
    Set myInspector = Nothing
    End Sub

    コメント by かじじ — 2013年3月12日 @ 12:04 AM | 返信

    • エラーが出るアイテムは編集が可能な状態なのでしょうか?
      例えば、受信メッセージは本文が読み取り専用となっているため、受信メールについて本文にコメントを追加しようとするとエラーとなります。

      コメント by outlooklab — 2013年3月15日 @ 12:55 PM | 返信

  230. こんにちは
    またOutlook2010の設定項目に関してご教授下さい。
    Outlook2010のデータを移行してすぐの状態だと、メールの仕分けルールが全て「他のコンピュータ用」とか言う但し書きのようなものが付きます。
    コレを元の状態にしようとすると、仕分けルール設定の編集で「このコンピューターで送受信を行った場合のみ」のチェックを外す必要があります。
    (一度チェックを外すとこの設定項目自体が消えてしまいました。)
    または、一度設定をエクスポートしてから全て削除し、エクスポートした設定をインポートし直すと消えます。
    後者はちょっと強引なので、マクロでチェックを外す作業をさせようと思うのですが、設定自体何処の変数を触ればよいのか判りません。
    お知恵を拝借願えないでしょうか。

    コメント by masa — 2013年3月12日 @ 8:52 AM | 返信

    • 残念ながら、ほかのコンピュータ用となっているルールについてはマクロで操作することはできません。
      いったんエクスポートしてインポートするというのが妥当な回避策なのではないかと考えられます。

      コメント by outlooklab — 2013年3月15日 @ 1:03 PM | 返信

  231. 初めまして。Outlook2010を使っています。
    教えていただきたいことがあります。
    「新しい会議」または「全員で新しい会議」をクリックした時のみ
    会議室予約可能日を表示させたいのですが、どの項目の何を
    チェックすれば「会議メール」だと識別できるかを教えてください。

    コメント by 富沢 憲子 — 2013年3月15日 @ 2:57 PM | 返信

    • 予定アイテム (AppointmentItem) の MeetingStatus が olMeeting である場合、会議アイテムであると判断できます。

      コメント by outlooklab — 2013年3月28日 @ 12:17 PM | 返信

  232. はじめまして。ご教授ください。
    Outlook2010、excel2010を使用しています。

    2012/03/24付「メッセージを添付して転送するマクロ」をエクセルのマクロとして
    修正して使用したいのですが方法が分かりません。(*outlook object libraryの参照設定せずに使用することを考えています)
    outlookのvbaをexcelのvbaとして使用する場合の修正方法をお教えいただけないでしょうか?是非よろしくお願いいたします。

    コメント by キム — 2013年3月21日 @ 10:53 AM | 返信

    • Outlook マクロを参照設定せずに Excel マクロで使うには以下のようにします。

      1. マクロの開始時に Outlook のアプリケーションオブジェクトを以下のように取得する。
      Set olkApp = CreateObject(“Outlook.Application”)
      2. Outlook マクロで Application となっている記述をすべて olkApp に置き換える。
      3. Outlook マクロで ActiveExplorer や ActiveInspector など Application のプロパティを直接使用している記述をすべて olkApp.ActiveExplorer などに置き換える。
      4. ol で始まる定数をヘルプに記載されている数値に置き換える。
      5. Dim で As MailItem のように Outlook のオブジェクトを指定しているものは As Variant や As Object に置き換える。

      コメント by outlooklab — 2013年3月28日 @ 12:31 PM | 返信

      • アドバイス及び貴サイトを参考に検討します。どうもありがとうございました。

        コメント by キム — 2013年3月30日 @ 6:13 PM

  233. 初めまして”ぴょん”と申します。
    MS-AccessのVBAからOutlook 2003(2000のPCもある)にてメールを送信しています。
    このたび、通常使用しているメールアカウント(仮に”A”)に追加して”B”というアカウントを追加しました。
    このAccess VBAからの発信のメールだけ”B”という送信アカウントで送信したく、切替方法を
    現在のVBA(下記に貼り付け)のどこにどの様な行を追加したらよいかをご教授願います。
    <<VBA自体初心者でどの部分を切り出して質問したらよいかわかりませんので全部添付します。>>
    よろしくお願いいたします。

    /-----------------------------------------/
    Private Sub メール送信_Click()
    ‘差出人の入力を確認する。
    If IsNull(Me.差出人) = True Then
    Beep
    MsgBox “差出人を指定して下さい。”, vbExclamation, “入力チェック”
    Me.差出人.SetFocus
    Exit Sub
    End If

    Beep
    If MsgBox(“メールを送信します。よろしいですか?” & vbCrLf & “(注)ダイアルアップ接続の場合は先に回線を接続して下さい。”, _
    vbInformation + vbYesNo + vbDefaultButton2, “メール送信”) = vbYes Then
    Dim olApp As Outlook.Application
    Dim olMailMessage As Outlook.MailItem ‘受信ボックスのメールアイテム
    Dim olRecipient As Outlook.Recipient ‘アドレス帳の受信者のリソース
    Dim olAttachment As Outlook.Attachment ‘添付ファイル
    Dim blnKnownRecipient As Boolean
    blnKnownRecipient = True

    ‘Outlook のインスタンスを新規作成、または現在のインスタンスを開きます。
    Set olApp = New Outlook.Application
    ‘メッセージを新規作成します。
    ‘ olMailItem(0)-メール、olAppointmentItem(1)-予定、olContactItem(2)-連絡先
    ‘ olJournalItem(3)-履歴、olTaskItem(3)-仕事、olNoteItem(5)-メモ、olPostItem(6)-投稿
    Set olMailMessage = olApp.CreateItem(olMailItem)

    ‘メッセージのアドレスを入力するよう指示し、その後送信または表示します。
    With olMailMessage
    ‘Set olRecipient = .Recipients.Add(InputBox(“Enter name of message recipient”, “Recipient Name”))
    ‘blnKnownRecipient = olRecipient.Resolve
    ‘ メッセージの受信者を追加します。
    .To = Nz(Me.差出人)
    ‘Set olRecipient = .Recipients.Add(Me![差出人])
    ‘olRecipient.Type = olTo

    ‘ メッセージのCCの受取人を追加します。
    If IsNull(Me.CC) = False Then
    .CC = Nz(Me.CC)
    ‘Set olRecipient = .Recipients.Add(Me![CC])
    ‘olRecipient.Type = olCC
    End If

    ‘ メッセージのBCCの受取人を追加します。
    If IsNull(Me.BCC) = False Then
    .BCC = Nz(Me.BCC)
    ‘Set olRecipient = .Recipients.Add(Me![BCC])
    ‘olRecipient.Type = olBCC
    End If

    ‘ 件名
    .Subject = Nz(Me.件名, “メール送信サンプル”)

    ‘ 本文
    .Body = Nz(Me.本文, “This message was created by VBA code running Outlook through Automation.”)

    ‘ 重要度(高-olImportanceHigh、中-olImportanceNormal、低-olImportanceLow)
    Select Case Nz(Me.重要度フレーム, 2)
    Case 1
    .Importance = olImportanceLow
    Case 2
    .Importance = olImportanceNormal
    Case 3
    .Importance = olImportanceHigh
    End Select

    ‘ メッセージにファイルを添付します。
    If IsNull(Me.添付ファイル) = False Then
    If Dir(CStr(Me.添付ファイル), vbNormal) “” Then
    Dim strArchivedAttachment As String

    strArchivedAttachment = CStr(Me.添付ファイル)
    ‘圧縮チェックがオンの場合のみファイルを圧縮して添付する。
    If Me.圧縮チェック = True Then
    ‘添付ファイルを圧縮してフォルダに置く。
    strArchivedAttachment = CStr(Me.添付ファイル) & “.lzh”
    If LhaCreateArchive(strArchivedAttachment, Me.添付ファイル) 0 Then
    Beep
    MsgBox “添付ファイルの圧縮に失敗しました。”, vbExclamation, “圧縮”
    Exit Sub
    End If
    End If

    Set olAttachment = .Attachments.Add(strArchivedAttachment)
    Else
    Beep
    MsgBox “添付ファイルがありません。メール送信を中止します。”, , “確認”

    ‘Outlookを終了し、インスタンスを解放する。
    Set olMailMessage = Nothing
    olApp.Quit
    Set olApp = Nothing
    Exit Sub
    End If
    End If

    ‘ アドレス帳と比較(オブジェクトを確認)する。
    ‘For Each olRecipient In .Recipients
    ‘ If olRecipient.Resolve = False Then
    ‘ blnKnownRecipient = False
    ‘ End If
    ‘Next

    ‘アドレス帳で受信者が確認できれば送信、でなければ表示する。
    If blnKnownRecipient = True Then
    ‘メールを保存する。
    If .Saved = True Then
    .Save
    End If

    ‘メールを送信する。
    ‘セキュリティ警告画面で「いいえ」を選択したときのためにエラートラップ。
    On Error Resume Next
    .Send

    If Err.Number = 0 Then
    Beep
    ‘ MsgBox “メールを送信しました。”, , “確認”
    End If
    Else
    .Display
    End If
    End With

    ‘Outlookを終了し、インスタンスを解放する。
    Set olMailMessage = Nothing
    olApp.Quit
    Set olApp = Nothing
    ‘フォルダから圧縮ファイルを削除する。
    If Nz(strArchivedAttachment, “”) “” And Me.圧縮チェック = True Then
    On Error Resume Next
    Kill CStr(Me.添付ファイル) & “.lzh”
    End If
    End If
    End Sub
    /--------------------------------------/

    コメント by ぴょん — 2013年3月28日 @ 3:09 PM | 返信

    • 送信前に下記の記述を追加してみてください。
      Dim objAccount As Outlook.Account
      Set objAccount = olApp.Session.Accounts(“送信アカウントのアドレス”)
      Set olMailMessage.SendUsingAccount = objAccount

      コメント by outlooklab — 2013年3月29日 @ 7:32 PM | 返信

      • ぴょんです。早速のご返信ありがとうございます。
        ご教示頂きました通りVBAに挿入してトライさせて頂きました。
         冒頭にも記載の通りOutlook 2003にて行ったのですが

        ”ユーザー定義型は定義されていません” が出てうまくいきませんでした。

        ちなみに参照設定にて確認しましたが、Microsoft Outlook 11.0 Object Libary に
        チェックは付いておりました。

        また、Outlook 2003がメインですがOutlook 2000でも使用する事が必要ですので
        申し訳ございませんが再度のご教示お願いいたします。

        余談ですが、知人のOutlook 2007にて試したら上記の未定義のエラーは出ないで、
        ”実行時エラー’91’オブジェクト変数またはWithブロック変数が設定されていません”
        というエラーに変わりました。

                             よろしくお願いいたします。

        コメント by hipyon — 2013年3月31日 @ 1:22 PM

      • すみません。バージョン情報を見落としていました。
        Outlook 2003 では送信アカウントを Outlook Object Model で選択させることはできません。
        何か方法があるか検討してみます。

        コメント by outlooklab — 2013年4月3日 @ 8:27 PM

  234. ぴょんです。【先ほどのVBA内一部訂正です】
    ”差出人”という単語は間違えで”宛先”に訂正して読み替えてください。
    メールの送信ですので!  すみません、よろしくお願いします。

    コメント by ぴょん — 2013年3月28日 @ 5:16 PM | 返信

  235. こんにちは、シュウと申します。
    NewMailEx イベントを使用して、新しいメールを受信したらユーザフォームで作成した通知画面を表示して、
    ピンポン音のwavファイルを再生するといったマクロを組みました。
    通常は問題なく、動いているようですが、時々新着メールが届いてもマクロが走らなくなることがあります。

    調べてみましたら、PC起動直後に他のPCプログラムが起動中の時にOUTLOOKを起動させると
    マクロが停止(無効化?)してしまうようです。
    このとき、OUTLOOKを再起動させるとマクロは問題なく動くようになるのですが…。

    OUTLOOK起動後にマクロを再有効させる記述を追加とか、何かいい方法はないでしょうか?

    ※なお、このOUTLOOKには、会社から提供された業務で使用するメール送信時に添付ファイルに自動で
    パスワードをつけて、送信するアドインがインストールされています。

    コメント by シュウ — 2013年3月30日 @ 9:17 AM | 返信

  236. アウトルックにおいて、

    私の会社では、

    ・複数のPCがあります。
    ・部署ごとに各メールアドレスがあります。

    この各メールアドレスの全ての送受信を複数のPC全てで見れるようにする にはどうしたらよろしいでしょうか?

    コメント by なかた — 2013年4月4日 @ 8:03 AM | 返信

    • 使用しているサーバーによります。
      Exchange サーバーであれば、メールボックスにアクセス権限を与えることで、ほかのユーザーのメールボックスにあるメールが送信、受信とも見ることができます。
      IMAP サーバーの場合、送信済みアイテムを IMAP サーバー上のフォルダーに保存するように設定し、一つのプロファイルにメールアドレスごとの IMAP アカウントを追加すれば、送受信メールが見れるようになるでしょう。
      POP サーバーの場合、残念ながら送信済みアイテムを共有することはできません。

      コメント by outlooklab — 2013年4月24日 @ 8:05 PM | 返信

  237. 受信したメールの差出人を連絡先から検索して名前を置き換えるマクロを使用させて頂いてます。
    とても見やすくなり、感謝しております。

    outlook2010を使用しているのですが、
    そのような感じで予定表でスケジュールを表示した際の名前も連絡先から検索・置き換えするマクロを教えていただけますか?
    会社ではoutolookのプロパティの表示名がの順で設定されているので予定表にも英語から表示されています。
    日本人の私には人を探すのに一苦労で・・・。
    表示を大きくすれば良いのですが、そうするとスケジュールが小さくなって観にくいのです。

    よろしくお願い致します。

    コメント by ゆき — 2013年4月11日 @ 4:50 PM | 返信

  238. お伺いします。
    昨年11月に会社のPCが更新され、outlook2010を利用するようになりました。
    最近気が付いたのが、『全てのフォルダ送受信する』(F9)のボタンを押した際、
    進捗度の窓が出ますが、その窓が閉じなくなっています。
    outlook2007の時や、2010を利用開始した際には、送受信終了後に勝手に閉じたのですが、
    どうしてでしょうか?

    コメント by KOJ — 2013年4月17日 @ 12:25 PM | 返信

    • 進捗度を表すウィンドウの右下にピンのようなアイコンがあると思います。
      それをクリックし、ピンが横になったらウィンドウを閉じてください。
      こうすることで、送受信終了後に進捗度のウィンドウが閉じると思います。

      コメント by outlooklab — 2013年4月24日 @ 8:17 PM | 返信

      • ありがとうございます。随分と単純な機能なのですね。
        そういえば、数日前にこのピンがなんだろと思って、いじった記憶があります。
        しかし、これについてのヘルプとか、どこを探したら良かったのか?
        こちらのサイトに登録してなかったら、わかるまでかなりかかったことでしょう。
        現象とこのピンの機能は到底繋がりません、私には。
        他のアプリでの共通動作のようにも思いますので、今後は当たりが付きますが、
        今のところそういった認識はありませんでした。
        色々進化しているんですね。

        コメント by KOJ — 2013年4月25日 @ 11:31 AM

  239. For i = 1 To myFolder.Items.Count
    Set objMsg = myFolder.Items(i)
    でフォルダ内のメールを一個ずつ見ていくのですが、受信日時が古いほうからみていくにはどのようにすればいいでしょうか??

    コメント by KA — 2013年4月18日 @ 6:42 PM | 返信

    • 以下のように Sort メソッドを指定します。
      Set colItems = myFolder.Items
      colItems.Sort “[受信日時]”
      For i = 1 To colItems.Count
      Set objMsg = colItems.Item(i)

      コメント by outlooklab — 2013年4月24日 @ 8:21 PM | 返信

  240. こんにちは まみと申します
    よろしくお願いいたします。

    OUTLOOK 2007でLDAPをアドレス帳に設定して利用します。現在、LDAPにアクセスでき検索も可能な設定は完了しました。
    検索を行った際、検索結果が表示されるウインドに、名前、メールアドレス、電子メールタイプ、会社などが表示されます。
    宛先を選択し、下部の宛先欄に設定を行いプロパティを開けば、「部署」欄が表示されるのですが、検索結果には部署が表示されません。
    検索結果に部署を表示することは可能でしょうか?
    LDAPの項目名は ouとなっています。

    コメント by まみ — 2013年4月22日 @ 5:15 PM | 返信

    • 残念ながらLDAPの項目をカスタマイズすることはできません。

      コメント by outlooklab — 2013年4月24日 @ 8:21 PM | 返信

  241. お世話になります。
    1点教えてください。

    AppointmentItemで 本文の文字に修飾を施したいのですが、
    MailItemにおけるBodyFormatのようなプロパティが見つかりません。
    どのようにしたら、よいでしょうか?
    環境は Outlook2003を、エクセルVBAから起動しています。

    実際は 既に文字の修飾(フォント、サイズ、色等)が施されたテンプレートを開いて、
    “変数”を Replaceで所定の文字列に置き換え、Bodyプロパティに代入しています。
    代入した瞬間に、文字の書式がデフォルト(?)に変わってしまいます。

    以上、よろしくお願いします。

    コメント by MORI,Yasushi — 2013年4月24日 @ 5:13 PM | 返信

    • 残念ながら、AppointmentItem では本文に修飾することはできません。
      MailItem の場合は HtmlBody を使うことで文字のフォントや色などを指定できるのですが、AppointmentItem にはそのようなプロパティが存在しないためです。

      コメント by outlooklab — 2013年4月24日 @ 8:24 PM | 返信

  242. バージョン: Outlook2010

    Outlook2010でメール送信をする際、機種依存文字(半角カナ含む)が含まれているか
    チェックするマクロをご教授頂きたくお願いいたします。
    もし機種依存文字が含まれていれば、コメントボックス等で対象文字が分かるような形
    だと助かります。
    よろしくお願いいたします。

    コメント by mdm — 2013年4月24日 @ 10:27 PM | 返信

  243. 今まで、Thunderbirdを使用していましたが、会社指定のOutlookに移行しました。
    Outlook初心者には、このサイトは、大変、役立っておりますが、
    「メーリングリストのメールの差出人に返信するマクロ」の改良版を希望します。

    Ver:Outlook2007&Outlook2010

    「メーリングリストのメールの差出人に返信するマクロ」を実行すると、差出人が宛先に入りますが、
    その他のメールアドレスが無くなってしまいますが、それらを無くさずに、全てをCC:欄に入れる
    事は、可能でしょうか。

    「全員へ返信」をするメールのときに、以下のようにならないでしょうか。
    ・宛先欄に、元メールの差出人アドレス
    ・CC欄に、その他の全てのアドレス

    他のメーラーから移行するといろいろと差異があり戸惑うことが多いのですが、
    常に使用する返信のときに、元の差出人が抜けてしまうため、コピペするのが面倒です。。。

    よろしくお願いします。

    コメント by olol2000 — 2013年4月26日 @ 6:09 PM | 返信

    • 可能ですが、本当にそのような修正をしてもよいのでしょうか?
      一般的には、メーリングリストというものは特別なプログラムによって以下のような処理をされます。
      ・件名に [メーリングリスト名:111] のように連番をつける。
      ・返信メールの件名に連番がついていたら削除し、新たに別の連番をつける。
      ・メールの返信先をメーリングリストのアドレスにし、返信メッセージも上記の処理が行われるようにする。

      もし、全員に返信でメーリングリストのアドレスを削除せず、差出人のアドレスとメーリングリストのアドレスの両方を入れてしまった場合、このメールを受け取った元の差出人には以下のような2つのメッセージが届くことになります。
      ※件名が “[ML:100] Test” となっている場合
      1. メーリングリストで処理されていないメール: 件名が “RE: [ML:100] Test” で返信アドレスが返信したユーザーのアドレス。
      2. メーリングリストで処理されたメール: 件名が “[ML:101] RE: Test” で返信アドレスがメーリングリストのアドレス。

      サーバーによっては、2通目が重複メッセージとして削除される場合もありますが、もし2通受信してしまうようであれば混乱してしまうのではないかと思います。
      それでもかまわないということであれば、修正版を検討してみます。

      コメント by outlooklab — 2013年5月8日 @ 12:35 PM | 返信

      • 返信、有難うございます。
        メーリングリストの動作について、ご説明有難うございます。

        おっしゃる通り、差出人には、2通メールが届くのは、承知しております。
        件名の例をあげて頂き有難うございます。
        私の職場の環境もこの例の通りになっていて、先に記載した通り、Thunderbirdを使用していましたので、全員に返信を行うと、
        宛先に差出人、CCにメーリングリスト及びその他のアドレスが全て入るようになっており、その状態で送信していました。
        Thunderbirdを使用していたから、2通来ることが当たり前になっていたと言うことですかね。

        この状態での利点としては、
        ・送信した人には、2通返信がくるので返信が来たことがわかる。
        ・返信する時に、例の1.“RE: [ML:100] Test” 側で返信することで、件名が変わらない。
         (メーリングソフトの種類や設定にもよりますが、例の1.で [ML:100] の通番を付けない場合もあるため)

        欠点
        ・同じ内容が2通来るので、Disk容量を圧迫する(添付容量が大きい時など)
         (確かに本文だけみれば、重複と扱われる場合もあるかと思いますが、例1.と2.では、メールヘッダーの内容が変わっている
          ため、重複になることはありません。もし、重複になるのであれば、メールサーバーが変です。本件とは関係ないのでこれで。。。)

        OUTLOOKのメーリングリストの扱いとしては、返信時に差出人を除いて、メーリングリストを宛先にするのは、1通のみになるので、
        納得できる事ですが、これまでの習慣とういかがあるので。。。

        私は、希望している以下のようなthunderbirdと同等なようになれば、返信時に、差出人のみにしたいとか、
        他のアドレスの方のみにしたいとかの編集もしたいためです。(アドレス欄にアドレスがあれば、アドレスをコピペする手間が無くなるので)

        「全員へ返信」をするメールのときに、
        ・宛先欄に、元メールの差出人アドレス
        ・CC欄に、その他の全てのアドレス

        要望理由の説明がわかりづらいかも知れませんが、納得いただけたでしょうか?

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

        コメント by olol2000 — 2013年5月9日 @ 2:18 PM

      • そういうことでしたら、マクロ中の

        Set objReply = objMail.Reply

        Set objReply = objMail.ReplyAll

        にして、下記を削除すればよいのではないかと思います。

        objReply.Recipients.Remove 1

        コメント by outlooklab — 2013年5月9日 @ 7:09 PM

      • 返信が遅れまして申し訳ありません。

        一部の変更でできるのですね。
        マクロについては、まったくスキルが無いので。
        回答、有難う御座います。
        希望通り、すべてのアドレスが展開されました。

        もし、ご対応頂けるならば、以下のようにアドレスが入るものを作成して頂けないでしょうか。

        「全員へ返信」をするメールのときに、
         ・宛先欄に、元メールの差出人アドレス(これ1個)
         ・CC欄に、その他の全てのアドレス

        以前に、以下を記載しましたが、宛先に複数のアドレスが入るため、それをCC欄に移動する手間を無くしたいだけなのですが。。。
        —–
        (アドレス欄にアドレスがあれば、アドレスをコピペする手間が無くなるので)
        —–

        横着な希望ですが、相手方によっては、細かい方もいて、私のアドレスが何で”TO”なんだという方も稀にいるので。。。

        ご検討の程、宜しくお願い致します。

        コメント by olol2000 — 2013年5月23日 @ 7:18 PM

  244. YUICHIと申します。
    あて先に指定したアドレスの名前を本文に追加するマクロを使用させて頂いてます。
    大変便利な機能で、活用させて頂いております。

    現在、複数の連絡先フォルダを使っておりますが、AddHeaderでは対応していない思います。
    対応して頂けると助かります。

    連絡先(会社)にあるアドレスからの返信時には
     事業所名
      名前 + 敬称
    連絡先(顧客)にあるアドレスからの返信時には
     会社名
      名前 + 役職

    というようになればさらに便利になると思います。

    よろしくお願いします。

    コメント by Yuichi — 2013年5月6日 @ 11:54 AM | 返信

  245. いつも大変参考になる情報を有難うございます。
    OUTLOOK2007を使用しているのですが、以下のような動作を行う
    マクロをご教授頂きたくお願い申し上げます。

    1)メールを作成時に(新規作成や返信/全員へ返信/転送ボタンを押した際)
    2)NK2ファイルのエントリーから特定のアドレスを除去する(あるいは特定のドメイン以外のエントリーを除去する)

    オートコンプリートはとても便利な機能なので利用を続けたいのですが、
    宛先の候補に紛らわしい同姓同名のアドレスがあると、誤送信してしまいそうで心配です。
    2)のドメイン指定については、できればあとから付け足すことができるような形であると理想的です。
    当方はVBAやマクロについて殆ど知識がなく、ご教授いただければ幸いです。

    宜しくお願い申し上げます。

    コメント by ND — 2013年5月8日 @ 9:04 AM | 返信

    • 残念ながら、オートコンプリートをマクロで操作することはできません。

      コメント by outlooklab — 2013年5月8日 @ 12:44 PM | 返信

  246. いつもお世話になっております

    当方win7_outlook2007にてマクロを作成しようとしておりますがマクロ起動のタイミングが思った通りにいきません

    メールアイテムを開いたタイミングでメール本文を走査して社内ファイルサーバへのリンク有無をチェックしようとしております

    itemloadイベントにて処理を走らせようとしたのですがその時点では各種プロパティにアクセスすることが出来ず途方にくれております

    メールを開いてから手動でマクロを動かせばいいだけなのですがせっかく作るのであればマクロを起動する一手間をも省きたいと思い
    書き込みさせていただきました

    お忙しいところ申し訳ありませんが何かいい手があればご教示いただけないでしょうか。

    コメント by 初心者X — 2013年5月8日 @ 12:33 PM | 返信

    • ItemLoad イベントが発生する際には Item のプロパティを取得することができませんが、イベントを設定することは可能なようです。

      そこで、

      Dim WithEvents myItem As MailItem

      と定義しておき、ItemLoad には

      Set myItem = Item

      として、myItem_Read イベントで開いたメールの本文にアクセスすることが可能です。

      コメント by outlooklab — 2013年5月8日 @ 1:10 PM | 返信

      • おお!素早い回答ありがとうございます!

        知らない方法ではなかったのですが(言い訳)まったく思い付きませんでした…

        提示いただいた内容にて思い通りの動作が出来ました
        ありがとうございました!

        コメント by 初心者X — 2013年5月8日 @ 6:38 PM

  247. Outlook2010のpstファイルを、2007で読み込むことは可能でしょうか?
    制限付きでも良いのですが、メーの中身やアドレス帳が見られれば問題ありません。

    コメント by KOJ — 2013年5月9日 @ 2:09 PM | 返信

    • Outlook 2010 の PST は特に制限なく 2007 や 2003 で読み込むことができます。

      コメント by outlooklab — 2013年5月9日 @ 7:09 PM | 返信

      • 迅速な返答、誠にありがとうございます。早速トライしてみます。お世話様でした。

        コメント by KOJ — 2013年5月9日 @ 7:24 PM

  248. お世話になります。

    社内でOutlook2010・Exchange2010を使用しています。

    会議室予約を他のポータル製品からExchangeのリソースメールボックスに移行したいと考えています。
    その際、当日は会議室予約の閲覧のみで登録出来ないように制御したいのですが、何か方法がございますでしょうか。

    BookingWindowInDaysでは、何日前からの予約が可能かを制限できるようですが、当日予約不可にするパラメータが見つかりません。

    代替手段として、毎朝、当日の空きをすべて特権ユーザが抑えてしまうというのをOutlookのマクロで可能でしょうか。

    ご教授いただけますよう宜しくお願いします。

    コメント by しゃち — 2013年5月10日 @ 2:59 PM | 返信