疑問・質問・マクロの要望 (Archive)

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

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

疑問・質問・マクロの要望 (Archive)」への1,406件のフィードバック

  1. お世話になります。

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

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

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

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

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

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

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

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

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

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

    質問:

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


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


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


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

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

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

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

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

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

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

        とありますが、

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

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

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

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

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

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

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

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

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

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

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

  5. 初めまして。

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

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

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

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

  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アドインについては、使用許可されていない状況です。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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

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

  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でも同じでした、、

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  15. お世話になります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    OSはXP、outlook2003です。

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

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

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

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

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

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

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

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

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

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

    [環境]
    Outlook 2007/Exchange 2007

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

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

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

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

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

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

        試してみたところ、
        追加のメールボックス情報は以下の方法で「追加のメールボックスがあるな」、という事が分かりますので、
        この方法で対応しようと思います。(こちらの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

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

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

    例えば、

      ”●●くん”

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

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

  21. VBA初心者です。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      • 了解いたしました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      • こんにちは。

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

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

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

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

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

  30. はじめまして。

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

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

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

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

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

    よろしくお願いします

    • おそらく、フォームを閉じるまでウィンドウ操作をさせないためフォームをモーダルで開いているのではないかと思いますが、あえてモードレスにするという方法が考えられます。
      まず、フォームに 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

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

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

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

        なんとかなりそうです。

  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/… でブラウザ表示できますが、当社はカスタムフォームを多用しており、これらは当然ブラウザでは表示も動作もできず根本解決にはなりません。

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

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

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

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

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

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

      • 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 の場合はパブリック フォルダーのパス名がユーザーごとに変わってしまうので、うまく動作しないことには変わりません。
        良い方法が思いついたら記事にしてみます。

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

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

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

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

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

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

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

  35. お世話になります。

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

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

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

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

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

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

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

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

      • outlooklab様

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

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

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

    • 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 カレンダーに登録しなおさないといけないのでしょうか?
      また、ほかの人の予定に変更があった場合、エクスポート・インポートを繰り返す必要もありますが、それだと最新の状態を維持するのが大変だと思います。

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

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

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

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

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

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

    • 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 の上の「この技術情報に対応する修正プログラムのダウンロードのリスト」をクリックし、修正プログラムを入手して試してみてください。

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

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

  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

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

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

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

  40. 初めまして

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

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

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

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

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

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

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

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

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

        以上でどうでしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    よろしくお願いします。

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

    よろしくお願いします。

    • 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 となります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

     

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

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

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

  48. お世話になります

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

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

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

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

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

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

  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等に指定されていても関係なく
     宛先毎にグループ化する。)

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

  50. はじめまして

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

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

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

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

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


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

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

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

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

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

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

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

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

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

        On Error GoTo err1

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

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

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

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

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

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

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

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

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

      1. リボンのホーム タブで空いているところを右クリックし、[リボンのユーザー設定] をクリックします。
      2. [コマンドの選択] で [メイン タブ] を選択します。
      3. 左のリストの [ホーム (連絡先)] を展開し、[現在のビュー] を選択します。
      4. 右のリストの [ホーム (メール)] を展開し、現在のビューを表示したいグループの左隣となるグループを選択します。
      5. [追加 (A) >>] をクリックします。
      6. [OK] をクリックします。
  53. ありがとうございます。
    早速、個人メニューを作成し、現在のビュー等、頻度の高いコマンドを加えて使ってみます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  57. お世話になります。

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

    autlook2010を使用しております。

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

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

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

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

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

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

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

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

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

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

        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

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

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

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

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

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

  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で見たのですが、仕分け前に作動させる方法はないでしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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)/~~
    ‘==================================================================================================================

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

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

      で出来そうですね。

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

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

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

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

        のルーチンの

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

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

        Dim i As Integer

        も追加して下さい。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        今後のご参考まで。

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

  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)を有効にする方法についてご教示いただければ幸いです。

    • 下記の手順を試してみてください。
      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 の再インストールをお勧めします。

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

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

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

      • お世話になります。

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

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

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

        宜しくお願いします。

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

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

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

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

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

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

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

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

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

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

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

    でも、不思議なんです。

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

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

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

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

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

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

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

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

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

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

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

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

      • #70のともろうです。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • 下記のレジストリ値を設定し、自動仕分けの移動先の個人用フォルダを 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

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

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

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

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

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

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

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

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

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

    • 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/ にあるマクロが使えると思います。
      自動的に削除するという処理を組み込むことも可能ですが、本当に削除してしまってよいのでしょうか?

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

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

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

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

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

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

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

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

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

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

  79. はじめまして。
    迷惑メールフォルダ内にたまったメールを手動にて「受信拒否リストに追加」して
    おります。この操作をマクロにて実現可能でしょうか?
    ご教示の程、よろしくお願い致します。

    バージョン:Outlook2007 SP2

  80. お世話になります
    誤送信確認において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が空白、アドレスありという??な状態になる)
    (再送でもアドレスを再入力すれば取れますがこの手間は本来不要)

    • 以下のように、一度ダミーの受信者を追加し、それをまた削除してください。

      With ActiveInspector.CurrentItem.Recipients
      .Add “dummy entry”
      .Remove .Count – 1
      End With

  81. こんにちは。とても参考になるサイトで、ありがたく思っています。
    マクロの要望も受け付けていただけるとのこと、ぜひお願いしたく存じます。

    ■やりたいこと
    指定した時刻になったら、特定のメールアドレス宛に決まったファイルを添付して送信したい。

    ■詳細
    「決まった件名のメッセージを受信したら、データを CSV ファイルに保存するマクロ」を拡張したいです。

    データが追加されたCSVファイル(サンプルでは c:\orders\data.csv)を、指定した時刻(例えば毎日12時)に、特定のメールアドレス(例えばreport@example.com)へ自動送信する、という内容です。コンピュータは常に起動しており、ログオンしてネットワークに接続されている環境を想定しています。

    サンプルマクロの一覧をみてみましたが、似ているようなものが見つけられませんでした。
    もし該当する例がすでにありましたらスミマセン。

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

  82. お世話になります。
    「豆腐メール」削除マクロをこちらにて知り、コピーして使っておりましたが
    最近になり、マクロが効かなくなりました。
    VBEDITORも起動しなくなりましたので、ツール→セキュリティセンター→アドイン
    →無効なアプリケーションアドイン:Microsoft VBA for Outlookアドイン
    と、いつのまにか無効になってることが判明しました。
    そこで、有効にしようと、設定→使用できるアドインの一覧にある該当アドインの
    チェックマークを入れ、okをクリックしましたが、再度表示させると
    チェックマークが外れています。
    関係無いかもしれませんが、直前に行った操作は新規にアカウントを追加した事
    くらいです。
    なぜ有効にならないんでしょうか?
    ご教授の程、よろしくお願い致します。

    バージョン:Outlook2007 SP2

    • Microsoft VBA for Outlookアドインが無効になる原因としては、このアドインの DLL が破損したというようなことが考えられます。
      Outlook の修復セットアップをして回避できますでしょうか?

  83. お世話になります、WindowsXP,OUTLOOK2003SP3 で、メール送信時、宛先チェック、送信先アドレス、添付ファイル名を、表示させ、メール誤送信防止を、図ってます。自PCでは、正常に動作しますが、他のPCでは、メッセージボックスが、新規メールの背後に表示されます、どうすれば、正常に、動作するようになるのでしょうか?ご教授のほど、宜しくお願いたします。

  84. お世話になります。
    Outlookで困りごとがあると参考にさせていただいています。

    【環境】
     Windows XP SP3 + Outlook 2007 SP2

    【質問】
    新規予定作成時に、開始時刻と終了時刻の間隔がデフォルトで30分になっていますが、
    ここを1時間など自由に設定することは出来ないでしょうか?
    可能な場合、その方法を教えて下さい。

    宜しくお願い致します。

  85. お世話になります。 WIndowsXP OUTLOOKSP3 で、メール送信時 件名、宛先をチェックするよう マクロ(OUTLOOK研究所)を使用しております。
    社外ドメイン、社内ドメインを表示させるようになっておりますが、
    TOの場合は、有効ですが、CC,BCCに、社外ドメインを入力した場合
    社外ドメイン:なし
    と表示されます。
    CC,BCCも、社外、社内ドメインを判定するには、どうしたらいいでしょう
    ご回答の程、宜しくお願い致します。

    • 参考とされたのはどのマクロでしょうか?
      可能であれば、参考としたマクロのコメントにご質問を記入していただけますか?

  86. お世話になります。
    会社と家とでメールサーバの設定を切り替えて使いたいと思っています。
    会社では社内のSMTP、POPサーバに接続し、家では社外にあるSMTP、POPサーバに接続する必要があります。
    (社内から社外のサーバへはアクセスできません)
    このため、SMTPサーバ、POP3サーバとポート、SSLと認証パスワードを書き換えて使いたいと思っています。
    OutLookではマクロの記録ができないようですのでマクロを作成することもできません。
    マクロでそれぞれの設定に切り替えればよい思うのですが、どのようにしたらよいかわからず困っています。
    ご教授の程、よろしくお願い致します。

    Win7 & outlook2010とXP&outloo2003のどちらかの環境で使用したいと思います。よろしくお願いします。

    • 残念ながら、マクロによってアカウントの設定を変更することはできません。
      複数の MAPI プロファイルで一つの PST を使うというような方法ぐらいしかなさそうです。

  87. 回答が遅くなりまして申し訳ありません。
    ご要望の動作はマクロを使用しなくても 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 でも構いません。
    こちらを試してみてください。

    • 返信が遅くなり申し訳ございません。
      作成したコードは以下のとおりです。(※マクロではなく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

      • 返信が遅くなりましてすみません。
        こちら、NewInspector の中でボタンがある場合には削除して追加という処理を行っているようですが、ボタンがある場合には何もしないというように変更したらどうなりますでしょうか?

  88. はじめまして。
    Windows Live カレンダーを介して会社で使用しているOutlook2003の予定表とiPadのスケジュール管理のアプリを同期させたいと考えています。

    上のように同期させる場合、Outlook Connectorが必要だと思うのですが
    その際、会社のOutlookにプライベートで使用しているHotmailのアカウントを追加しなければいけないのでしょうか。
    私としてはスケジュールのみ(To do リストも同期できればいいのですが)同期させたく、
    プライベートで使用しているHotmailの送受信は会社のOutlookで行いたくないのですが
    このようなことは無理なのでしょうか。

    お手数おかけして申し訳ございませんが何卒よろしくお願いいたします。

    • 残念ながら、Outlook 2003 の場合はカレンダーだけを同期ということはできないようです。
      カレンダー用の Hotmail アカウントを別に取得し、そのアカウントを会社の Outlook と同期させるというのはどうでしょうか?
      共有の設定を行えば、普段使っている Hotmail のアカウントからもそのカレンダーにアクセスできると思います。

  89. はじめましてです。
    Windows XP SP3 – outlook2010。
    「メッセージの返信、転送時に本文の先頭に日付と時間を挿入するマクロ」は、メールアイテムウィンドウから実行すればうまくゆきますが、メインウィンドウから実行するとエラーになってしまいます。 メインウィンドウからも実行できるようにする為、メールアイテムウィンドウを開く命令を追加してやるとうまく行くのではと思いますが、可能でしょうか? 可能でしたら実装方法をご教授願います。

    合わせて別件も書かせて頂きます。
    ・メッセージ作成ウィンドウにて、選択している行の先頭に引用記号の “<" を付けるマクロは出来ますでしょうか。
    (部分的に引用記号を付けたい場合があるので)
    ・表示フィールドの書式設定 – 差出人 の表示形式を「差出人/宛先」に選択すると自分が送信したメールは「宛先」が表示されるのかと思ったのですが、違うのでしょうか。IIf([差出人]="自分の名前",[宛先],[差出人]) とフィールド追加していますが、これではソートが掛かりません。良い方法があればお願いします。
    ・常にテキスト形式のメールで返信する場合、2010では設定できないのでしょうか?HTML形式に対するメールはHTMLになってしまいます。(「リッチテキスト形式のメッセージを送信する際…」 は、「テキスト形式に変換」を選択しています)
    ・2010ではヘッダーを隠せないようですが、ヘッダーにおける件名と送信者のフォントを小さく、あるいは非表示にしたいのですが、方法はありますでしょうか?(画面の面積がいらない情報で占有されている感が否めません)

  90. お世話になっております。
    OUTLOOK2003SP3 を使用しております。
    メール送信時、件名、宛先、添付ファイル名を表示させる、マクロを使ってます
    スケジュールで、施設予約(例:打合せコーナー)を予約し、主席者にメールを送るで
    エラーになります。
    宛先がありませんで、エラーになってます。
    エラーの対処方法を、ご教授願います。宜しくお願い致します。

    • マクロはこちらのブログにあるマクロなのでしょうか?
      もし、そうであれば、そのマクロが記載されているページにコメントしていただけますか?
      また、そうでない場合はどのようなマクロなのかを具体的に教えていただけますでしょうか?

  91. お世話になっております。
    OUTLOOK2003SP3 を使用しております。
    メール送信時、件名、宛先、添付ファイル名を表示させる、マクロを使ってます
    スケジュールで、施設予約(例:打合せコーナー)を予約し、主席者にメールを送ると
    エラーになります。
    宛先がありませんで、エラーになってます。
    エラーの対処方法を、ご教授願います。宜しくお願い致します。

  92. お世話になっております。
    Outlook研究所様に1件開発をお願いしたい件がございまして、ご連絡差し上げます。

    概要としましては、
     ・Outlook2003, 2007, 2010において
     ・VBAで開発、COMアドインで配布可能な形式とする
     ・インターネット越しに、データベースに登録されたテキストメッセージ(例えば、「今日は定時退社日です。計画的に仕事を行い、残業を行わないようにしましょう」など)をメール本文(例えば、最下部)に挿入する
    といった内容です。
    他にもいくつか要件があるのですが、現在検討中のビジネスモデルに関係する部分でもありまして、コメント欄に記載するのがはばかられる為、一度お会いしてお打ち合わせさせて頂けませんでしょうか。
    (夜、休日など時間、場所はご都合に合わせます)

    インターネットで種々検索しましたが、Outlook研究所様が国内で一番Outlookに詳しいのではないかと思われ、是非ともお願いしたい次第です。

    もしよろしければ、記載のメールアドレスまでご連絡頂けませんでしょうか。

    ご検討のほど、どうぞよろしくお願いいたします。

    鈴木

    • 大変申し訳ありませんが、こちらのブログは趣味の範囲で行っているものであるため、開発の請負などは行っておりません。
      Outlook の開発にあたってのサポートということであれば、マイクロソフト社のアドバイザリー サービスを使えば具体的な API の使用方法やサンプルなどの提供が受けられると思いますので、そちらにご相談されてはいかがでしょうか?
      アドバイザリー サービスについては http://www.microsoft.com/japan/services/support/advisory_service.mspx に詳細があります。

      • ご返信ありがとございました。(こちらからのご連絡が遅くなり大変申し訳ございませんでした)
        開発に際してはMSのアドバイザリーサービスの利用を検討することといたします。
        実現方法について、今後、可能な範囲でアドバイス頂ければ誠に幸甚です。
        どうぞよろしくお願いいたします。

        <このやり取りをご覧になられている方で、我こそは、という方いらっしゃいましたら是非鈴木宛ご連絡いただければ幸いです。>

        鈴木

  93. お世話になります。
    Outlook2007を使用しています。

    メールに添付されたexcelファイルの特定のセルに入力された値をメール受信時にメールの件名、もしくは本文に追加することはできますか。
    もしくは添付ファイルに入力された値を条件にしてメールの自動仕分けを設定することはできますか。

    VBA 初心者です。
    ご教授ください。どうぞよろしくお願いいたします。

  94. お世話になっております。 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

    • 会議出席依頼メールでは To プロパティで出席者を取得することはできません。
      Recipients オブジェクトを使う必要があります。

      • 大変お世話になっております、Recipients オブジェクトを使う場合の、VBマクロを
        ご教授をお願い致します。

  95. お世話になります。
    最近outlook2007を使用し始めたのですが、Exchange Server を使った会議出席依頼について質問があります。

    以前2003を使用していた時には、他の方からの会議出席依頼を受信すると、
    受信boxのmailを確認しなくても、自分の予定表に仮の予定として依頼が表示されていましたが、
    現在はmailを確認しないと予定表に反映されなくなってしまいました。

    不在の期間中に、時間の重複した会議依頼が多く困っています。

    2003と2007の違いなのか、以前とoutlookの設定が違っているのか定かではないのですが、
    いろいろ設定を変えて試してみてもなかなかうまく行きません。

    どうすればよいかアドバイスを頂けると助かります。
    よろしくお願いいたします。

    • Outlook 2003 でも Outlook 2007 でも会議出席依頼を処理する方法は同じで、[会議出席依頼を自動処理する] がオンになっていれば処理されるはずです。
      詳細は、http://office.microsoft.com/ja-jp/outlook-help/HP010080427.aspx をご覧下さい。

      なお、Outlook で自動処理する場合、不在であってもそのメールボックスに Outlook でログオンしておく必要があります。これもバージョンによらず同様です。
      Exchange Server のバージョンが 2007 以降であれば、サーバー側で自動処理することができ、この場合は不在時であっても仮の予定として入ります。

  96. お世話になります。 
    Outlook 2003 SP3 で外部にメール送信する時に、CC欄に決められた人(メール管理者)のメールアカウントが設定
    されていないとメールできないようにするにはどうすればよいでしょうか?

    Outlook の設定でできるのでしょうか?
    それともVBAでスクリプトを組むのでしょうか?

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

    • 送信を中断するとなると、マクロを組む必要があります。
      ただ、特定のユーザーを常に Cc に追加したいということであれば、自動仕分けのルールで送信時のルールとして [名前/配布リスト をメッセージの [CC] に追加する] を設定することで実現はできるでしょう。

  97. はじめまして。
    Outlook 2010でVBAでメールメッセージウィンド上で、
    本文入力フィールドにカーソルが移動したことをイベント
    として検出することは可能でしょうか。
    This Outlook Sessionで利用できる関数を確認したつもり
    ですが、当方の実現したい機能を提供するものかが
    判断できず書き込みさせていただきました。
    よろしくお願いたします。

  98. お世話になっております。
    PCリプレースのプロジェクトに関わっており、以前の記事にございました
    「Outlook 個人用フォルダ ファイルのパス名を取得するスクリプト」
    を使用して情報の取得を考えております。

    取得したPSTファイルの形式が「Office 97-2002 形式 (ANSI)」か「Outlook 2003 以降の形式 (Unicode)」かを
    確認するレジストリ値はございますでしょうか。

    Windows XP / Outlook2003 環境となります。

    宜しくお願い致します。

    • PSTファイルの形式はレジストリには格納されておらず、実際にPSTファイルを開いてみないとわかりません。
      確認する方法を検討して実装してみます。

      • スクリプト作成頂き有難うございます。
        早速自身のPCでテストをさせていただいたのですが
        以下のエラーがでてしまいました。

        スクリプト:C:\test.vbs
        行:71
        文字:9
        エラー:ファイルを開けませんでした。
        コード:800A0BBA
        ソース:ADODB.stream

        原因はわかりますでしょうか・・?
        お手数をお掛けしますが
        宜しくお願い致します。

      • エラーの通り、ファイルが開けなかったということなのですが、たとえば Outlook を起動したままだったりしませんでしょうか?
        PST ファイルを開いたままだとスクリプトでは PST ファイルが開けず失敗します。
        とりあえずエラーが発生しないよう修正してみました。
        なお、コメントはマクロが記載されているページにいただけると助かります。

  99. 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 が
    異なるので うまくいかないのでしょうか? 何かアドバイスがありましたら、
    お教えください。

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

    • Windows にログオンしているユーザーと Exchange 接続のユーザーが異なる場合、ADSI では認証の設定が必要になると考えられます。
      ただ、CDO なら問題はないと思います。
      CDO で警告ダイアログが表示されないよう Exchange Server を構成することは可能でしょうか?
      もしそうであれば、CDO で値が取得できない点についての調査を行った方が良いかもしれません。

      • 早速の回答、ありがとうございます。
        「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 が取得できる)のでしょうか?

        よろしくお願いします。
        ※一度、投稿しましたが、うまく送信できなかったようなので、再送します。 

      • 説明が不足していてすみませんでした。
        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 をご覧ください。

      • お世話になります。

        CDOの場合、以下2点(特にセキュリティ絡み)により、ハードルが高そうですね。
         ①>Office のセットアップの Outlook の項目で 追加インストールする
          ・・・インストールディスクが手元にない。
         ②>Exchangeのパブリック フォルダにセキュリティ設定のための
          カスタム フォームを発行、保存する必要(Exchange サーバーの管理者の協力が必要)
         ※別に悪いことをするわけではないので、きちんとサーバ管理者に依頼をすればいいのかも
          しれませんが。

        とすると ADSIでやることになりますが
         >ADSI では認証の設定が必要
          どのようにすればよいか、教えていただけませんか。
          既に OUTLOOKは起動(ログイン)していて、「表示名」をダブルクリックしたり、
         「連絡先」から 情報を取得できる状態であっても、マクロからログインする必要が
         あるのでしょうか?

                      よろしくお願いします。

      • 残念ながら Outlook と ADSI は連動していませんので、Outlook が使用しているログオン情報を ADSI に流用することはできません。(Windows のログオン情報であれば、引き継げるのですが…)
        ADSI で認証を行う方法は http://blogs.technet.com/b/jpilmblg/archive/2009/05/21/adsi-programming-_2d00_-howto-_3a00_-papa090520.aspx などで紹介されていますので、こちらをご参照ください。

      • お世話になります。
        アドバイス ありがとうございます。

        ご紹介いただいたサイトに記述されているサンプルで、認証されるかチェックしてみました。
        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 として取得された
         文字列の一部です。)

        何回も お手数をお掛けしますが、何か アドバイスがありましたら、お願いいたします。

      • すみません。
        「2011年10月20日 @ 7:23 PM」の投稿を訂正します。
        エラーが発生するのは
          (正) Set oRecordset = oCommand.Execute
          (誤) strQuery = “<LDAP://" & DOMAIN & …
        でした。

        よろしくお願いします。

      • 元の記事のコメントに認証情報の追加方法を記述しました。
        なお、基本的に今回のマクロで Windows のログオン情報は一切使いません。

      • ありがとうございました。
        うまくいきました。
        感激です!!

        うまくいった理由は
         「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にアクセスしているかのような
           エラーメッセージが返ってくる
         ※これらは、”興味”なので お時間がありましたら、教えてください。

        最後に 改めて
         本当にありがとうございました。

      • 自己レスです。
        LDAPの ユーザ名 CN=UUUU は ログインユーザではなく、メールの送信先ですね。
        宛先を自分にしてトライアルをしていたので、自分のユーザ名がハンドリングされていたんですね。
        てっきり Outlookのログインユーザ名と思い込んでいました。

        そう考えると
          DAMAINを wwwwにしたときは、認証されているのでエラーもなにも出ず、
         ただ、データベースがないか、データベースに UUUUがない(当たり前)ので
         取得した情報を入れるオブジェクトが Empty値だったんですね。

         一方 DOMAINを ddddにしたときは 認証されていないのでエラーが発生したのだと。
         (”テーブル”がなんなのか、はよく分かりませんが。)

  100. はじめまして お世話になります
    さて、マクロに関してご教示下さい

    OUTLOOK2007で、受信したメールを、自動的に名前を付けて保存する方法を教えて欲しいです。

    受信したメールを残らず、エビデンスとして保存する必要があります
    受信フォルダにかかわらず、振分先のフォルダでも、新規に受信したメールを全て
     件名.msg
    で任意のフォルダ(例えば、c:\temp\)に保存したいです。
    また、メールに添付されたファイルも同じ、件名.msgに付加し保存したいです
    (イメージ的にはOutlookでメールを選択し、ドラッグ&ドロップを行ったときにできる msgファイルを
    自動でつくりたいです)

    お手数ですがご教示願います

  101. outlooklab様
    ご教授ありがとうございます。

    ご提示いただいたマクロを参考にして試した見ましたが、いくつか問題があります。

    1.受信フォルダ以外のフォルダへの振分設定しているメールが
      うまく保存されない(受信トレイをチェック対象にしているためか?)
    2.受信フォルダ内あるいは未読メールを保存対象にしている場合、
      同一件名のメールを別名として保存すると(例えば、A(1).msg )
      新着メールが来るたびに受信フォルダ内の全メール(あるいは未読のままの全メール)が複数回
      保存されてしまう。

    2.に関しては受信日時と件名を足したものをファイル名にし、既に存在する場合は保存しないようにすれば
    解決できそうだと思っていますが、1.の件がうまくできません。

    ご提示いただけるのであればマクロの作成をお願いいたします。

  102. 初めてメールさせていただきます。
    OUTLOOK2007において、分類項目を他のユーザーと共有することは可能でしょうか?
    または、分類項目を追加するマクロはございますでしょうか?
    お忙しいところ大変お手数をおかけしますが
    ご教授いただきたく
    どうぞよろしくお願い致します。

    • 分類項目を共有することはできませんが、マクロで追加することは可能です。
      たとえば、以下のようなマクロで「Test」という名前の青い分類項目を追加することができます。

      Sub AddCategory()
      Session.Categories.Add “Test”, olCategoryColorBlue
      End Sub

      • お忙しい中、ご教授ありがとうございました。
        お蔭様でうまくいきました。
        OUTLOOK2003の環境で試したところ、エラーになります。
        OUTLOOK2003でラベルではなく、分類項目を追加するには
        どのようにしたらよろしいのでしょうか?
        再度、お教えいただきたく、どうぞよろしくお願いいたします。

      • 残念ながら、Outlook 2003 ではマクロにより分類項目を設定することはできません。
        Outlook 2003 では分類項目は下記のレジストリに保存されていますので、このレジストリをエクスポートして、別の PC でインポートすれば設定は可能です。ただし、インポートする前に合った分類項目は消えてしまいます。

        HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Categories\MasterList

  103. 初めてメールさせていただきます。
    OUTLOOK2007において、予定表の分類項目を他のユーザーと共有することは可能でしょうか?
    または、分類項目を追加するマクロはございますでしょうか?
    お忙しいところ大変お手数をおかけしますが
    ご教授いただきたく
    どうぞよろしくお願い致します。

  104. はじめまして。
    私は仕事の関係で、出荷指示の用紙をFAXで受取り、
    出荷担当者に作業を依頼していました。

    そして最近、出荷場所の変更も伴い、
    少し離れた場所にある置場からの出荷になりました。
    FAX開通に対する費用対効果は小さいと考え、
    複合機からEメール送信、添付ファイルとして付いたファイルを
    自動印刷、という方法を取っていきたいと考えていました。

    現状、複合機からのEメールを受信するところまでは
    設定が整ったのですが、自動印刷の設定に苦心しております。
    はじめ考えていたのが、Gメールで受信→outlookで自動印刷
    という方法だったのですが、outlookの設定が良く分からず
    作業が止まってしまっています。

    何か良い方法があれば、ぜひご教示ください。
    宜しくお願いします!!

    • Outlook には受信したメールをルールで印刷する機能はありますが、この機能では添付ファイルは印刷ができません。
      そもそも添付ファイルを印刷するにはそのファイルに対応したアプリケーションで印刷を実行しなければならず、そのような処理が自動化できるかはアプリケーション次第となります。

  105. はじめまして。
    色々頑張ったのですが、ちゃんと出来ずにこまってしまいました。

    OUTLOOK 2003 メール機能のみ使用している業務です。
    各種セミナーの予約申し込みメールを受信し、審査してOKなら予約完了メールを返信するだけです。

    ただし、返信メールの件名の後ろにセミナー毎の採番をかきこみます。例えば、2-15(セミナー2番の15人目予約者)
    それが手間で困っており、スクリプトで「メールの件名の後ろにセミナー毎の自動採番を付与」し、仕分けルールでセミナー毎のフォルダに実行できたらと思っています。

    受信時に仕分けルールでセミナー毎のフォルダに振り分けています。
    返信もセミナー毎のフォルダでテンプレートを使って自動返信しています。
    処理したいフォルダを指定し、InputBoxなどで”2-15″とかスタート値を入力指定して使いたいです。

    30セミナー、最大定員300人で、とても一台のPCでは大変になってます。
    (予算削減で9月から普通のPCが一台メアド1個なのです。他PCは高セキュリティを厳守していてでこういった業務には使わない規則です)

    • まず、最初に受信する予約申し込みメールではセミナーの番号は件名に入っているのでしょうか?
      返信の際にセミナー番号を指定するということでしょうか?
      また、自動採番を行うとなると、どのセミナーが何番まで設定されているか、ということをどこかに保存する必要がありますね。
      それと、現在はルールで振り分けているということですが、どのように振り分けているのでしょうか?

      ちょっと複雑なものになりそうですので、もう少し仕様を明確にした方が良いと思います。

      • 早々ありがとうございます。
        最初から説明不足ですみませんでした。

        ■受信する予約申込みメールの件名にセミナーの番号が入っています。
         申込みメール記載要領
         件名 : セミナー番号n セミナー名
         本文 : ①名前、②連絡先、③ 、④ 、・・・・ 

        ■セミナー毎に予約者名簿をエクセルBookで作成しています。予約者の最終行が予約番号のカレント値になります。
        ■セミナーの番号で振分けしていますが、件名、本文とも記載がいい加減なメールも多く、手動で振分けを補完しています。 また、下記業務内容や審査の結果によりさらに下位フォルダに手動で移動しています。

        業務内容 
        ・開催日の異なる各セミナーに番号を付け、さみだれ式に5度に分割して受付開始する
        ・メール本文に項目漏れがあれば、情報不備メールを返信する
        ・同一差出人が同一セミナー番号に複数申込みした場合、重複メールを返信する
        ・同一差出人が別セミナー番号で同一セミナー名に申込みした場合、重複メールを返信する
        ・異なる差出人でも名前、連絡先などが同一の場合、重複扱いにする
        ・本文内容をチェックして対象外者である場合、内容相違メールを返信する
        ・対象者である場合、予約番号を付与した予約完了メールを返信する
            対象者の名簿(エクセル)を作る
            セミナー当日は、予約完了メールの印刷を持参することで、名簿の予約番号、名前などで本人確認する
        ・予約キャンセルを随時受付け、定員数に反映する
        ・各セミナー毎の定員後の申込みメールの場合、締切メールを返信す
        ・受付け開始前の申込みメールの場合、フライングメールを返信する

        ■フォルダ構成(受信トレイと送信済みアイテム配下の双方に作成)

        受付年月
           セミナー番号/名称 ←受信トレイ配下ではセミナーの番号で自動仕分けメールが入るフォルダ
               締切     ←手動で移動、仕分けルールで特定のテンプレートで返信、送信済みアイテム配下に移動
               不備     ←手動で移動、返信、送信済みアイテム配下に移動
               内容相違  ←手動で移動、仕分けルールで特定のテンプレートで返信、送信済みアイテム配下に移動
               重複     ←手動で移動、返信、送信済みアイテム配下に移動
               予約完了  ←手動で移動、件名に予約番号を付与、
                         仕分けルールで特定のテンプレートで返信、送信済みアイテム配下に移動
               事前キャンセル ←送信済みアイテム配下のみ作成
           セミナー番号/名称
               締切
               不備
               内容相違
               重複
               予約完了
               事前キャンセル
           :
           :

        フライング ←受信トレイ配下ではセミナーの番号で自動仕分けメールが入るフォルダ

        ・上記の「予約完了フォルダ」を指定して「件名に予約番号を付与」という部分を自動化したかったのです。
        ・工程数では人の作業工程が多いですが件数は少なく、圧倒的に件数が多いこの部分だけでも自動化できれば助かるということなのです。

        説明が長くて大変申し訳ありません。宜しくお願い致します。

                

                     

            

      • 以下の工程を自動化する、ということですね?
        > 予約完了  ←手動で移動、件名に予約番号を付与、
        >      仕分けルールで特定のテンプレートで返信、送信済みアイテム配下に移動

        これについて確認したい点がいくつかあります。
        1. このフォルダーには受信した予約申し込みメールが入る、ということでよろしいでしょうか?
        2. 仕分けルールで特定のテンプレートで返信、とのことですが、仕分けルールは通常は受信時にのみ実行されるはずです。どのようにして手動で移動したメールにルールで返信させているのでしょうか?
        3. 送信済みアイテム配下に移動、とありますが、自動付番したメールを送信済みに移動してしまう、ということでしょうか? となると、予約完了フォルダにある元の申し込みメールの件名には番号がついていないままの状態ということでしょうか?

        以下のようなマクロを想定していますが、この動作で問題がないかもご確認ください。
        マクロ 1: 返信用マクロ – 予約完了フォルダーのメールを選択して実行する
        1. 選択されたメールの返信メールを作成する。
        2. マクロがあらかじめフォルダーに保存されている番号保存用アイテムの予約番号を取得し、それに1加算したものを返信メールの件名に追加する。
        3. 加算した予約番号を番号保存用アイテムに保存する。
        4. 返信メールを表示する。
        マクロ 2: 設定用マクロ – マクロ 1 で使用される番号保存用アイテムを作成する。
        1. ユーザーからセミナー番号を取得する。
        2. ユーザーから予約番号の開始番号を取得する。
        3. 番号保存用アイテムを現在選択されているフォルダーに作成する。

  106. はじめまして。
    Outlookでトラブルがあってググっていたところ、こちらのサイトにたどり着きました。

    私はOffice for MacのOutlook2100を使っているのですが、
    使い始めて4カ月ほどの間に、突然今までの受信メールが全部消えるということが3回ほどありました。
    いつものようにOutlookを開くと、なぜかメールが消えているのです。
    アカウントの情報を見てみると、以前設定したアカウントが全部消えています。
    (ちなみにアカウントはYahooメールのものです。)

    容量オーバーかなにかでしょうか…?
    たしかに600通くらいのメールがたまっていたような気がするので…
    気持ち悪いので、思い当たる節があったら教えてください><

  107. お礼が遅くなり申し訳ございませんでした。
    うまくいきました。
    どうもありがとうございました。
    今後とも、どうぞよろしくお願い致します。

  108. 10/24 outlooklab さま
    NO.107 
    以下の工程が自動化したい部分です。
    ・ 予約完了フォルダ内のメールの件名に予約番号をつけて上書きする。

    以下の工程は現在、仕分けルールを随時実行しているので番号付与と連動しなくてもなんとかなります。
    むしろ、セッションで同一宛先に自動返信をしてしまうことも頻繁にあり、そういう時はこの仕分けルールでフォルダを指定して再度実行できるので独立しているほうが重宝です。
    ・ 予約完了フォルダ内のメールを仕分けルールで特定のテンプレートで返信、送信済みアイテム配下に移動する。

    確認点
    1.受信した予約申し込みメールは仕分けルールで親フォルダの「セミナー番号/名称フォルダ」に入り、人がチェック後に手動で予約完了フォルダに入れます。
    2. 「テンプレートで返信」する仕分けルールは受信時に実行されていないようです。仕分けルールのオプションを以下に設定して「仕分けルールの実行」ボタンで随時実行しています。
     ・受信トレイ内のメッセージに仕分けルールを適用する:OFF
     ・この仕分けルールを有効にする:OFF
    3. 自動付番したメールを送信済み側(処理済の意)に移動しますので、受信トレイ側の予約完了フォルダは空になり、また新着メールのチェック処理に使います。

  109. Outlook2003を使っています。
    「同期の失敗」フォルダ内の「ローカルの失敗」にメールがあります。(ほとんど受信メール。2通は宛先がブランク)

    ・ここに保存された原因
    ・保存されたメールの処理方法
    を教えていただけますか?

    • ローカルの失敗に保存されているメールは、何らかの理由でサーバーへのアップロードに失敗したものです。
      ローカルのOSTファイルにあるメールが破損しているような場合にサーバーへのアップロードが失敗しますが、そのままフォルダーにあると何度もアップロードを繰り返してサーバーに負荷をかける可能性があるので、ローカルの失敗に移動してしまうようです。
      ローカルの失敗から一度受信トレイなどに移動し、その後やはりローカルの失敗に移動してしまうようであれば、サーバーに保存できない異常なデータが含まれていると考えられます。
      その場合は、そのメールをアップロードすることはあきらめて、個人用フォルダなどに移動して参照するようにすべきでしょう。

  110. おはようございます。何度も申し訳ございません。「コメント by hoge — 2011年8月9日」の名前をハンドルネームhogeに変更、または削除して頂けないでしょうか。現在クローラでこれしか引っかかってませんが、今後名前が外に出て行く予定でして。。。業務の内容を書き込んだのが知られると解雇されてしまいます。GoogleとYahoo!のみなさんにもお願いしていて、諸々の痕跡を全て消して回っています。本当に本当に申し訳ないのですが、何卒よろしくお願いいたします。

  111. お世話になっております。
    「コメントコーナー」で送信してしまいましたので
    改めて「質問コーナー」で送信させていただきます。

    エクセルVBAから『Exchange環境で共有されている他人の予定表を取得する』マクロを利用させていただいております、大変助かっております。

    その際、予定表フォルダに既に共有者名がある場合、このマクロを実行後に、予定表フォルダにさらに同じ名前が追加されてしまいます。
    たとえば、『山田太郎』という共有者名が既に予定表フォルダに表示されていた場合、マクロ実行後には『山田太郎』と
    『予定表-山田太郎』の二つが表示されます。
    この『予定表-山田太郎』を作成しないか、または、実行後に『予定表-山田太郎』を削除するか、どちらかの方法を
    ご教授いただけませんでしょうか?
    お手数をおかけしますが、どうぞよろしくお願い致します。

    • こちら、回答が遅くなりまして申し訳ありません。
      動作確認をして回避方法があるか検討してみますので、しばらくお待ちください。

  112. お忙しい中、ご連絡ありがとうございます。
    お手数をおかけしますが
    どうぞよろしくお願いいたします。

  113. はじめまして。Outlookのマクロについて質問がございます。

    Outlook2003の新規作成メールのメニューバーに独自のメニューとコマンドボタンを作成し、
    コマンドボタンをクリックするとメッセージが表示されるマクロを作成しましたが、
    以下のように正しく動作しませんでした。

    1. 1つ目の新規作成メールを開く→コマンドボタンをクリック→メッセージが表示される
    →OKボタンをクリック→メッセージが閉じる

    2. 1つ目の新規作成メールを最小化

    3. 2つ目の新規作成メールを開く→ウィンドウを最小化(コマンドボタンはクリックしない)

    4. 3つ目の新規作成メールを開く→ウィンドウを最小化(コマンドボタンはクリックしない)

    5. 1つ目の新規作成メールをアクティブにする→コマンドボタンをクリック
    →メッセージが表示される→OKボタンをクリック→メッセージが閉じない!
    →もういちどOKボタンをクリック(※結局メッセージが閉じるまで3回OKボタンをクリックすることになる)

    恐れ入りますが、解決方法をご教示ください。
    また、マクロのサンプルをご提供頂ければ大変助かります。

  114. outlook2007においてマクロが使えなくなってしましました(VBEが開かない)
    現状のoutlook VBAをVB6.0でdll化しアドインとしてテストしていました
    そのアドインのテストの最中にoutlookが異常終了して以降何もできなくなりました
    関係あるかどうかわかりませんがアドインの「microsoft vba for outlook アドイン」が無効になっており、これを繋ぎ直そうとすると「有効なofficeアドインではありません」と怒られてしまいます
    outlookの再インストール、オフィスの再インストールも試みましたが変わりません、ネットもググってみましたがさっぱりです
    VBE以外のoutlookの機能は正常です
    何か情報をお持ちでしたらご教授願います

    • [ツール]-[セキュリティ センター] の [アドイン] で [無効なアプリケーション アドイン] として表示されているアドインを有効にするには、そのウィンドウの下の方の [管理] ドロップダウンで [使用できないアイテム] を選択して [設定] をクリックし、アドインを選択して [有効にする] をクリックしてください。

      • いくらつなぎなおそうとしても結局できませんでした
        その後outlook自体が不安定になり最終的にPCのセットアップからやり直しました
        回答ありがとうございました

  115. お世話になっております。

    Outlookバージョン:2007

    Exchange 2010のメールボックスにOutlook 2007を接続している環境で、件名または本文に特定のキーワードが含まれるメールを受信したら、マクロ/仕分けルール/アクションアイテムなどを活用して、会議(または予定表)アイテムを自動登録する、ということは実現できないでしょうか。

    会議出席者=TO、CCに登録されているメンバ
    件名=メールの件名
    詳細=メールの本文
    時間=受信した時間から24時間後とか

    お知恵を拝借できると大変ありがたいと考えています。

    可能な範囲でご支援よろしくお願いいたします。

  116. OUTLOOK VBAからaddinの状態が取得できますか?
    名前はapplication.COMAddIns.Item(x).Descriptionでとれそうですがそのほかの情報は単純にとれないのでしょうか?
    パス、アクティブ、ノンアクティブ、無効、できるならそのDLLのタイムスタンプ

    • 残念ながら Outlook のオブジェクト モデルではアドインの情報はほとんど取得できません。
      ファイルのパスやタイムスタンプなどの情報はレジストリやファイルから取得する必要があります。
      アドインの状況はユーザー インターフェイスでも確認できますが、スクリプトなどで取得する必要があるということなのでしょうか?

      • 社内にばらまいたアドインの問い合わせ用に今接続されているDLLのバージョンや状況を簡易に知る方法がないかと、、
        お年を召された方に「今アドインどうなってます?繋がってる?タイムスタンプは?」と言ってももなかなか簡単にいかないもので、、この手間を省けたらと、、

        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Outlook\Addinsにはパス情報などが見当たらないんですが
        ご存知でしたらレジストリの場所とキー、取り方をご教授いただければ幸いです

      • 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 の情報を取得することはできなそうです。

  117. ご連絡ありがとうございます。

    お問い合わせ頂いた件ですが、自作のメニュー(”New Menu”)がすでにある場合には何もしない
    というように変更すると新規メールを作成するたびに自作のメニューが追加されてしまいます。
    つまり、新規メールを5通作成しようとすると5つ目のメールのメニューバーには”New Menu”が
    5つ並んでしまう状態です。

    • 何もしないというのは、削除も追加もしないという意味なのですが、追加処理をしなくてもメニューが追加されてしまうのでしょうか?

  118. 初心者です、
    OUTLOOKでメールを受信したら、自動的にOUTLOOKを開き新着メールの本文を全部コピーするマクロなんかあったりしますか?
    最終的には、受信したメールをHPに貼り付ける作業を自動化したいです。
    Outlookバージョン:2007使用。ご教授願います。

    • 受信したメールの本文をテキストファイルなどにコピーするマクロなら作背可能です。
      しかし、最終的にそれを Web に貼り付けるという処理のほうが大変です。
      メールで Web ページの書き換えが必要なら、たとえばメールを送信するとそれがそのままブログの記事になるというようなサービスの利用をご検討されてはいかがでしょうか?

  119. 度々申し訳ございません。
    89.コメント by hoge — 2011年8月11日 @ 4:19 PM | 返信
    も削除いただけないでしょうか。
    お手数おかけし誠に申し訳ございませんが、
    何卒よろしくお願いいたします。

    • はじめまして。資料作成で困っており、どうぞご教示お願いします。
      仕事でoutlook2010を使用しています。メールをファイルエクスポートでエクセル一覧にしたら、日時情報がないため、本サイトの「Outlook 2010 で送信日時や受信日時を含むメッセージの一覧をエクスポートする」の記事を拝見し、やってみましたが、うまくいきません。フォルダによって状況がかわりますが、時刻なしの月日だけしか出力しない、または月日なしの 曜日と時刻しか出力しない といった状況です。
      月日と時刻の両方が必要です。
      outlook2010のパソコン2台及びoutlook2003のパソコンでも試しましたが、同様でした。
      メールの数が多く、手入力ではとても捌けないため、是非お知恵をお借りできないでしょぅか。どうぞよろしくお願いします。

      • 閲覧ウィンドウ (プレビュー) はオフになっていますでしょうか?
        1つのメールが2行にわたって表示されるビューでは、表示される日時情報が一部だけになってしまいます。
        必ず閲覧ウィンドウをオフにしてください。

  120. 初めまして。いつも参考にさせていただいております。

    早速ですが、マクロの要望を投稿させていただきます。
    Outlook2007を使用です。

    メールの内容をエクセルのセルに一つずつコピーすることは可能でしょうか。
    メールの内容につきましては、ニュースの事象がいくつも上下に並んでいるものです。

    また、仕事リストをフラグの有りなしで分類した際、フラグなしの項目にフラグを付けたリストが分類されてしまいます。されないものもあり、混同しています。
    解決法をご存知でしょうか。

    • メールの内容を Excel のセルにコピーするということですが、本文の1行を Excel の一つのセルに対応させるという意味でしょうか?
      それとも、フォルダーのアイテムの一覧のデータを Excel にエクスポートするという意味でしょうか?
      マクロとしては、Outlook のから必要なデータを取得し、Excel の Cells に設定するというだけであるため、可能とは思われますが、どのデータをどのようにコピーするかという詳細が分からないとマクロにできません。

      なお、仕事リストでフラグのありなしで分類した際、メールアイテムはフラグがありになりますが、仕事アイテムはフラグがなしになります。
      特にメールアイテムはフラグがないものはそもそも仕事リストに表示されないのですが、フラグありなしで分類したい理由はなんなのでしょうか?

  121. ツール→オプションの情報ってapplicationの中にありますか?

    メール折り返し設定、エンコード指定の情報ってとれないですか?

    • 残念ながらこれらの情報は Outlook のオブジェクト モデルでは取得できません。
      レジストリからなら取得できると思われます。

      • レジストリの場所、キーとかご存知でしょうか?

        折り返しの状況は送信時には分からなく、受信してみないとどこで折り返されてるか分りません
        受信者からたまにメールが「がったがたやで~」とおしかりを受けることがありますので
        折り返し状況を送信前に確認するプレビューを作りたいと思っています
        これについて方法論のアドバイス等いただければ幸いです
        #132桁にして作成時に気を付ければいいんじゃね、と言われればそれまでですが、、

      • 折り返しの設定は 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 です。

        送信前にプレビューするということですが、ちょっと良い方法が思いつきません。
        むしろ送信前に下手に改行をしないほうが良いのではないかと思います。

      • テキストボックスの幅を改行幅で変化させてそこにbodyを表示させて擬似的な改行状態で対応しました
        テキストボックス以上の行数があったりするとスクロールがついたりしてテキストボックスの改行が変わったりするのでちょっとはまり掛けましたが、、
        まぁ小細工を施しながら一応当初の目的に近いものになりました
        ありがとうございました

  122. フォルダにあるメール一つ一つに対して処理を行うため、下記のようなコードを組んでいるのですが、全てのメールの処理をする前にループを抜けてしまうようです。
    For Each objMail In ActiveExplorer.CurrentFolder.Items
       RewriteSender objMail.EntryID
    Next
    これの原因はわかりませんか?

  123. outlook2007
    新規メッセージ本文上の右クリックのイベントは捕れますか?

    #右クリックからクイックパーツギャラリーにアクセスしたい、、

  124. outlook2007
    返信時(元のメールを引用返信の場合)の_NewInspectorで.bodyを見ると元のメールの本来の本文しか入ってきません
    _NewInspectorを抜けた後の.bodyには元のメールのTOとかSUBJECTがくっついた状態が.BODYになってます

    返信時にメールの先頭に特定文字列を挿入しようとしたんですがこれにより_NewInspectorでbody=文字列 & vbcrlf&bodyとすると
    抜けたあとのメッセージ本文がヘッダー?と本文に挟まれた格好になってしまいます、、

    これを回避する手段がありますか?

    • MailItemを監視してReplyイベントてフラグを立ててなんとか回避できそうなところまではわかりましたが
      複数のメッセージを立ち上げているときにそれぞれを監視(メッセージのアクティブが変わるたびにそのアイテムをMailItemにセット)する方法が分かりません
      inspectorの_Activeがそうかとも思いましたがどうも違うようですし、、
      #一件ずつ開く場合は_NewInspectorでできそうですが最後に開いた奴しか監視できません、、
      #_Replyイベントは_NewInspectorより先に動いてしまうのでタイミングが捕れません、、
      #_Replyイベントは一度キャンセルすると再度走らない(開いたメールの内部になにかフラグでも立ってるのか、、)

      これらを回避する方法、、はないですか、、
      エクスプローラーから複数開かれてもそれぞれが監視できるようにアクティブなメッセージがいつでも処理できる
      返信等のキャンセルに影響しない

      、、

      • 以下のような方法で対処可能と思われます。

        1. NewInspector で Inspector の Activate イベントをハンドルさせる。
        2. Activate イベントで本文に追記し、イベントを解除する。

      • なるほど、、勉強になります
        細かい作り込みはこれからですがデバッグ上の動きではメッセージごとの処理が可能になりました
        いつもご助言ありがとうございます

  125. Outlook2010で、メッセージのインポートについて

    お世話になっております。

    【環境】
    OS:Windows XP sp3
    Outlookバージョン:2010

    業務でOutlookを使用しておりますが、アプリで作成したメッセージを、Outlookにインポートし、下書きフォルダに保存するにはどうすればよいのでしょうか。

    作成されるメッセージはunix mailbox形式のテキストファイルで、To: 、Cc: 、From: 、Reply-To: 、Subject: 、および、本文が記入されています。これらを、宛先、CC、差出人、返送先、件名、本文に入力して、下書きフォルダに保存したいのです。
    作成されるメッセージは1通~数10通の場合がありますが、1メッセージ/1ファイルです。添付ファイルはありません。また、メッセージファイルはExcelのマクロで作成しているので、書式は変更することが可能です。

    やはり、マクロで読み取らないと無理なのでしょうか。

    • 自分でもいろいろ調べてみました。外部で作成したメッセージを簡単にインポートする方法は無さそうなので、結局、自分でマクロを作ってしまいました。

      上で、From:で差出人も指定できるように書きましたが、これでは差出人詐称になってしまいますね(笑)。
      上記、マクロには、もちろん差出人詐称(!?)機能は実装しませんでした。

      これからも、マクロ作成の参考にさせていただきます。ありがとうございました。

  126. 初めまして。

    早速ですが、マクロの要望を投稿させていただきます。

    outlook2007を使用しております。
    以前、”任意のアカウントで返信するマクロ”と”返信メッセージで表示名をアドレス帳のものに置き換えるマクロ”を公開されて
    おりましたが、これを合体させたマクロは、ありますでしょうか。
    任意のアカウントで返信メッセージの表示名をアドレス帳のものに置き換えたいのですが、
    御検討をお願いできませんでしょうか。

    宜しくお願い致します。

  127. お世話になります。130番の質問の件です。コメントありがとうございます。
    「表示」タブ→「閲覧ウィンドウ」で「オフ」としており、閲覧ウィンドウは使用しておりません。他に何か気をつける点があるでしょぅか?

  128. お世話になります。131番の質問の件です。コメントありがとうございます。
    「表示」タブの「閲覧ウィンドウ」にて「オフ」を選択しており、閲覧ウィンドウは使用しておりません。他に気をつける点はあるでしょうか?
    よろしくお願い致します。

  129. メッセージの検索に関して教えていただきたいことがあります。

    OS:Windows XP SP3
    Outlook2007(自宅)および、Outlook2010(会社)

    過去のメールを探すときキーワードを使って検索しますが、一回で目当てのメールが見つからない場合でも、一連のやり取りの中での関連するメールが見つかることがあります。しかし、前後のメールや、一連のメールの最初から続けて読みたくても、検索にヒットしなかったメールは読めません。
    こんなとき、検索結果の一覧で、選択しているメールのファイル/フォルダの場所に行ければ良いと思うのですが、そのような方法はありますでしょうか?

    • 残念ながら標準の機能ではアイテムが含まれているフォルダーを開くということはできないようです。
      マクロを使えば可能と思われます。

      • 回答ありがとうございます。
        そうですか、やっぱりマクロを使わないと無理ですか。
        Outlookのオブジェクトモデルがよく理解できていないので、学習のヒントでもいただければ、ありがたいです。

  130. お世話になります。コメントありがとうございます。先週追伸を書込んだのですが表示されていないので、確認したら前の方の129と130番に書かれておりました。失礼いたしました)
    「Outlook 2010 で送信日時や受信日時を含むメッセージの一覧をエクスポートする」際に時刻が出力できない件について、
    「表示」タブの「閲覧ウィンドウ」にて「オフ」を選択しており、閲覧ウィンドウは使用しておりません。他に気をつける点はあるでしょうか?
    よろしくお願い致します。

    • 返信が遅くなりましてすみません。
      メッセージ一覧を表示している際に、受信日時などは正しく表示されていますでしょうか?
      もし、一覧表示で既に時間などが表示されていないようであれば、以下の手順で表示形式を変更してみてください。
      1. メッセージ一覧の上部の表示形式を変えたいフィールド ([受信日時] など) を右クリックし、[表示フィールドの書式設定] をクリックします。
      2. [表示形式] のドロップダウンからエクスポートしたい形式を選択します。
      3. [OK] をクリックします。

  131. こんにちは。Outlook2010を使っております。メール検索漏れ対策をご存知でしたら教えてください。
    仕事の重要なメールが多いため、数年来のメールの多くを保存しています。結果、受信トレイ1GBに加えてオフラインpstファイル5つに各10GB弱で、合計50GB弱のアウトルックメールを使っています。SSDなので検索は十分高速に行えるのですが、何故か時折検索がうまく行かない時があります。存在することがわかっているメールが、Outlookのメール検索機能を利用して適切な検索ワードで探しても、検索できないという意味です。毎回エラーが起きるわけではなく、なぜか時折問題が生じます。
    対策をご存知でしたら、教えて頂けますでしょうか?
    もしもOutlook内のソフトでは無く、他社の検索ソフトなら便利というような事でも、もちろん有り難いです。Googleデスクトップでは問題無く検索できますが、Googleデスクトップは、検索条件の設定が少なすぎ、また検索結果のソートが分かりづらく、特定の検索で500メールが検索されてそれの中から目当てのメールを探す際などは結構不便だと感じています。
    宜しくお願いいたします。

  132. 返信が遅れまして大変申し訳ございません。
    お問い合わせいただいた件について確認しましたが、
    追加処理をしない場合はメニューは追加されませんでした。

    • 追加処理をしない場合にメニューが追加されないとのことですが、何もしないのはメニューが既に存在する場合ですから、追加されなくても問題ないと思います。
      ロジックとしては、追加しようとしているメニューが既に登録済みであるかを確認し、登録済みでない場合だけ追加する、ということなのですが。

  133. BVA初心者です。
    早速ですがご教授願います。

    Outlook2003を使っているのですが、本文に特定の文面が含まれるメールを受信したら別のメアドに①そのメールを転送する、②特定のファイルと本文を送信する

    こういったアクションをするマクロは作成可能なのでしょうか?よろしくお願いします。

    • メールを転送したり、特定のファイルと本文を送信したりということはマクロで可能ですが、単なる転送ならマクロを使わずルールだけで十分です。
      やりたいことは転送したメールに特定のファイルを添付するということなのでしょうか?
      それとも、受信したメールと特定のファイルを新たなメールに添付して送信するということでしょうか?

      • お返事ありがとうございます。
        仰るとおりで、ある文面を含むメールを受信したら、受信したメールと特定のファイルを新たなメールに添付して自動送信するという動きになります。

  134. よく使うメール宛先が宛先リストの下の方にあって
    必ずスクロールすることになります(宛先リストの記載順が連絡先での順と違うのも理解できません)。

    指定した名前(メールアドレス)を上に持って来ることはできませんか。

  135. Outlook2007でマクロを利用して予定表の書き出しを行っています。処理に数秒から十数秒かかるので、マクロが実行中であることをユーザ(私)に通知するようにできないかと思っています。

    Excelだと
    Application.StatusBar = “実行中…”

    を使ってステータスバーにメッセージを表示できるのですが、Outlookにはステータスバー自体がありません。

    何かよい方法をご存じであれば、ご教示ください。

    • VBA ではフォームを作ることもできるので、そのフォームの Initialize イベントで実際の処理を実装し、マクロ自体は定義したフォームを表示するだけにする、という方法が考えられます。

  136. いつもお世話になっています。

    選択したメールの重要度をまとめて変更するマクロを作りましたが、思うような動作をしません。
    どこが悪いのかわかりません。原因がおわかりでしたら、ご教示いただけませんでしょうか。

    ’選択した複数のメールの重要度を、一括して「通常」に変更する
    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

    • こんにちは。私のOutlook2007でも同じようになりました。

      お示しのマクロのFor Each処理に「MsgBox oMail.SenderName」を入れると、ちゃんと選択されたメールの発信元がが順々に表示されますので、マクロのロジックは正しいのだと思います。

      手動で重要度を変更する場合、変更したいメールで右クリックのコンテキストメニューからメールのプロパティを開き、重要度を変更できます。ところが、複数メールを選択して右クリックすると、コンテキストメニューにプロパティが出てきません。これからの推測ですが、Outlook2007では、複数メールの重要度をまとめて変更することはできない仕様なのではないでしょうか。

    • oMail.Importance = olImportanceNormal の後に、oMail.Save が必要です。
      プロパティを設定しても、Save メソッドを実行するまでは保存されません。
      選択解除を行ったときに、最初の 1 通だけは自動的に保存されるのでしょう。

      • 早速のご回答、ありがとうございます。
        oMail.Saveメソッド実行するようにしたらできました。
        ありがとうございました。今後とも、よろしくお願いします。

      • 半端な知識で間違った書き込みをしてしまいました。yachtman004様、大変失礼しました。ラボ主様、ありがとうございました。

  137. 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のように元通りにする方法は有るのでしょうか?

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

    • Outlook で PST を開くと、それは別のツリーとして読み込まれます。
      CTRL キーを押しながら 6 を押すとツリーが表示されるので、どういう状態かはわかると思います。
      そして、連絡先フォルダーを右クリックし、[プロパティ] をクリックして [Outlook アドレス帳] タブの [電子メールのアドレス帳にこのフォルダーを表示する] をオンにすると、アドレス帳を表示した時に上の方に表示されているドロップダウンで追加された連絡先フォルダーが選択できるようになるのです。

      これを踏まえて質問に回答すると以下のようになります。
      1. C のデータは A をアドレス帳に表示したものになります。
      2. これは、B の内容を C として表示したい、ということでしょうか? その場合は、上記の通り [電子メールのアドレス帳にこのフォルダーを表示する] をオンにするとアドレス帳に表示することはできます。
      ただし、ドロップダウンには「連絡先」が二つ表示される状態となります。
      3. PST の連絡先を別ツリーではなく既存の連絡先に戻したい場合は、[ファイル]-[インポートとエクスポート] で [他のプログラムまたはファイルからのインポート]-[個人用フォルダ ファイル (pst)] でインポートします。

  138. フィールドのアクセス方法について教えてください。
    Outlook2007の受信トレイに既にCategoriesというフィールドがあると思いますが日本語でカテゴリというフィールドを新規作成しました。VBAから選択されているアイテムのカテゴリフィールドに書き込みを行いたいのですがどのように行えばよろしいのでしょうか。
    宜しくお願いします。

    • アイテムが objItem とすると、以下のようなコードで値を設定できます。

      objItem.UserProperties(“カテゴリ”).Value = “設定する値”

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

        試しにApplication.ActiveExplorer.Selection.Itemが返すオブジェクトで
        MailItemオブジェクトであるものを取得し
        UserPropertiesプロパティから
        作成したカテゴリフィールドを探そうとしたのですが見つかりませんでした。
        (UserProperties.Countは0)

        そもそもOutlookのオブジェクト構造を理解していないので
        objItemの取得が悪いのではないかと思います。

        Outlookで既に受信トレイが選択されている状態としたとき
        objItem.UserProperties(“カテゴリ”).Value = “設定する値”
        のobjItemを取得するにはどのようにしたらよいのでしょうか。

      • プロパティはフォルダに対して追加されたようですね。
        その場合、個々のアイテムにはプロパティが存在しないので、以下のようにします。

        Set objProp = objItem.UserProperties.Add(“カテゴリ”,olText) ‘ キーワード型なら olText ではなく olKeywords
        objProp.Value = “設定する値”

  139. いつも大変参考にさせて頂いております。

    大変、お忙しい所恐縮ではありますが、お力添えをお願い致したく
    投稿させて頂きました。

    会社にて以下仕様のPCに刷新を行いました。

    OS:Windows7 Pro
    バージョン:Outlook 2010

    その際、「送受信グループ」内の「次の時間ごとに自動的に送受信を実行する」
    の時間をデフォルト(30分)⇒(10分)に変更したのですが、
    急遽、時間を元に戻して欲しいとの要望があり、途方に暮れております。
    対象端末が1000台程あり、エンドユーザーに任せるのではなく、AD等のログインスクリプト
    を使用して何とかならないのか?と言われています。

    当方なりに色々と調べてはみたのですが、送受信グループ自体
    Outlookプロファイル毎に設定されているみたいでなかなか手が出しづらく
    困惑しております。

    何か手立ては御座いますでしょうか?
    何卒、ご教示の程、宜しくお願い申し上げます。

    • 設定を初期状態に戻したいということであれば、%appdata%\Microsoft\Outlook にある拡張子が SRS のファイルを削除すれば送受信の設定が初期状態に戻ります。

      • ご返信誠に有難う御座います。

        取り敢えず、時間設定は初期状態に戻りましたので
        ほっと致しました。ありがとうございます。

        動きとしては、送受信グループの再作成を行ったと解釈すれば
        宜しいのでしょうか?
        その場合、IMAPキャッシュダウンロード方法(ヘッダーのみ・全ダウンロード)
        は消えてしまいますね。

        取り敢えず、適用には慎重になり、リスクも考えた上で
        着手しようと思います。

        ありがとうございました

      • そうですね。送受信設定に含まれるものは初期化されますので、IMAP のダウンロード方法も削除されることになります。

  140. はじめまして。
    いつも勉強をさせていただいております。

    Outlookのフォルダ一覧に表示されているメールボックス名の変更について教えてください。
       OS:WinXP  Outlook:outlook2007

    Outlook画面のフォルダ一覧には〔メールボックス-名前〕が表示されていますが
    この参照先になっているExchangeサーバー側を変更してもOutlook側が変更されません。
    (端末の再ログオン,Outlook再起動を実施済み)

    要は結婚などで氏名が変更になった場合、Exchange側を変更したらユーザー側である
    Outlookは何もしなくてもメールボックス名が変更されるようにしたいと思っています。
    プロファイルを再作成すれば変更されるのは実際にやってみて確認をしましたが、
    実際にはユーザーに再作成をさせることは出来ません。

    どこか設定がおかしいのでしょうか? それとも無理なことなのでしょうか。

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

    • 残念ながら、Exchange 側の表示名などを変更しても、自動で Outlook のプロファイルに反映されることはありません。
      Outlook の機能ではメールボックスの表示名の変更の反映はプロファイルの再作成が必要です。
      Extended MAPI でプログラムを作成すればプロファイルを再作成せずに変更が可能ですが、ちょっと敷居が高いかもしれません。

  141.  こんにちは、はじめまして。
    いつも活用させて頂いてます。

     教えてください。
    受信メールの一覧表示で各メールに メモ的なモノを書き加えたいのですが、可能でしょうか?
    フィールドの表示が   差出人 件名 ”メモ” 受信日時    の様な一覧表示で、
    “メモ” の部分に 直接書き込めれば ベストです。

     フィールドの選択から 新規フィールドで “メモ” (テキスト)を作ってみましたが、
    編集する方法がわかりません。

    Outlook2007 です。

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

  142. はじめまして。

    検索からこちら↓にたどり着きました。

    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のメッセージをローカルに保存する方法はありますでしょうか。
    よろしくお願いいたします。

  143. はじめまして。
    社内のメール環境の整備のため、
    http://www.tp1.jp/mem/memb02_settool.html
    のような、自動でoutlookやwindowsメールの
    メールアカウント設定ができるツールを作りたいと
    思っているのですが、どう作れば良いのか見当も
    つきません。作り方またはここら辺の情報を提供している
    サイトなどの情報がありましたら、ご教授ください。
    vb,vc++など言語は拘りません。

    • 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 を参照してください。

  144. カジモどんと申します、初めて参加させていただきます。よろしくお願いいたします。
    Windous7、Outlook2007を使用しています。
    お客様の来店予約管理をしようと、予定表ビューをカスタマイズしているのですが、行き詰ってしまいました。
    TODOバーの仕事リスト1件に顧客1人を割り当て、連絡先フォルダで管理している顧客情報のうち、顧客ID、顧客氏名、ふりがなの3項目を自動的に表示させたいのですが、方法はありますでしょうか?顧客数は現在7,000名程です。
    仕事リストから任意の顧客のリストを予定表に直接ドラッグしようという魂胆です。
    みなさんのお知恵をお借りしたくよろしくお願いいたします。

    • Outlook のビューだけでご要望を実現することは困難と思われます。
      最終的に顧客のリストを予定表に直接ドラッグするというのは、具体的にはどういう結果を意図してますでしょうか?
      もし、仕事リストのアイテムに関連付けられている連絡先アイテムの情報を本文に追記して新規に予定を作成するということであれば、そのようなマクロを作れば実現可能かもしれません。

      • ご回答誠にありがとうございます。まさにoutlooklabさんのおっしゃるような動きをイメージしておりましたが、その後進展がありまして何とか解決の道筋が見えてきたところです。また少し自分で頑張ってみます。御親切に感謝申し上げます。今後ともよろしくお願いいたします。

  145. いつもお世話になります。

    Outlook 2007でApplication_ItemSend()を利用してマクロを作成しているのですが、
    どういうわけかメール送信ボタンを押してもごく稀にフックされないことがあるようです。

    Salesforce for OutlookというCOMアドインを入れてからのような気もしますが、
    これが有効でもフックされる場合がほとんどで、フックされないのはごく稀です。
    どういう場合にフックされないのかがわからず困っています。

    何か思い当たる原因は無いでしょうか?

    • Saleforce for Outlookというアドインを入れてからのような気がするとのことですが、それをアンインストールしたら現象は発生しないのでしょうか?
      もし、発生しなくなるのだとしたら、そのアドインも ItemSend イベントを使用しており、その処理に何らかの問題があるためマクロが実行されないという可能性があります。
      その場合はアドインの開発元にご相談ください。

      • コメントありがとうございます。

        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アドイン” を「アクティブなアプリケーション アドイン」側に復活させる方法でも構いませんので、何か対処方法等もし心当たりがございましたらご教授頂けると幸いです。

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

      • 「Microsoft VBA for Outlookアドイン」というのは VBA マクロを実行するためのアドインであり、これがアクティブでなくなると Application_ItemSend のような VBA で実行されるイベントが実行されなくなります。
        再起動すると復活するということですので、一時的に何かがマクロのアドインを無効にしてしまっていると思われますが、何がそれをやっているのかがわからない限り回避させるのは難しいと思われます。
        VBA のアドイン以外のアドインを止めて現象が起こらなければそのアドインが原因と思われますので、それを外すぐらいしかできることはないでしょう。

  146. いつもお世話になっております。
    Exchange Server2007 Outlook2010を社内で使用しております。

    予定表の共有の有無を社内ユーザー数(約1万人)の調査を毎月しております。

    Outlookのクライアントから予定が共有化されているか、一人づつ検索するという方法で
    調査をしております。

    調査方法が非常にアナログで、単純に共有されてるかどうかを調査するだけなので、マクロで自動化できないかと考えております。

    何卒、ご教示の程、宜しくお願い申し上げます。

  147. お世話になります。
    「2007outlook予定表印刷アシスタント」について教えてください。
    windows7、outlook2010を使用しています。
    予定表を1か月ごとに印刷をし、終了予定を管理しています。
    仕事で使っていますので、月曜日を週の最初とした場合、月によっては2か月にまたがって印刷されてきてしまいます。
    解決方法の一つとして、マイクソフトのサポート窓口で「2007outlook予定表印刷アシスタント」を教えていただきダウンロードいたしました。
    希望に近い形で印刷できそうなので、使いたいのですが、印刷可能のどのプリンターを指定しても「2007microsoft office componentは応答していません」となります。
    何か設定が必要なのか、考えられる原因がおわかりであれば教えていただえれば助かります。
    よろしくお願いいたします。

  148. はじめまして。Windows7でOutlook2007を会社で使っております。
    数名の間で以下の症状が確認され、解決策がないかと困っております。もしご存知でしたら教えて頂けますと幸甚です。

    ・メール本文を書き終えて送信すると、書き途中の時点の内容が送られてしまう。
    (送信済みメールボックスを見ても、書いたはずの終盤の文章や編集結果が反映されていない。)

    →素人の推測では、自動保存が行われた時点の内容に、バグ(?)で戻ってしまって、メールが送られているのかも、と思います。
    自動保存の間隔は1分です。たまに起こるので、発生条件が分かりません。

    以上となります。どうぞ宜しくお願い致します。

    • http://support.microsoft.com/kb/973404 に記載されている以下の不具合ではないかと思います。

      ・次のシナリオを検討してください。
      ・新しい電子メール メッセージを作成および保存するのには、 下書き フォルダーです。
      ・メッセージ本文に新しい内容を追加し、メッセージを送信します。
      このシナリオでは、メッセージで、 送信済みアイテム フォルダーまたは受信者の [受信トレイ] フォルダーで新しい内容を含んでいません。

      この KB の修正プログラムを適用するか、Office 2007 の SP3 を適用してみてください。

  149. はじめまして。このWEBサイトにはかなりお世話になっています。

    マクロの要望です。
    「返信や転送時の引用文前に挿入されるヘッダー情報を変更したい。」

    検索すると同様の質問はあるのですが解決策は見つかりませんでした。
    私は諸事情でThunderbirdから乗り換えたのですが、どうもこの分厚いヘッダー部が嫌なのです。
    そこで、Thunderbirdライクに

    「(yyyy/mm/dd hh:mm), %name% wrote:」

    と書き換えるか、もしくは一部だけ削って

    「—–Original Message—–
    From: %name% [mailto:hoge@fugafuga.com] 」

    の様にするマクロは可能でしょうか。
    当方の環境はOutlook2010+Win7、Outlook2007+WinXPです。
    もし作って頂ければ多少は自分でアレンジすることも考えています。
    (まだマクロのさわり(しかもExcelの)しか分からないもので、、、)

    以上宜しくお願い致します。

      • ありがとうございます!
        早速試してみましたが、返信時だけ元メッセージが引用されていません。転送時は引用されています。
        また、メッセージウィンドウからではなく(メッセージを開かずに)受信トレイウィンドウから直接実行したり、アドオンの様に「返信・転送したら自動で機能が実行される」(従来と同じ作業で機能を実現する)というような事は無理でしょうか。マクロだと難しそうですが。
        とりあえずはショートカットを割り当てて使ってみます。これでも希望通りの動きになりそうです。

      • 受信トレイから直接実行するには、ActiveInspector.CurrentItem を ActiveExplorer.Selection(1) に置き換えます。
        なお、返信・転送時に自動で行うとなると、ちょっとマクロでの実装は複雑になりますので、ショートカットの割り当てでお願いいたします。

      • マクロを見てみましたが、返信時だけ元メッセージが引用されない原因が分かりません。
        根本的にどこかの知識が不足しています。すいません。
        更に、返信時は「> (yyyy/mm/dd hh:mm), %name% wrote:」と先頭に引用符号(>)があるのですが、
        転送時は先頭に引用符号が付きません。元メッセージ全てが引用符号の無い文となっています。
        (返信時は元メッセージが無いので返信時の元メッセージに引用符号が付くかは分かりません。)

        引用符号の設定を反映させる事は難しいでしょうか。
        う~ん、根本的にやり方を考え直した方がいいんでしょうかねぇ。

      • 失礼しました。
        インデント記号をつけて返信や転送する場合を考慮していなかったので、考慮するようにマクロを変更しました。

  150. お世話になります。
    ひとつ教えてください。Outlook2003を使用しております。

    メールを転送する際に、元のメッセージを添付するときと、
    元のメッセージを残して送信するときとあります。
    その場合、「オプション」→「メールオプション」→「返信/転送時のスタイル」で
    切り替えを実施しております。
    マクロで実施することは、可能でしょうか。

    • マクロで設定を変更することはできませんが、添付して転送の処理をマクロで実装することは可能です。
      サンプルを作って後程公開します。

  151. 質問です。Outlook 2003で毎日8:00に当日のスケジュールが印刷されるよう設定するマクロをどなたか教えていただけないでしょうか。

    • Outlook には指定時刻にマクロを実行させる機能はないため、Windows のタスクで実行する必要があります。
      また、予定表を印刷するという機能もマクロにはないため、当日のスケジュールを HTML ページなどで作成し、印刷するという処理が必要となります。

  152. お世話になります。

    初心者です。
    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に挿入されないようにしなければならない状況です。
    何卒、ご教示の程、宜しくお願い申し上げます。

    • Outlook 2003 では送信に使用されたアカウントを識別する方法はありません。
      そのため、特定のアカウントを使った、という条件でマクロの動作を変えることができないということになります。
      代替案として、メールの秘密度により BCC の付与を制御するというのはどうでしょうか?
      メールの作成時にツールバーのオプションで秘密度が選択できます。ここで標準以外を選択すると、Item の Sensitivity プロパティが 0 以外になりますので、これを基準にして BCC を追加するかどうかを判断するというものです。

  153. エクセルからVBAでOUTLOOK2007の予定表へ、予定アイテムを登録しようとしています。
    現在のところ
    Set myFolder = myNameSpace.GetDefaultFolder(9) ‘起動時フォルダーで、指定 カレンダー指定
    で、OUTLOOKデフォルトの予定表への登録ができています。

    しかし、OUTLOOKは複数の予定表を作れますので、デフォルトの予定表ではなく、自分で後から作った予定表に予定アイテムを登録したいと考えています。
    その場合、myNameSpace.GetFolder(フォルダID)で取得できると思っているのですが、このID自体の取得ができていません。

    複数ある予定表のうち、特定の予定表への登録をする方法をご存知であればご教授いただけないでしょうか?

    なお、目的としては、OUTLOOK内に「iCloud内の予定表」という予定表があり、これがiCloudによりiPADやiPhoneへ自動で連携されているので、ここへ予定を追加したいということになります。現状では、iCloud内の予定表ではなく、デフォルトの予定表への登録しかできていません。

    何卒、ご教示のほどお願いします!

    • iCloudの予定表はフォルダーの一覧で表示した際にツリーのどこに追加されるのでしょうか?
      例えば、フォルダーの一覧で “iCould” があり、その下に “予定表” として iCloud の予定表があるなら、以下のようにして取得可能と思われます。

      Set myFolder = myNameSpace.Folders(“iCloud”).Folders(“予定表”)

  154. 早速のご教示ありがとうございました。

    以下のコードでトライしまして、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を指定しなければいけないのかもしれないとトライしていますが、今のところ上手く行ってはおりません。)

    お忙しいところ申し訳ないのですが、なにかご教示いただけるところはありますでしょうか?
    どうぞ、よろしくお願いします。

    • 取得したフォルダーにアイテムを追加する場合は、以下のようにします。

      Set objITEM = myFolder.Items.Add()

      あるいは、アイテムを作成し、保存した後に、以下のようにフォルダーへ移動するという方法もあります。

      objITEM.Move myFolder

  155. はじめまして、お世話になります。

    ご教示ください。
    こちらで公開されている「仕事と予定の重複アイテムを削除するマクロ 」は当方が探していたものと
    一致し感激しました。
    是非、参考にさせて頂きたいと思い、とりあえず全文をコピペして実行してみたところ・・・。

    If colItems(i).Body = colItems(j).Body And _
    colItems(i).Start = colItems(j).Start And _
      colItems(i).End = colItems(j).End Then

    配列のインデックスが範囲内にありません。と出ます。
    対策をお教えいただけないでしょうか?

    • アイテムを削除する際には For を最後から実行しなければならないことを失念していました。
      修正しましたのでご確認ください。

      • 申し訳ありませんが、もう少しお付き合いください。

        本日確認時には問題なかったのですが、重複する予定が「3件」以上ある場合は、やはり
        「配列のインデックスが範囲内にありません。」と出るようです。
        どうしても自力で解決できません。
        引き続きよろしくお願いいたします。

  156. はじめまして。次のマクロ作成について教えてください。
    Outlook2010を利用しています。

    仕分けルールの実行をマクロ処理で行いたいと思っています。
    以下の手順をマクロ化することは可能でしょうか。
    (手順は仕分けルールの実行ダイアログ内です)

    1.実行する仕分けルールの選択 : すべて選択
    2.実行するフォルダー        :受信トレイ
    3.メッセージの種類         :全てのメッセージ
    4.今すぐ実行

    2と3はソース内で変更できるようにしたいです。

    ご教示のほどお願いします。

  157. はじめまして。
    Outlook2010で分割メールを結合するマクロ「MergeMessages」で
    容量の大きなメールを結合すると
    「myTemp.Attachments.Add strFileName, olByValue, 99, “結合されたメッセージ”」
    の行でエラー(number:-2147467259)になってしまいますが
    C:\Users\****\AppData\Local\Temp\結合されたメッセージ.eml
    には結合されたものが格納されており
    添付ファイルも取り出すことができます。
    どうにかして
    C:\Users\****\AppData\Local\Temp\結合されたメッセージ.eml
    をエクスプローラーからダブルクリックして開くように
    開きたいのですが
    これをマクロで行うことは可能でしょうか?

  158. はじめまして。初心者なのでお手数ですが教えください。OUTLOOK2007のかな文字入力の仕方です。よろしくお願いいたします。

  159. 初めまして、宜しくお願いいたします
    outlookのファイルが二つあります。(outlook)と(outlookデータファイル) このうちの後者を削除したいのですが、どなたか方法を教えて下さい。

    • 削除したいというのはプロファイルから削除したいのでしょうか? それともファイル自体を削除したいのでしょうか?
      また、Outlook のバージョンはいくつでしょうか?

  160. 仕事で、係の予定を共有する際に、一覧性を確保したいので、エクセルで予定表を作っています。
    ところが、それでは、出席予定者にいちいち同じ内容を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で良い?)
    こういった状況なのでどうしたら良いか全くわかりません。

    申し訳ないですがよろしくお願いします。

       

  161. お世話になります。VBA初心者の者です。
    社内で使用しているOutlook2003で、受信した時に社内のLDAPサーバーを参照して、差出人をLDAPの表示名に振り替えるマクロを探しています。
    「メッセージの差出人を連絡先の表示名に置き換え、さらに連絡先ごとのフォルダに振り分けるマクロ」
    「Outlook 2003 で受信者の詳細な情報をグローバル アドレス帳から取得するマクロ 」
    あたりを組み合わせればできるかと試したのですが、うまく動きません。
    サンプルとなるマクロを教えていただきたくお願いいたします。
    環境
    クライアントはoutlook2003
    LDAPは、アドレス帳にて表示可能(連絡先には取り込んでいない)
    LDAPは社内にあり、ADにて構成されている。
    よろしくお願いいたします。

  162. 初めまして、よろしくお願いいたします。

    Outlook2003+Exchangeの環境で使用しています。

    メール受信時にメールヘッダを参照できないかという相談です。

    先日、差出人を偽装したメールが発見されたとかで、
    「怪しいと思われるメールはメールヘッダで送信元サーバなどを確認するように」
    という指示が出ました。

    そもそも、差出人が偽装されているので、なにをもって怪しいとするのか不明です。
    とはいえ、受信メール全てのメールヘッダを確認するのも現実的ではありません。

    そこで、メールを受信したらメールヘッダのReceived: fromで始まる行を本文に付加
    できないかと考えました。

    以下のような処理をするVBAをメール受信時に実行させることは可能でしょうか?
     ①受信したメールのメールヘッダを取得する
     ②メールヘッダのあたまからReceived: fromで始まる行を探していき、最後の2つ
    を記録する
     ③本文の冒頭に記録した内容を付加する

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

    • Outlook 2003 の場合、メッセージヘッダーを取得するには CDO のインストールが必要となります。
      また、差出人だけでなく、Received ヘッダーも偽装は可能ですので、最後の 2 つだけを取り出したとしても、それで怪しいかどうかを判断することは難しいと思います。(確認するならすべての Received ヘッダーの整合性を見る必要があります。)
      差出人の偽装を防ぐには S/MIME 署名や Sender ID などを使用したほうが良いのではないでしょうか?

      • ご回答ありがとうございました。
        仰るとおりかもしれません。他の方法を考えて見ます。

  163. はじめまして

    Exchange 環境で共有されている他人の予定表のデータを取得するマクロ
    を拝見させていただきました。

    そのなかでユーザ名をインプットボックスから取得していますが、予定表にチェックがついているユーザのデータを取得する方法はありますでしょうか

    よろしくお願いします。

  164. Outlookの使用法についての質問です。
    Outlook2010を使用しています。
    受信したメールをオリジナルなエンコーディングのまま取り出す方法を教えていただきたいのですが。ヘッダーや添付ファイルも含んだメール全体を, メーラがデコードしたりレンダリングする前の形(ネットワークから受信した生データ)で取り出したいという意味です。vbaスクリプトを使用する方法でもかまいません。

    • Outlook はメッセージを受信し、PST などに保存する際、元のメールのヘッダーなどを解析して MAPI プロパティに分割して保存します。
      そのため、デコードする前のデータは失われており、プログラムなどで取得することはできません。
      C++ を使えば、MAPI プロパティから MIME 形式のメッセージを再構成することも可能ですが、それは受信した生データとは異なるものとなりますので、ご要望のものとはならないでしょう。
      受信した生データをそのまま使用する必要があるのであれば、Outlook 以外のメールクライアントを使ってください。

  165. いつも参考にさせていただいております。
    Outlook 2010のTo doバーに表示される予定は、pstのデータ ファイルのもののみでしょうか。Outlook ConnectorによりWindows Liveのマイ カレンダーを表示している場合は、[重ねて表示]をしても、マイ カレンダーを最上位にしても表示されないようです。もしマイ カレンダーをTo doバーに表示する方法がありましたらお知らせいただければ幸いです。

  166. 会社の会議室予約をExchangeServer+Outlook2003でするようになっているのですが、自分が使用したい日時の各会議室の予定表をチェックして空きのある部屋を抽出するマクロを「Exchange 環境で共有されている他人の予定表のデータを取得するマクロ」をベースに1室毎に指定日時の予定がNothingがそうでないかをFor文で回すようにして作成しました。1部屋(1ユーザ)のチェックに1~5秒かかってしまい40部屋チェックするのに数分かかります。複数の指定した部屋(ユーザ)の指定日時の予定有無を一括でチェックできる手段はないでしょうか?

    • 特定の日時で予定が入っているかどうかだけを確認するなら空き時間情報を取得するという方法があります。
      マクロでも使えますが、グループスケジュール機能ですべての会議室をまとめカレンダーを作成し、それによって空き時間を確認するというのはどうでしょうか?

  167. 質問:マクロで本文に改行を入れたい
    バージョン: 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

    • VBA では改行は vbCrLf であらわされます。
      そのため、下記のとおり修正することで、ファイル名の直後に改行を入れることができるでしょう。

      修正前:
      objItem.Body = strFileName & ” ” & objItem.Body ‘添付ファイルの保存先を加える
      修正後:
      objItem.Body = strFileName & vbCrLf & objItem.Body ‘添付ファイルの保存先を加える

  168. お世話になります。早速試してみたところ、改行を入れることができました。ご教示ありがとうございました。チャールズ

  169. oulookのメール転送についての質問です。
    win7、outlook2010を使用しています。宜しくお願い致します。

    ある日、今まで転送できていた人(Aさん)への転送ができなくなってしまいました。

    私がメールを転送しようと転送ボタンを押し、宛先にAさん、CCにBさんを入れ転送したところ、Aさんは受信せず、Bさんだけが受信してしまいます。
    私の送信済みboxの中にはちゃんとそのメールが入っています。エラーも何もでません。

    メールを新規作成して宛先にAさん、CCにBさんを入れ、転送内容を本文にコピペすると、これはAさんもBさんも受信できます。

    またBさんが同じメールを、宛先にAさんを入れて転送すると、これもAさんは受信できます。
    Aさんから私に転送メールを送ると、私は受信できます。

    つまり私からAさんへの転送だけがなぜかできなくなってしまいました。(今まではできていました)

    一応セーフモードで起動してからも試してみましたが、結果は同じでした。

    一体何が原因なのでしょうか?また、対処法はありますでしょうか?
    恐れ入りますが、宜しくお願い致します。

    • Outlookでエラーが表示 されないという以上、メールの送信はできているはずです。
      オプションの [配信確認の要求] (開封確認の方ではありません) をオンにして転送してみてください。
      もし、それで A さんのサーバーから配信通知が返ってくるなら受信側の問題となるでしょう。

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

        あれから数日経ち、Aさんのoutlookは、さらに新規作成のメールも受信しなくなりました。
        これも私からのメールだけで、ほかの方からのメールは受信できています。

        [配信確認の要求]もオンにして送信はしたのですが、恥ずかしながら配信通知の確認方法がわからず困っています(Aさんはやはり受信していません)

        [送信済みアイテム] フォルダーの中の[配信確認の要求]を設定して送信したメッセージをダブルクリックして開き「メッセージ」タブを見るのですが、「表示」グループがありません。
        この「表示」グループの中にある「確認」ボタンで通知の確認ができると思っていたのですが、違うのでしょうか?

        初心者で恥ずかしく申し訳ありませんが、ご教示願います。
        どうぞよろしくお願い致します。

      • 配信確認の要求をつけてメールを送信した場合、相手方のサーバーに正しく到達していればサーバーから配信済みの通知が返ります。
        そのようなメッセージを受信していないということであれば、相手方のサーバーに届いていないか、サーバーが配信確認要求をサポートしていないということが考えられます。
        たとえば、受信側サーバーの迷惑メールフィルターなどに引っかかったりしていないでしょうか?

  170. outlook2010で受信したメッセージを自動的に再送信するVBAプログラムを作成したいと考えているのですが、初心者のため苦戦しています。
    開いているメッセージを再送信するプログラムと受信時にアクションを起こすプログラムの例は見つかったのですが、これらをつなげて受信時に自動で再送信するプログラムにしたいと考えています。
    条件としては再送信時にfromおよびToを自分自身にし、CC,BCCは削除する必要があります。

    再送信するコード
    http://www.jpsoftwaretech.com/outlook-vba/resend-this-message/

    • 転送ではなくて再送信なのですね。
      ご提示いただいたページのコードはメッセージ作成の画面を表示させる必要があるので、受信したメッセージを自動的に再送信というような用途で使うのは難しいかもしれません。
      受信したメッセージを OFT として保存し、それを CreateItemFromTemplete で開いて送信すれば可能ではないかと思います。

  171. Outlook2010の連絡先について、教えていただきたくお願いいたします。
    現在、数台のPCに共有NAS1台の環境で、Outlook2003を使用しています。
    PC1台のみインターネットの接続してメールの送受信を実行します。
    その1台の個人用アドレス帳を共有ドライブに入れており、
    他のPCはローカルドライブに同じファイル名で個人用アドレス帳を設定してあり、
    Outlookの起動時に、コマンドバッチで共有ドライブのPABファイルを各PCのローカルに
    コピーさせることにより、個人用アドレス帳を共通のアドレス帳として使用しています。

    こういった運用でOutlookを2010にアップするにあたり、2010では個人用アドレス帳が
    使用できないので、共通のアドレス帳をどうすべきか悩んでおります。
    送受信を行わないPCもメールの作成はそれぞれ行うので、メールを送受信するPCの
    pstファイルを丸ごとコピーするようにはしたくないのです。
    そこで共有ドライブに連絡先用のpstファイルを作り、それをコピーするようにしようと思ったのですが、
    送受信するPCのOutlookでメールの送信者アドレスを右クリックして登録する場合に、
    通常の連絡先でなく、作成した共有ドライブpstの連絡先に入るようにしたいのですが方法がわかりません。
    2003ではアドレス帳のオプションでアドレスの登録先を変更できるのですが、
    2010でも同様に登録先を変更できるのでしょうか?

    • 残念ながら Outlook 2010 では追加する連絡先フォルダーを指定することはできないようです。
      面倒でも既定の連絡先フォルダーに追加した後、共有している PST の連絡先に移動するしかないでしょう。

      • ご回答ありがとうございました。
        変更はできないのですね、残念です…
        運用で対応します。

  172. 初めまして。長文ですがよろしくお願いいたします。

    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点、影響が出ない範疇だろうと思い、サイトの手順と異なる作業方法となりましたが、どれかが悪さをしたとか
    わかりますでしょうか。

  173. お世話になります。
    会社がOutlookに移行したため、いろいろカスタマイズするにはVBAしかないと思い、
    検索してこのサイトにたどり着きました。いろいろなマクロを参考にさせていただいており、
    大変助かっております。そこで1つ教えていただきたいことがあります。

    「フォルダ(受信トレイなど)のメール一覧にユーザ定義フィールド(名前をX-Mailer)を追加して
    選択したメールのヘッダの中のX-Mailerを見つけ出し、
    追加したユーザ定義フィールドに表示する。」

    というものです。
    NewMailExイベントで受信した際にヘッダ部分からX-Mailerを抽出するところまでは
    わかったのですが、フォルダ内の選択したメールのユーザ定義フィールドにアクセスする
    方法がわからず困っております。なんとか方法はないでしょうか?

    お時間ありましたら、ご教示いただけると大変助かります。
    よろしくお願いします。

    • ユーザー定義フィールドにアクセスするには MailItem オブジェクトの UserProperties コレクションを使います。
      たとえば、objItem に格納されている MailItem オブジェクトに “X-Mailer” というユーザー定義フィールドを追加し、その値を “Outlook 14.0” とするには以下のようにします。

      Set objProp = objItem.UserProperties.Add(“X-Mailer”, olText)
      objProp.Value = “Outlook 14.0”

      • 返信ありがとうございます。ご教示いただいた方法できました。ただ、最後に、objItem.saveとしないといけないんですね。
        画面にも表示されました。ありがとうございました。

  174. いつも参考にさせて頂いております。

    会社のスケジュール管理システムから送信されるメールを元に、Outlookの予定表アイテムを
    作成するマクロを作りたいと考えておりますが、力不足にてご助力をお願いできますでしょうか。

    似たようなマクロを過去に公開して頂いておりますが、メール本文に記載されている日時情報などを
    予定表アイテムに反映したい要望がございます。

    スケジュール管理システムからのメールは、以下のルールで送信されます。

    <メールのルール>
    =======================

    件名:
     スケジュール登録のお知らせ「(スケジュール名称)」

    本文:

     登録者 : (登録者氏名)

     ————————————————–
     下記のスケジュールが登録されました。
     ————————————————–
     件名 : (スケジュール名称)
     分類 :
     日時 : 2012/07/30 19:30 – 20:00 (←日付表示の例)
     設備 :
     場所 : (場所)
     備考 :

    =======================

    仕分けルールを作成し、件名が合致した場合にマクロを実行
    予定表アイテムに以下のルールで作成したい。

    <作りたい予定表アイテム>
    =======================
    件名       (上の例ではスケジュール名称)
    場所       (上の例では場所)
    開始時刻    (上の例では 2012/07/30 19:30)
    終了時刻    (上の例では 2012/07/30 20:00)  
    本文       (メールの本文全部コピー)
    =======================

    具体的な方法を教えて頂けますと幸いです。
    よろしくお願いします。

      • ありがとうございます。
        急ぎではありませんので、ご都合の良い時にご対応頂けますと幸いです。
        よろしくお願いします。

  175. お世話になります。
    Outlookのマクロを検索しているうちにこのサイトにたどり着きました。

    マクロ初心者の為、下記の内容をマクロで実現出来るものなのかの判断が付かず、
    実現可否と実現可能であればマクロをご教示頂けますと幸いです。

    「内容」
    Aさん(A-san@keitai.jp)から社内のアドレス(kaisya@hoge.jp)に空メール
    (または、任意の本文が記載されてたメール)を送信されると、上記”kaisya”
    アカウントのOutlookにて、
     ”送信元:send-addr@hoge.jp” もしくはOutlookの「返信先の指定」機能と同様に返信時の宛先がこれに変わる
     ”宛先:rcvd-addr@hoge.jp”
     ”件名:test”
     ”本文:hogehoge”
    といった内容のメールを自動的で作成・送信するようなマクロを作成し、
    上記のマクロを自動仕訳のスクリプト実行を行うことで実現したいと
    思っております。

    上記の内容は実現できますでしょうか?
    ご教示のほど、よろしくお願いいたします。

  176. お世話になります。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
    どうぞよろしくお願いします。
    チャールズ

    • 「ここから動きません」とあるのですが、objMsg という名前でアイテムが引き渡されているはずなのに、objItem で参照しようとしているようです。
      また、このマクロだと常にシート1に本文が追加され、シート2以降は追加されても中身が空になってしまうのではないかと思います。
      下記のようにすべきではないでしょうか?

      Set objSheet = objWorkbook.sheets.Add
      ‘本文をエクセルに貼り付け
      objSheet.Cells(1, 1) = objMsg.Body  

      • 大変お世話になっております。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

  177. 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

    • HTML 形式の本文で装飾を残したまま文字列を変更したい場合は、Body プロパティではなく HTMLBody プロパティを使用します。

      • 返信ありがとうございます。
        すごく単純だったんですね。できました。
        ありがとうございます。助かりました。

  178. 始めまして。
    簡単なことで悩んでいます。 outlookの印刷機能が物足りないので、メール本文を全選択して、wordに貼り付けて運用しています。これをマクロでどのように表現するのかが分かりません。
    つまり、メール本文を全選択して、クリップボードへコピーしたいのです。(手動ならCtrl-a、Ctrl-vの2回でOKの動作)

    メールはRTF形式なので、文字列だけでなく、ピクチャ形式(excelからコピーしたグラフ等)を含んでいます。
    DataObjectを使って、PutInClipboardでコピーできるのは、文字列だけのようです。
    ひょっとして、これはWIN32のAPIを直接呼び出さないといけないのでしょうか?

    • 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

      • 素晴らしい!
        ありがとうございます、まさに希望どおりのマクロです。(Outlook2007で確認しました)
        Outlookのマクロの情報は少なくて、苦労しておりました。
        あらためて感謝いたします。今後ともよろしくお願いいたします。

  179. いつも大変お世話になっております。
    excelのVBAはたくさんあるのに、outlookが少ないと嘆いていたところに
    このようなすばらしいページに辿り着き、幸せを感じております。

    是非作成して頂きたいマクロがあります。
    自分で作ってみようと試みましたが、初心者には厳しかったです。

    あるMLに返信したいのですが、そのMLの設定でReply-ToがMLのアドレスになっています。
    outlookでは自動的にReply-Toに返してしまうようですが、Fromアドレスに返信するようには
    できませんでしょうか?
    遅くなりましたが、outlook2010です。

    元メールから差出人のアドレスをコピーして貼り付ければ済む話なのですが…

    何卒よろしくお願いします。

  180. いつも貴重な情報を拝見させていただいております。

    さて、…..
    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/

    • Outlook 2010 にて、問題なく機能することを確認できましたので、御礼旁々、お知らせ申し上げます。ツールリボンでも、新しいタブとその中にマクロ起動を設定し、「名前の変更(M)」で、タブ名とマクロ実行表示名を、それぞれ、たとえば「Reply」「Via XXX」に変更することで、コンパクトにリボン上にアイコン表示させて、使うことができるようになりました。

  181. 先日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

    このような記述では正しく動作しませんでしょうか?
    何度も申し訳ありませんが、送信元のアドレスを任意のアドレスに指定する方法をご教示頂きたく
    お願いいたします。

    • 差出人のアドレスを変更する場合は以下の記述を objNotif.Send の前に追加してください。

      objNotif.SentOnBehalfOfName = REPLY_TO

      なお、この方法で送信しても、受信環境によっては返信アドレスが REPLY_TO で指定したものにならない可能性があります。
      この場合、ウィルスやスパムのなりすまし防止策として実際の送信者を表示していると考えられ、Outlook では対処できないかもしれません。

      • ご回答ありがとうございます。
        早速、ご教示頂いた内容にて検証してみた結果、無事想定通りの結果となりました。
        キャリアでは問題ありませんでしたが、一部のプロバイダでは迷惑メールとして扱われる場合がありました。
        しかしながら、こればかりはOutlook側ではどうする事も出来ないと思っております。

        非常に助かりました。本当にありがとうございました。

  182. 管理人様、
    Makoto と申します。先ほど、183. へ返信すべきところ、誤って 182. へ返信してしまったようです。ご訂正いただければ、幸いに存じます。
    または、182.への私の返信を削除いただければ、再度、同じ内容を183.へ返信いたします。

  183. 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の携帯(スマホ)から空メールを送信した際に仕訳ルールのスクリプト実行によるメールの作成・送信が正しく行えない動作は仕様となりますでしょうか。
    また、エラーが発生した際には当該仕訳ルールが無効となってしまう為、何か回避策はありませんでしょうか?

    何度も質問ばかり申し訳ありませんが、もし、お分かりになるようであればご教示の程よろしくお願い致します。

    • 何度もすいません。
      上記の事象はWindows XP + Outlook 2003 では発生しますが、Windows 7 + Outlook 2010 では発生しませんでした。
      検証時はWin7+2010で行っており問題なかったのですが、実運用はWinXP+2003で行う必要がある為問題となっています。

      • 原因がよくわからないのですが、エラー発生時にルールが無効になる件についてはマクロの先頭に On Error Resume Next を追記することで回避できる可能性があります。
        何かわかりましたらこちらで回答します。

      • ご回答ありがとうございます。
        ご教示頂きました通り、マクロの先頭に On Error Resume Next を記入してみましたが、
        残念ながら、事象解消には至りませんでした。
        お手数ですが、何かお分かりになられましたらご教示頂けますと幸いです。

      • On Error Resume Next で回避できないとなると、VBA の記述以外の問題で現象が発生していると考えられます。
        Outlook 2003 でしか発生しないようですので、Outlook 2003 の不具合などの可能性も考えられるのですが、既知の不具合情報などは見つけられませんでした。

        仕訳ルールのスクリプトしてではなく、NewMailEx で実行した場合でもエラーとなるのでしょうか?

      • すいません。返信が遅くなりました。
        NewMailEx で実行した場合でもエラーとなりました(ただしく検証できているか自信がないです。。。)ので、
        マクロの内容の問題では無く、Outlook側の問題と考えればいいでしょうか?

      • ご回答ありがとうございました。
        Microsoftのサポートに確認してみることにします。
        色々とありがとうございました。

  184. たいへんお世話になっております。

    1点、ご教授いただきたいことがあります。

    今回、会社のほうが、全社のメールサーバーとメイラーを、Exchange+OUTLOOKから、GoogleApps+GMAILに移行することになりました。
    そこで思うに、私が社内業務用に作成し、使用していたOUTLOOK VBAのマクロはこれにより一切使えなくなると思ったほうがよいのでしょうか?
    また、GMAILの機能として、同様なマクロ機能はあるのでしょうか?

    現在のOUTLOOK VBAマクロ機能ではかなりのロジックを組んで、OUTLOOK子画面上のボタンを配置し、そのボタン押下により個別のメール内容を判断して、メールの返信文作成やファイル等の再配布等を行うような機能を持たしています。

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

    • GMAIL は IMAP4 サーバーとしてアクセスできるはずなので、Outlook から GMAIL に IMAP4 で接続すればマクロも使い続けられるのではないかと思います。

  185. 初めて投稿させていただきます。
    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

    上記のようなことは可能でしょうか。
    出来れば作成したマクロをご教授いただけないでしょうか。
    宜しくお願い致します。

    • 受信時間で連番を振るとなると、色分けの際に一度振りなおした連番を振りなおす必要が生じる場合があります。
      たとえば、9:00 に受信した Message A に 1、10:00 に受信した Message B に 2 と振っていた場合に、その後 9:30 に受信した Message C の色分けを行ったら Message C が 2 になり、Message B が 3 になるということですよね?
      これはかなり厄介なロジックです。
      せめて受信時に自動的にカテゴリーわけが可能であればよいのですが…

  186. 返信ありがとうございます。行いたい処理としてはご認識の通りです。

    >これはかなり厄介なロジックです。
    >せめて受信時に自動的にカテゴリーわけが可能であればよいのですが…

    では最初に「特定の言葉を件名に含む」メールに対してカテゴリー分けを自動に行い
    その際に自動的に連番をつけるのであれば問題ないでしょうか。
    こちらの対応であれば運用上、問題ありませんので、再度、ご検討願います。
    何卒宜しくお願い致します。

  187. お世話になります。 R.R.です。

    メールを受信し、受信トレイから、 .moveメソッドと用い他のフォルダーへ移動させようとすると、何故か必ず、「ゴミ箱」トレイに移動されてしまいます。 .moveメソッドでは特にエラーが起きていません。
    また、指定した移動先のフォルダーも存在しており、.moveを実行する前に、ウォッチウィンドウで確認しても正しくそのオブジェクトは存在します。
    移動先に指定するフォルダーの名前や、階層構造などを変えても同じです。何故か、かならずゴミ箱に移動してしまいます。 仕分けルールや迷惑メールの設定なども確認しましたが、特にそれらしき設定は見当たりません。

    環境; Windows7 + Oultook2010
    Excel上のVBAでOutlookを操作しています。メールの送受信や、メールの作成等、他の一般的な機能は、特に問題なく動作させることができています。 フォルダーの移動だけ、おかしな動きになります。

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

    • R.R.です。その後、いろいろ試みたところ、移動先を[Gmail]フォルダーの下に置いたところ、moveメソッドで正常に移動させることができました。それ以外のところにあるフォルダーに移動させようとすると、エラーにならずに、ゴミ箱へ直行するようです。

      • R.R.です。moveしたメールは、最終的にやはり、ゴミ箱に入れられてしましました。

        「受信トレイ」から.moveメソッドである[Gmail]下にあるフォルダーに移動することはできたのですが、
        その後、送受信を実行すると、.moveメソッドで移動したメールだけが「ゴミ箱」に移動されてしまいます。
        「受信トレイ」から手動でフォルダーへ移動したメールは、全く内容が同じであるにもかかわらず、送受信を実行しても「ゴミ箱」には移動されません。

        VBAで処理したメールだけが、どんどんゴミ箱に移動されてしまうので、困っています。
        何が原因なのでしょうか。 よろしくお願いいたします。