次の方法で共有


Microsoft Outlook 2002 を使用したユーザー設定フォームの開発 (第 1 部)

Bill Jacob and Frank C. Rice
Microsoft Corporation

January 2003

対象 :
     Microsoft® Outlook® 2002

概要 :    Microsoft Outlook 2002 を使用したユーザー設定フォームの開発に関連する主要な概念を説明します。 この資料は、これらの概念のいくつかを説明する 2 部構成の資料の第 1 部です。 この資料に記載する 2 つのレッスンでは、 この概念の背後で行われていることの理解を助け、 Outlook ソリューションでユーザー設定フォームを活用するのに役立つ手法を提供します。

目次

レッスン 1 : アイテムとフォームを使用する
  アイテムとフォーム
  フォームを選択するときの考慮事項
  フォームの保存、発行、および配布
  メッセージ クラス
  一時フォーム
  Outlook がフォームを検索する方法
レッスン 2 : フィールド
  Outlook のフィールド構造
  ユーザー定義フィールドの動作
  [フィールドの選択] ダイアログ ボックスを使用する
  フィールド データの検証
  フィールドに初期値を設定する
  フィールドの自動更新

レッスン 1 : アイテムとフォームを使用する

概要

このレッスンでは、Microsoft® Outlook® 2002 を使用したユーザー設定フォームの開発に関連する主要な概念の一部を説明します。 このレッスンでは、アイテムと、アイテムの表示に使用するフォームとの関係を中心に取り扱います。 このレッスンで提供する情報は、 これらの概念の背後で行われていることを理解するのに役立ち、 デザインしているソリューションにこれらの概念が与える影響を説明します。

レッスン内容

このレッスンでは、次の内容について説明します。

  • 用語 "アイテム" と "フォーム" との微妙な違い。
  • さまざまな状況でユーザー設定フォームを発行する場所。
  • メッセージ クラス フィールドについて、 およびこのフィールドがユーザー設定フォームや Outlook ソリューションで担う役割。
  • アイテムの開封時に Outlook がユーザー設定フォームを検索する対象となる場所。
  • フォーム キャッシュの目的とキャッシュに関する主な制限事項。
  • 一時フォームについて、一時フォームの作成方法、 および一時フォームを作成した場合の一般的な副作用。

参考資料

アイテムとフォーム

用語 "アイテム" と "フォーム" を、 同じものを表す場合に使用することがあります。 しかし、一般的にはこの 2 つ用語は異なる状況で使用されます。

アイテムは、フォルダ内に実在する項目を意味します。 項目が仕事、連絡先、またはメッセージであってもアイテムであることに変わりありません。 アイテムは、基本的にはデータベース内のレコードのようなものです。 また、データベースと同様に、 各アイテムはフィールドのコレクションを保持します。 Outlook では、アイテムの種類ごとにフィールドの標準セットが用意されています。 これらの標準フィールドを "標準フィールド" と呼びます。 Outlook では、標準フィールド以外に、 アイテムごとにユーザー定義フィールド (カスタム フィールド) を作成できます。 簡単にいうと、アイテムは情報のコンテナです。 用語 "アイテム" は、そのフィールド内にデータを格納するフォルダ内の物理アイテムを意味します。

フォームは、 基本的にはユーザー インターフェイス、 すなわちフォルダ内のアイテムのフロント エンドです。 一般的に、フォームはさまざまなフィールドで構成されており、 これらのフィールドを使ってアイテム内に格納されている元になるデータを表示します。

任意のフォームを使用して、任意のアイテムのコンテンツを表示できます。 ただし、フォームとアイテムには明確な違いがあります。 すべてのデータはアイテムに格納されます。 フォームは単なる表示メカニズム、すなわちユーザー インターフェイスです。 このことは、この資料の後半のトピックで重要な意味を持つ大きな違いです。

アイテムとフォームの違いは、 誤解が生じやすい分野です。 ユーザー設定フォームを作成するときに、新しいアイテムを開くことから始めるので、 特に、このような誤解が生じる傾向が強くなります。 しかし、このとき開く新しいアイテムは、 新しいフォームを作成するための単なるメカニズムとして捕らえる必要があります。

MAPI や Collaboration Data Objects (CDO) オブジェクト ライブラリなど、 その他のメッセージング テクノロジを使用する場合、 アイテムを "メッセージ" と呼ぶことがあります。 この場合の "メッセージ" は、 電子メール メッセージとは異なります。 この状況では、用語 "メッセージ" は Outlook アイテムの種類とは無関係に、 フォルダ内の任意のアイテムを意味します。 これらの用語を使って、他人と話をするときに誤解を招くことがあります。 メッセージ、アイテム、およびフォーム関して、 どのような話が行われているかを明確かつ厳密に理解することが不可欠になります。

   CDO オブジェクト ライブラリの詳細については、 資料「Introduction to Collaboration Data Objects for Microsoft Exchange 2000」 (英語) をご覧ください。 MAPI の詳細については、 資料「Introduction to MAPI」 (英語) をご覧ください。

フォームを選択するときの考慮事項

用途によっては、Outlook の標準フォームの方が、他のフォームよりも役に立つ場合もあります。 ユーザー設定フォーム ソリューションをデザインするときに考慮すべき事項は多数ありますが、 その中でも重要な考慮事項を以下に示します。

ルーティング ベースのソリューションとフォルダ ベースのソリューション

電子メール メッセージは個人宛てに送信 (またはルーティング) されます。 投稿フォームなど、その他のすべてのアイテムはフォルダに保存されることを前提にデザインされています (投稿フォームについては、後で説明します)。 投稿フォームは、アイテムに含まれる標準フィールドの種類がメッセージ フォームと非常によく似ています。 したがって、フォームの要件がそのフォームを他人に送信することを目的としている場合、 電子メール メッセージがカスタマイズ対象となるフォームになります。

フォームの標準フィールド

Outlook の各アイテムは、関連付けられているさまざまな標準フィールドのセットを保持しています。 特定のアイテムのフィールドの完全な一覧を参照するには、 [フィールドの選択] ダイアログ ボックスの一覧で [すべての <フォームの種類> フィールド] をクリックします。 (Outlook では、フォームをデザイン モードで表示すると、 常に [フィールドの選択] ダイアログ ボックスが表示されます。 フォームをデザイン モードで表示するには、 [ツール] メニューの [フォーム] をポイントして、[フォームのデザイン] をクリックします。 連絡先フォームを開きます。) たとえば、メッセージ フォームで使用できるすべてのフィールドを表示するには、 [すべてのメール フィールド] をクリックします (図 1 を参照してください)。 ニーズに見合ったフォームの種類を選択したら、 [フィールドの選択] ダイアログ ボックスで [新規フィールド] をクリックして、 ユーザー定義フィールドを作成できます。

Aa155722.odc_olcustfrm101(ja-jp,office.10).gif
図 1. [フィールドの選択] ダイアログ ボックス

カスタマイズ可能なフォームのページ

Outlook のフォームの大部分は、フォーム上に複数のページ (つまりタブ) を保持しています。 たとえば、連絡先フォームには、[全般]、[詳細]、[関連アイテム]、[証明書]、および [すべてのフィールド] ページがあります。 メール フォームと投稿フォーム、および連絡先フォームの [全般] ページを除き、 Outlook の標準フォームのすべてのページはカスタマイズできません。 多くの場合、既存の Outlook のフォーム ページを変更するには、 フォーム上の既存のページを非表示にして、 新しいページを作成し、 そのページにフィールドやコントロールを追加する必要があります。

表 1. ページのカスタマイズに使用するアイテム

アイテム 使用目的 既定ページの変更
メッセージ 関連する返信フォームと共にフォームを他人に送信するので、 受信者は必要な情報を返信できます。
投稿 フォームをフォルダに送信します。
連絡先 個人または組織に関する情報を記録します。 [全般] ページのみ変更可。
配布リスト 連絡先の配布リストを作成します。 不可
仕事または仕事 - 依頼 特定の期限が設定されたアクションに関する情報を記録します。 不可
予定または会議出席依頼 人、日付、および時刻に関するスケジュール情報を記録します。 不可
メモ 単純なメモをフォルダに保存します。 カスタマイズするには、コントロール メニューの設定を変更する必要があります。
Outlook フォーム Office ドキュメントをフォームに統合します。 不可

やってみよう : Outlook のユーザー設定フォームを作成する

次の手順では、フィールドと新たなページを追加して、 ユーザー設定の連絡先フォームを作成します。 まず、「獣医連絡先」という名前のフォルダを作成します。 次に、Customer フォームという名前のユーザー設定の連絡先フォームを作成し、 [獣医連絡先] フォルダに発行します。 フォルダのプロパティを変更して、 このフォルダ内の新しいアイテムが Customer フォームを基準に作成されるようにします。 これは、ユーザー設定フォームのソリューションを作成する最も基本的な事例です。

   [ツール] メニューに [フォーム] オプションが表示されない場合は、 フォームをデザイン環境で表示できません。 この問題は、Microsoft Word を電子メール エディタとして使用している場合に発生します。 Word を電子メール エディタとして使用する設定を一時的に無効にして、 フォームを再度開きます。 Word を電子メール エディタとして使用する設定を無効にするには、 [ツール] メニューの [オプション] をクリックし、 [メール形式] タブをクリックします。 [電子メールの編集に Microsoft Word を使用する] チェック ボックスをオフにします。

[獣医連絡先] フォルダを作成する

  1. [ファイル] メニューの [新規作成] をポイントし、[フォルダ] をクリックします。
  2. [名前] ボックスに「獣医連絡先」と入力します。
  3. [フォルダに保存するアイテム] ボックスの一覧の [連絡先アイテム] をクリックします。
  4. [フォルダを作成する場所] ボックスの一覧の [メールボックス -<ユーザー名>] をクリックし、 [OK] をクリックして新しいフォルダを作成します。

ユーザー設定の連絡先フォームを作成する

  1. [獣医連絡先] フォルダに移動し、 [ファイル] メニューの [新規作成] をポイントし、 [連絡先] をクリックして新しい連絡先アイテムを開きます。 このアイテムは、ここで作成するユーザー設定フォームの基礎になります。

  2. 連絡先フォームを表示した状態で、 [ツール] メニューの [フォーム] をポイントし、 [このフォームのデザイン] をクリックします。 この操作により、アイテムがデザイン モードで表示されます。 これでフォームの [全般] タブを編集できるようになります。

  3. [(P.2)] ページをクリックします。 既定では、このページは非表示のページです。 ページ名がかっこで囲まれているページは、 すべて非表示のページです。

  4. アイテムの [フォーム] メニューの [このページを表示] をクリックします。 "(P.2)" が "P.2" に変更されることにより、 このページが非表示のページではなくなったことに注意してください。

  5. アイテムの [フォーム] メニューの [ページ名の変更] をクリックし、 このページの新しい名前として「ペット情報」と入力します。

  6. [フィールドの選択] ダイアログ ボックスのボックスの一覧の [すべての連絡先フィールド] をクリックします。

  7. [フィールドの選択] ダイアログ ボックスから [分類項目] フィールドと [分類項目...] フィールドを [ペット情報] ページにドラッグします。 [分類項目...] フィールドをドラッグするとフォームにボタンが追加され、 このボタンをクリックすると [分類項目] ダイアログ ボックスが表示されることに注意してください。

  8. [フィールドの選択] ダイアログ ボックスから [氏名] フィールドをドラッグします。

  9. [フィールドの選択] ダイアログ ボックスから [誕生日] フィールドをドラッグします。 必要に応じて、図 2 のレイアウトと同じようにフィールドを調整してください。

    Aa155722.odc_olcustfrm102(ja-jp,office.10).gif
    図 2. デザイン モードのユーザー設定フォーム

  10. [フォーム] メニューの [フォームの実行] をクリックします。 この操作により、作成したユーザー設定フォームに基づいて新しいアイテムが作成され、 フォームを実際に使用するときの状態で表示されます。

  11. 実行モードで表示しているフォームの変更を保存せずに閉じ、 デザイン モードのフォームに戻ります。

  12. [ツール] メニューの [フォーム] をポイントし、 [フォームに名前を付けて発行] をクリックします。 [獣医連絡先] フォルダがアクティブな状態なので、 既定では [フォルダの場所] ボックスには [獣医連絡先] が設定されています。

  13. [表示名] ボックスに「Customer」と入力し、[発行] をクリックします。 (訳者注 : 表示名に英文字を入力すると自動的に同じ名前がフォーム名に入力されますが、 表示名に日本語を入力する場合は、フォーム名も個別に入力する必要があります。 ただし、フォーム名に日本語は使用できません。)

  14. [ファイル] メニューの [閉じる] をクリックします。 変更の保存を確認するダイアログ ボックスが表示されたら [いいえ] をクリックします。 変更を保存すると、フォルダ内に新しいアイテムが作成されます。 通常、フォームのデザイン時に新しいアイテムを作成することは希望しないことが多いと思います。

  15. [アクション] メニューの一番下に [新しい Customer] という名前のアイテムが表示されることに注意してください。 このアイテムは、フォームがフォルダに発行されたので利用できるようになりました。 [新しい Customer] をクリックして、 ユーザー設定の Customer フォーム ベースの新しいアイテム (フォーム) を開きます。

  16. 新しいアイテムを閉じます。 変更の保存を確認するダイアログ ボックスが表示されても、 変更は保存しません。

  17. ツール バーの先頭のボタン ([新規作成] ボタン) をクリックして、 新しい連絡先アイテムを作成します。 新しいアイテムは Outlook の既定の連絡先フォームを使用し、 ユーザー設定の Customer フォームを使用していないことに注意してください。 新しいアイテムへの変更を保存せずに、アイテムを閉じます。

  18. [ファイル] メニューの [フォルダ] をポイントし、["獣医連絡先" のプロパティ] をクリックします。 [このフォルダに投稿するときに使用するフォーム] というオプションに注目してください。 このオプションは [連絡先] に設定されています。 この設定を [Customer] に変更して、[OK] をクリックします。

  19. もう一度、ツール バーの先頭のボタンをクリックして新しい連絡先アイテムを作成します。 今度は、ユーザー設定の Customer フォームが表示されます。

  20. フォームへの変更を保存せずに、閉じます。

おめでとうございます ! Outlook のユーザー設定フォームのソリューションを作成できました !

このレッスンに関する重要事項

  • 多くの Outlook の既定のページは変更できません。
  • フォームを発行後にアイテムを保存する必要はありません。 これは、アイテムとフォームの違いを理解することに関連があります。
  • フォームを 1 つのフォルダのみで使用する場合、 一般的にフォームは対象となるフォルダ内に発行されます。
  • フォルダ内に発行したフォームは、 そのフォルダに関連する [アクション] メニューに表示されます。
  • ツール バーの先頭のボタンを使用してユーザー設定フォームにアクセスするには、 ユーザー設定フォームをフォルダの既定のフォームとして設定する必要があります。

ここでは、ユーザー設定フォームを作成するときは、 上記と同じ手順を使用することにします。 ユーザー設定フォームの作成に関しては、多数のバリエーション、オプション、およびその他の考慮事項がありますが、 これはシングル ユーザー ソリューションに関連する最も単純な事例です。 まず、フォーム自体を使用することから見ていきましょう。 その後、オプションの発行などについても説明します。

Outlook の標準フォームの機能の損失

上記の手順で示したように Outlook フォームをカスタマイズすると、 カスタマイズしたフォームが Outlook の標準フォームと同じように機能しないことがあります。 たとえば、[連絡先] フォルダをクリックして、Outlook の標準フォームを開きます ([アクション] メニューの [新しい連絡先] をクリックします)。 [詳細] タブをクリックして、[誕生日] ボックスの隣の下向き矢印をクリックします。 カレンダー コントロールが表示されることに注意してください。 今度は、[獣医連絡先] フォルダをクリックして、 Customer フォームを開き、[ペット情報] タブをクリックします (Customer フォームを開くには、[アクション] メニューの [新しい Customer] をクリックします)。 [ペット情報] タブには、上記の手順で追加した 3 つのユーザー定義フィールドが表示されます。 以下の点に注意してください。

  • [誕生日] フィールドには関連付けられているカレンダー コントロールがないので、 キーボードから日付を入力する必要があります。 このフィールドは、通常のテキスト ボックスです。 この現象は、Outlook の既定のフォーム ページで使用できるカレンダー コントロールが、 独立したコントロールとして利用できないことが原因で発生します。 ただし、カスタム ActiveX® コントロールを使用して同様の外観を提供できます。
  • [姓] フィールドと [名] フィールドにそれぞれ「John」と「Smith」と入力して、Enter キーを押し、 フォームの [すべてのフィールド] ページをクリックし、[対象となるフィールド グループ] ボックスの設定を [名前のフィールド] に変更すると、 Outlook はこのアイテムの他の名前フィールドにデータを自動的に設定します。 これは、元になるフィールド データが通常どおりに処理されるためです。 フォームに関する多くの制限事項は、 コントロールまたはユーザー インターフェイスの制限事項に関係しています。
  • フォームをデザイン モードで表示すると、 既存のコントロールが少しずれて表示されることがあります。 この現象は、投稿フォームの最初のページで特に顕著に表れます。 たとえば、投稿フォームの最初のページからメッセージ コントロールを削除して、 既存のフォーム ページをカスタマイズします。 すると、フォームを実行モードで表示したときにも、 コントロールがずれたままの状態で表示されます。

同じ機能を使用していたとしても、 ユーザー設定フォームが Outlook の標準フォームと完全に同じように機能するとは思わないでください。 ソリューションを構築しながら計画した機能を逐次テストして、 それらの機能が予想通りに動作することを確認します。 多くの場合、Microsoft Visual Basic® Scripting Edition (VBScript) を使用して、 ユーザー設定フォームで損なわれた機能を複製できることを覚えておいてください。

フォームの保存、発行、および配布

フォームをテンプレート ファイル (OFT ファイル) として保存する

作成したフォームのバックアップ コピーを作成することをお勧めします。 Outlook では、.oft 拡張子を使用してフォームを個別のファイルとして保存できます。 このように保存すると、別のユーザーにフォームを転送する場合に便利です。 この操作を行うには、以下の手順に従います。

  1. 保存するユーザー設定フォームに基づくアイテムを開きます。 保存するユーザー設定フォームがフォルダの既定のフォームに設定されている場合は、 ツール バーの先頭のボタンをクリックするか、 または [アクション] メニューからユーザー設定フォームを選択できます。
  2. [ファイル] メニューの [名前を付けて保存] をクリックします。
  3. [ファイルの種類] が [Outlook テンプレート] に設定されていない場合は、 設定を [Outlook テンプレート] に変更します。
  4. テンプレート ファイルの名前を指定して、[OK] をクリックします。

ユーザー設定フォームの発行

多くの場合、フォームは発行するものであり、保存するものではありません。 フォームの発行は、後でフォームを使用してアイテムを表示できるように、 フォームを別の場所に保存することを意味します。 フォームの発行は、フォームをファイル システム内のファイルに保存する代わりに、 MAPI ベースのストアに保存することを意味します。

フォーム ライブラリにフォームを発行するには、以下の手順に従います。

  1. ユーザー設定フォームをデザイン モードで表示した状態で、 [ツール] メニューの [フォーム] をポイントし、 [フォームに名前を付けて発行] をクリックします。

  2. [フォルダの場所] ボックスの一覧で、 フォームの発行先を選択します。

  3. [表示名] ボックスにフォームの名前を入力し、 [発行] をクリックします。

    ここをクリックすると拡大表示できます
    図 3 [フォームの発行] ダイアログ ボックス (図をクリックすると拡大表示できます)

一般的なフォームの発行先は次の 3 つです。

  • フォルダ (またはフォルダ フォーム ライブラリ)。   大多数のフォルダ ベースのソリューションでは、 フォルダの使用時にフォームを利用できるようにするため、 フォームをフォルダに発行する必要があります。 フォームをパブリック フォルダに発行すると、 そのフォルダを使用するすべてのユーザーが、 発行したフォームを使用できます。 また、フォームを個人用フォルダのいずれかに発行すると、 発行先のフォルダを使用しているときに、 発行したフォームを使用できます。 リモート ユーザーが、 直接サーバーに接続している場合と同じようにフォームを使用できるようにするオフライン ライブラリが用意されています。 フォームをフォルダに発行する利点の 1 つは、 発行先のフォルダを使用しているときに [アクション] メニューの一番下で発行したフォームを使用できることです。
  • 組織フォーム ライブラリ。   このライブラリに保存したフォームは、組織に所属する全員がアクセスでき、 これらのフォームは Microsoft Exchange Server 上に保存されます。 フォームを組織フォーム ライブラリに保存するには、 サーバー管理者に連絡してアクセス許可を与えてもらう必要があります。 これらのフォームにアクセスするには、 [ファイル] メニューの [新規作成] をポイントして、 [フォームの選択] をクリックすると表示される [フォームの選択] ダイアログ ボックスを使用します。 たとえば、休暇を報告するフォームなど、 組織に所属する全員が使用できるようにしたいフォームを保存する場合、 このライブラリを使用します。 このライブラリは、メッセージ フォームを保存する場合に使用されることが多く、 一般的に複数ユーザーまたは複数のパブリック フォルダで同じフォームが使用される場合に使用されます。 この事例で集中管理できるフォームは 1 つだけです。
  • 個人用フォーム ライブラリ。   このライブラリに保存したフォームは、 個人のみがアクセスでき、 Exchange Server メールボックスのルートまたはローカルの PST ファイルに (非表示のフォームとして) 保存されます。 保存先は、既定の配信場所になります。 組織フォーム ライブラリに保存したフォームと同様に、 これらのフォームを [フォームの選択] ダイアログ ボックスから開けます。 特定の複数人のアドレスをあらかじめ設定してあるメッセージ フォームなど、 個人で使用するフォームを作成する場合、 このライブラリを使用します。 フォームを受信トレイに発行すると、 [アクション] メニューの一番下にフォームが表示され簡単にアクセスできるので、 ユーザーの多くは個人で使用するユーザー設定フォームを受信トレイに発行します。

フォームを発行できる場所は他にもありますが、 それらは "論理的に発行できる場所" であり、 実際に使用されることはあまりありません。 ただし、これらの場所はオフライン ユーザーにフォームを配布するための手段として使用されることがあります。

  • OFT ファイルとしてフォームを保存する。   OFT ファイルとしてフォームを保存すると、 別のユーザーがフォームを使用して作業するために送信したり、 保存した OFT をバックアップとして使用できます。 OFT ファイルとしてフォームを保存するには、 [ファイル] メニューの [名前を付けて保存] をクリックします。 [ファイル名] ボックスにフォーム名を入力します。 [ファイルの種類] ボックスの一覧で [Outlook テンプレート] をクリックします。
  • 現在のフォルダにアイテムとしてフォームを保存する。   通常、この操作はフォームを削除してしまう事態を招きやすいのでお勧めしません。 このように保存すると、フォームとアイテムの違いが不明確になる傾向があり、 異なるアイテムを開いたときに、 複数の種類のフォームが混在しやすくなります。 現在のフォルダにフォームを保存するには、 [ファイル] メニューの [名前を付けて保存] をクリックします。

フォームの発行先を判断する

Microsoft Outlook を使用して作成できるフォーム ソリューションの種類は、 Outlook で使用できるフォームの種類が多数あることから、大きく変化します。 フォームの最適な発行先を判断することは難しく、 この判断を行うときに多数の考慮すべき事項があります。 このような考慮事項の例を以下に示します。

  • 何人の人がフォームにアクセスする必要がありますか ?
  • フォームが頻繁に更新され、集中管理される場所に 1 つだけフォームを配置することが重要になりますか ?
  • フォームはどのような場合に使用されますか ?
  • フォームをオフラインで使用できるようにする必要がありますか ?

フォルダ ベースのソリューションを作成し、 フォームの主目的が、1 つのフォルダ内にアイテムを表示することである場合は、 作成したフォームを対象となるフォルダに発行することをお勧めします。 このようにすることで、フォルダは独立したエンティティとなり、 作成したフォームを [アクション] メニューから簡単に使用できます。 ただし、複数の個人用フォルダでフォームを使用し、 各フォルダで同じバージョンのフォームを使用する場合には、 個人用フォーム ライブラリにフォームを発行すること検討する必要があります。 個人用フォーム ライブラリにフォームを発行すると、 フォームのコピーが 1 つだけ存在することになり、 フォームに変更を加えたると、フォームを簡単に更新できます。 その反面、このアプローチのマイナス面は、 [アクション] メニューからフォームを利用できないため、 フォームにアクセスしづらくなる点にあります。 ただし、よく行われることですが、 個人用フォーム ライブラリに発行したフォームがフォルダの既定のフォームである場合、 ツール バーの先頭のボタンを使用して新しいアイテムを開くので、 個人用フォーム ライブラリにフォームを発行しても特に大きな違いはありません。 パブリック フォルダのフォームについても同じことが言えます。 ただし、この場合には、 個人用フォーム ライブラリではなく組織用フォーム ライブラリにフォームを発行することになります。

ユーザー設定フォームがメッセージ フォーム ベースで作成されており、 個人または数人の間だけで使用される場合、 このフォームを使用する全員の個人用フォーム ライブラリに発行するのが最適な方法です。 ただし、このユーザー設定フォームに基づく新しいアイテムを作成する場合に、 受信トレイの [アクション] メニューにユーザー設定フォームが表示されるように、 フォームを受信トレイに発行できます。 組織内の多数の人がユーザー設定フォームを使用する場合は、 組織用フォーム ライブラリにフォームを発行する必要があります。 このようにすると、 管理する必要があるフォームは 1 つだけで、 しかも組織に所属する全員がフォームにアクセスできるようになります。 ただし、このライブラリは Exchange Server 上に配置されており、 ネットワークおよびサーバー トラフィックによってはフォームを開く際に問題が発生する場合があることに注意してください。

メッセージ クラス

Outlook でのフォームの使用方法を理解するには、 メッセージ クラスの概念を理解することが必要不可欠になります。 一般の Outlook ユーザーにとって、メッセージ クラスは比較的理解しづらいので、 メッセージ クラスが Outlook のユーザー設定フォームの使用に関する問題の根本的な原因となることがあります。

Outlook の各アイテムは、"メッセージ クラス" と呼ばれる標準フィールドを保持しています。 このフィールドは、特定のアイテムを表示するのに使用するフォームを識別します。 したがって、アイテムが開かれるたびに Outlook はメッセージ クラス フィールドを参照し、 フィールドに設定されている情報を使用して、 アイテムの表示に使用するフォームを決定します。 Outlook アイテムは、種類ごとに一意な標準メッセージ クラスを保持しています。 これらの一部の詳細を次の表に示します。

表 2. Outlook アイテムのメッセージ クラス

アイテム メッセージ クラス
メッセージ IPM.Note
投稿 IPM.Post
連絡先 IPM.Contact
配布リスト IPM.DistList
仕事 IPM.Task
仕事 - 依頼 IPM.Task (送信前)

IPM.TaskRequest (受信者の受信トレイ)

予定 IPM.Appointment
会議出席依頼 IPM.Appointment (送信前)

IPM.Schedule.Meeting.Request (受信者の受信トレイ)

メモ IPM.StickyNote
履歴 IPM.Activity

Outlook の既定のフォームのいずれかをカスタマイズして、 フォルダまたはフォーム ライブラリに発行すると、 フォームに付けた名前がそのアイテムの種類の標準メッセージ クラスに追加され、 作成したフォームに対して一意なメッセージ クラスを作成します。 たとえば、連絡先フォームをカスタマイズして発行し、MyForm という名前を付けたとします。 発行したフォームのメッセージ クラスは、IPM.Contact.MyForm という名前になります。 このユーザー設定フォームを使用する新しいアイテムのメッセージ クラス フィールドには IPM.Contact.MyForm が設定されます (図 4 を参照してください)。

ここをクリックすると拡大表示できます
図 4. MyForm のメッセージ クラス (図をクリックすると拡大表示できます)

MyForm を [連絡先] フォルダに発行した場合、 [アクション] メニューに [新しい MyForm] オプションが表示されます。 [新しい MyForm] をクリックすると、新しい連絡先アイテムが作成され、 作成されたアイテムのメッセージ クラスは IPM.Contact.MyForm に設定されます。 ただし、ツール バーの [新規作成] をクリックすると、 既定の連絡先フォームが表示されます。 上記の「やってみよう」で説明したように、 これは [連絡先] フォルダの既定のフォームが連絡先に設定されていることが原因です。 この設定を変更するには、以下の手順に従います。

  1. [連絡先] フォルダのプロパティを表示します ([ファイル] メニューの [フォルダ] をポイントして ["連絡先" のプロパティ] をクリックするか、 または [連絡先] フォルダを右クリックして [プロパティ] をクリックします)。

  2. [このフォルダに投稿するときに使用するフォーム] ボックスの一覧でユーザー設定フォームを選択します。

  3. [OK] をクリックします。

       このフォルダの既定のフォームを連絡先フォームに戻すには、 [このフォルダに投稿するときに使用するフォーム] ボックスの設定を [連絡先] に戻します。

インポート/エクスポート ウィザードを使用してアイテムをインポートまたはエクスポートした場合、 Outlook の新しいアイテムのメッセージ クラスを指定できないことに注意してください。 すべての新しいアイテムには、 インポートされているアイテムの種類に応じて標準のメッセージ クラスが割り当てられます。

   メッセージ クラスの完全な一覧および各クラスが Outlook でどのように使用されているかの詳細については、 Outlook ヘルプ ファイルの「アイテムの種類とメッセージ クラス」トピックをご覧ください。

ユーザー設定フォームを使用している場合は、 メッセージ クラス フィールドの状態を把握しておくことをお勧めします。 実際にアイテムが適切なフォームを使用していることを確認できるように、 カスタム フォルダの表形式ビューにメッセージ クラス フィールドを追加することをお勧めします。 この操作を行うには、カスタム フォルダをクリックして、以下の手順に従います。

  1. [表示] メニューの [現在のビュー] をポイントして、 [現在のビューの編集] をクリックします。
  2. [ビューの設定] ダイアログ ボックスで [フィールド] をクリックします。
  3. [対象となるフィールド グループ] ボックスの一覧から、 作成したカスタム フォルダに適した [すべての <フォルダの種類> フィールド] をクリックします。 たとえば、カスタム フォルダの種類が連絡先の場合は、[すべての連絡先フィールド] をクリックします。
  4. [表示可能なフィールド] ボックスの一覧から [メッセージ クラス] をクリックして、 [追加] をクリックします。
  5. [表示するフィールドと順序] ボックスの一覧で [メッセージ クラス] をクリックし、 [上へ] または [下へ] をクリックして、 このフィールドを表示する位置を調整します。
  6. [OK] をクリックします。

一時フォーム

フォームに関連するサポートの多くの問題点は、 一時フォームの概念を中心に展開されます。 Outlook を使用してユーザー設定フォーム ソリューションを作成する場合、 フォルダ内のアイテムに対して Outlook がユーザー設定フォームをどのように使用しているかを理解することが重要になります。

典型的なユーザー設定フォーム ソリューション

Outlook の既定の連絡先フォームに代わるユーザー設定の連絡先フォームを作成する場合、 通常、以下の手順に従います。

  1. 新しい既定の連絡先フォームをユーザー設定フォームの基礎として使用します。
  2. 必要に応じてフォームをカスタマイズします。
  3. カスタマイズしたフォームを [連絡先] フォルダに発行します。
  4. [連絡先] フォルダのプロパティを変更して、 カスタマイズしたフォームをフォルダの既定のフォームに設定します。

上記のセクションで説明したように、 Outlook の各アイテムは、アイテムを表示するのに使用するフォームを把握するために、 標準のメッセージ クラス フィールドを保持しています。 連絡先アイテムの既定のメッセージ クラスは IPM.Contact です。 フォームが発行されると、このメッセージ クラスは発行されたフォーム名を反映して変更されます。 たとえば、MyForm という名前のフォームを作成したとします。 このフォームを発行すると、このフォームのメッセージ クラスは IPM.Contact.MyForm に変更されます。 この発行したフォームに基づく新しいアイテムを作成すると、 作成したアイテムのメッセージ クラスは IPM.Contact.MyForm に設定されます。

上記の一般的な事例では、フォームに関する情報 (フォーム定義) はアイテムごとには保存されません。 フォームは、基本的にはメッセージ クラス情報を使用して "リンク" されています。 一般的なアイテムのサイズは、300 バイトから 500 バイトまでです。 ただし、アイテムと共にフォーム定義が保存される場合があります。 アイテム内にユーザー設定フォームの定義が保存されているアイテムは、 "一時アイテム" または "一時アイテムに変換されたアイテム" と呼ばれます。

フォームが一時フォームに変換されると、 フォームは発行されたフォームを使用する代わりに、 アイテムと共に保存されているフォーム定義を使用します。 フォーム定義がアイテムと共に保存されている場合、 アイテムのメッセージ クラスはそのフォームの種類の既定のメッセージ クラス (たとえば IPM.Contact) に戻されます。

フォームが一時フォームになる一般的な過程

フォーム定義をアイテム内に保存する機能は、Outlook の機能の 1 つです。 フォームをデザイン モードで表示した状態で、 フォームの [プロパティ] ページの [フォームのレイアウトも送信] チェック ボックスをオンにして、 フォームを一時フォームとして指定できます (図 5 を参照してください)。

Aa155722.odc_olcustfrm105(ja-jp,office.10).gif
図 5. [フォームのレイアウトも送信] チェック ボックス

一般的に、受信者がアクセスできるフォーム ライブラリにフォームが登録されていない場合、 メッセージ フォームの [プロパティ] ページでこのチェック ボックスをオンにします。 このチェック ボックスをオンにすると、 アイテムを受信して開いたときに、 受信者側でユーザー設定フォームが表示されることが保証されます。 このような事例では、 一時フォームは予想通りに機能し、 一般的に問題が発生することはありません。 ただし、さまざまな事例があり、 場合によってはフォーム定義を含まないアイテムが突然フォーム定義を含むようになることがあります。 一度フォーム定義がアイテム内に保存されると、 保存されたフォーム定義を完全に削除する方法がないので、 これらの事例では望ましくない副作用がもたらされることがあります。

アイテムが突然一時アイテムに変換される

フォームをフォルダに発行する一般的なユーザー設定フォームの事例を想定しましょう。 また、発行したユーザー設定フォームを使用して既に 10 個のアイテムが作成されているとします。 これらのアイテムのいずれかを開き、 開いたアイテムでフォーム定義を変更すると、 Outlook はそのアイテムを自動的に一時アイテムに変換し (一時フォームを作成し)、 フォーム定義をそのアイテム内に保存します。 メッセージ クラスは、その種類のアイテムの既定のメッセージ クラスに変更され、 アイテムのサイズは著しく増加します。

アイテムが突然一時アイテムに変換される、報告済みの事例を以下に示します。

  • 新しいアイテムを作成して、フォームを変更する代わりに、 既存のアイテムのフォームを変更しました。 そのフォルダ内に存在するすべてのアイテムのフォームを変更する場合、 既存のアイテムを開く代わりに、 以下の手順に従います。
  1. ユーザー設定フォームに基づく新しいアイテムを開きます。
  2. そのアイテムのフォームのデザインを変更します。
  3. そのアイテムを使用して、フォームを再発行します (このとき、同じ名前を使用してフォームを発行します)。
  4. アイテムへの変更を保存せずに、アイテムを閉じます。

依然として、フォルダ内のすべてのアイテムのメッセージ クラスは同じフォームを参照しているので、 次にアイテムが開かれるとき、 アイテムは更新されたユーザー設定フォームを使用して表示されるようになります。 フォームを変更後、 最初にアイテムを開くとき、 Outlook は新しいフォームがインストール (フォーム キャッシュからコピー) されていることを示すメッセージを一時的に表示します。

  • ユーザー設定フォームで VBScript コードを使用し、 アイテムのフォーム定義を変更するメソッドまたはコマンドを使用しました。 以下のメソッドを使用した場合、 この現象が頻繁に発生することがあります。
    • UserProperties.Add を使用して、 プログラムでアイテムにユーザー定義フィールドを追加します。
    • FormDescription オブジェクトのメソッド。
    • コントロールのプロパティに関連するメソッド (一般的に、コントロールを有効または無効、非表示または表示するメソッド)。
    • Action オブジェクトと関連のあるメソッド。
  • フォルダ内で使用するフィールドを作成しましたが、 フォームの発行時にフィールドがアイテム内に実在しませんでした。 この場合、ユーザー設定フォームに基づく新しいアイテムを作成し、 Outlook の直接編集機能を使用して、 表形式ビューでアイテムに値を入力した場合、 Outlook は自動でユーザー定義フィールドをアイテムに動的に追加します。 その結果、フォームの定義が変更され、 アイテムは一時アイテムに変換されます。

一時フォームの一般的な兆候

さまざまなソリューションや状況がありますが、 フォームが一時フォームになることを示す兆候があることに注意する必要があります。

  • アイテムを開いたときに、突然マクロ ウイルスの警告が表示されます。 一時フォームは、フォームに VBScript コードが含まれる場合に Outlook が表示するマクロの "有効/無効" のセキュリティ警告を表示させる原因となる場合がよくあります。 コードは発行したフォームまたは信頼されているフォームには含まれておらず、 アイテム自身に含まれているので、 Outlook は常に警告を表示します。 理想的には、まずフォームを一時フォームに変換する事例を回避することをお勧めします。
  • アイテムのサイズが突然増加する。
  • アイテムのアイコンが突然変更される。 通常、この現象はメッセージ クラス フィールドに変更が加えられたことを示します。

一時アイテムを識別する

アイテムが突然一時アイテムに変換され、 [フォームのレイアウトも送信] チェック ボックスがオンになっていないことが判明した場合でも、 フォーム定義がアイテムと共に保存されていないとは限りません。

メッセージ クラス情報が、 そのアイテムの種類の既定のメッセージ クラスに設定されている場合、 アイテムは一時アイテムになります。 ただし、アイテムを開く場合に使用されるフォームはユーザー設定フォームです。

フォルダ ベースのソリューションを開発する場合、 フォルダ内のアイテムが予想通りに機能することを確認するために、 表形式ビューにメッセージ クラス情報とサイズ情報を表示することをお勧めします。 また、アイテムのアイコンが変更されたとき、 状態が変更されたことを示す場合があります。 ただし、この場合 Outlook を再起動し、 適切なアイコンが表示されることを確認する必要があります。

やってみよう : 一時フォームの作成

次の手順では、UserProperties.Add メソッドがアイテムを一時アイテムに変換する方法を例示します。

  1. [受信トレイ] フォルダを選択した状態で、 [ツール] メニューの [フォーム] をポイントし、[フォームのデザイン] をクリックします。 [フォームのデザイン] ダイアログ ボックスが表示されます。

  2. [フォルダの場所] ボックスの一覧の [受信トレイ] をクリックします。 [メッセージ] をクリックして、[開く] をクリックします。

  3. コントロール ツール ボックス を使用して、 [P.2] ページにコマンド ボタン コントロールを追加します (コントロール ツール ボックスは [フォーム] メニューから利用できます)。

  4. [フォーム] メニューの [コードの表示] をクリックします。

  5. VBScript Editor に次の VBScript コードを追加して、エディタを終了します。

    Sub CommandButton1_click()
    ' フィールドを追加してフォーム定義を変更します。
    Item.UserProperties.Add "MyField", 1
    ' アイテムを送信します。
    Item.Send
    End Sub
    
  6. [ツール] メニューの [フォーム] をポイントして、 [フォームに名前を付けて発行] をクリックします。 フォームを OneOff として [受信トレイ] フォルダに発行します。

  7. [フォームのレイアウトも保存] チェック ボックスをオンにするかどうかを確認するダイアログ ボックスが表示されたら、 [いいえ] をクリックします。 フォームへの変更を保存せずに、フォームを閉じます。

  8. [アクション] メニューの [新しい OneOff] をクリックして、 このフォームに基づくアイテムを開きます。

  9. [宛先] ボックスに自分の電子メール アドレスを設定します。

  10. [P.2] ページのコマンド ボタンを使用してメッセージを送信します。 セキュリティの設定によっては、 別のプログラムが電子メールを送信しようとしていることに対する警告メッセージが表示されることがあります。 [はい] をクリックして、メッセージを送信します。

  11. メッセージを受信したら、メッセージを開いて読みます。

セキュリティの設定によっては、マクロの警告メッセージが表示されることがあります。 また、このアイテムのサイズは比較的大きくなります (最大 6 KB)。

不要な一時アイテムを回避する

あるアイテムが一時アイテムになることをソリューション デザインが検出した場合、コードでメッセージ クラスリセットして、アイテムを保存し、一時アイテムの副作用を回避できます。たとえば、上記の「やってみよう」セクションで使用したコードの代わりに下記のコードを使用します。セキュリティの設定にもよりますが、アイテムはマクロの警告メッセージを表示しなくなります。

Sub CommandButton1_click()
' MessageClass プロパティを保存します。
sSaveMessageClass = Item.MessageClass
' このコードはフォーム定義を変更します。
Set MyProp = Item.Userproperties.Add("MyField", 1)
' MessageClass プロパティを元に戻します。
Item.MessageClass = sSaveMessageClass
'フォームへの変更を保存します。
Item.Save
' アイテムを送信します。
Item.Send
End Sub

より柔軟なアプローチでは、 PropertyChange イベントを使用して MessageClass プロパティの変更状況を監視し、 必要に応じてメッセージ クラスをリセットします。 Outlook オブジェクト モデルや VBScript の詳細については説明していませんが、 上記の簡略化したアプローチは、 このアプローチが機能することを例示しています。

    プログラムでアイテムのメッセージ クラスを変更しても、 アイテムのサイズは減少しません。 アイテムから不要なフォーム定義を完全に削除する唯一の方法は、 フォーム定義を持たない新しいアイテムを作成し、 古いアイテムから新しいアイテムにデータをコピーすることです。

Outlook がフォームを検索する方法

フォルダからアイテムを開いたときに、 Outlook はメッセージ クラス フィールドを調べて、 アイテムの表示に使用するフォームを決定します。 その際、Outlook は以下の場所で必要なフォームを検索します。

  • メモリ。   Outlook を起動してから、フォームにアクセスしたことがあり、 そのフォームがまだメモリ内で使用できる場合、 Outlook はメモリ内のフォームを使用します。 ユーザー設定フォームに基づくアイテムを開いてフォームを再発行し、 その後、新しいアイテムを開いた場合、 フォームは以前のアイテムで使用されているので、 Outlook は更新されたフォームを使用しません。
  • フォーム キャッシュ。   フォームがメモリ内に存在しない場合、 Outlook はコンピュータ上のフォーム キャッシュを検索して、 フォームを使用したことがあるかどうかを調べます。 キャッシュ内にフォームが存在する場合、 Outlook はハード ドライブからフォームを読み込みます。
  • カレント フォルダ。   フォームがキャッシュ内に存在しない場合、 Outlook はフォームのカレント フォルダを検索します。 親フォルダを含むその他のフォルダは検索されません。 フォルダに発行されたフォームは、 非表示のアイテムとして保存されており、 Outlook ビューでは表示されません。
  • 個人用フォーム ライブラリ。   フォームがフォルダ内に存在しない場合、 Outlook は個人用フォーム ライブラリを検索します。 個人用フォーム ライブラリは、 既定のストアの最上位フォルダに保存されます。 既定のストアは、 既定の受信トレイ (受信メールが配信される受信トレイ) を含む一連のフォルダです。
  • 組織フォーム ライブラリ。   フォームが個人用フォーム ライブラリから利用できない場合、 Outlook は Microsoft Exchange Server 上の組織フォーム ライブラリを検索します。
  • Web フォーム。   Web フォームが [ツール] メニューの [オプション] で構成されている場合は検索対象になります。

フォームが見つからない場合、 アイテムはそのアイテムの標準フォームを使用して表示されます (ユーザー設定のメッセージ フォームには標準メッセージ フォーム、 ユーザー設定の連絡先フォームおよびその他のフォームには標準の連絡先フォームが使用されます)。

フォームがフォーム キャッシュ内に見つかった場合、 見つかったフォームの最終変更日時と元の場所にあるフォームの最終変更日時を比較します。 元の場所にあるフォームが更新されている場合、 Outlook は更新されたフォームをダウンロードしてフォーム キャッシュ内のフォームを更新します。

フォーム キャッシュの目的

Outlook はキャッシュ内にフォームのコピーを保存して、 アイテムを開くたびにフォームを取得する必要性をなくし、 フォームを開くときのパフォーマンスを向上しています。 フォームを Microsoft Exchange のパブリック フォルダまたは組織フォーム ライブラリに保存するときに、 キャッシュされたフォームを使用することで、 ローカル コンピュータとサーバーの両方でパフォーマンスが飛躍的に向上します。

フォーム キャッシュの場所

以前のバージョンの Outlook とは異なり、 フォーム キャッシュは C:\Windows\Forms フォルダには存在しません。 Outlook 2000 以降のバージョンのフォーム キャッシュの場所では、 ローミング ユーザーをサポートします。 Microsoft Windows® XP では、フォーム キャッシュは次の場所にあります。

C:\Documents and Settings\<ユーザー名>\Local Settings\Application Data\Microsoft\Forms

Microsoft Windows NT® を使用している場合、フォーム キャッシュは次の場所にあります。

C:\Windows\Profiles\<ユーザー名>\LocalSettings\Application Data\Microsoft\Forms

フォーム キャッシュの構造

初めてフォームがアクティブになるときに、 フォーム定義ファイルがフォームが保存されているフォーム ライブラリから Forms フォルダにコピーされます。 フォーム キャッシュは、サブフォルダにフォーム定義の一時的なコピーを保持します。 このサブフォルダ名は、フォーム名にほぼ等しくなります。

Forms フォルダに存在するフォーム テーブル (Frmcache.dat) は、 フォームを検索し、 同じ名前の複数のフォーム インスタンスがキャッシュ内に読み込まれるのを防ぐために使用されます。 フォームがアクティブになると、 Outlook は同じメッセージ クラスを使用するフォームが既にキャッシュ内に存在するかどうかを確認します。 同じ名前のメッセージ クラスを使用するフォームが存在しない場合、 Outlook はキャッシュにフォーム定義をコピーします。 また、フォームに変更が加えられた場合、 Outlook は新しいフォーム定義をキャッシュにコピーします。

Outlook は次の順序でフォームを検索します。 アイテムに対応するフォームが検出された場合、 Outlook はそのフォームを開きます。 それ以上、検索は行いません。

  • アプリケーション フォーム ライブラリ内に存在するメモ、投稿、および連絡先などの Outlook の標準フォーム。
  • フォーム キャッシュにキャッシュされているフォーム。
  • 個人用フォーム ライブラリ内のフォーム。
  • 現在選択されているフォルダに発行されているフォーム。
  • 組織フォーム ライブラリ内のフォーム。

Outlook はフォームをキャッシュするので、 複数のフォームで同じ名前を使用したり、 または同じフォームを複数のフォーム ライブラリに発行しないようにする必要があります。 フォルダ ベースのソリューションで使用するフォームは、 フォルダにのみ発行することをお勧めします。 メッセージ フォーム ベースのソリューションを開発している場合、 フォームを一時的に個人用フォーム ライブラリに発行できます。 フォームが完成したら、Microsoft Exchange Server 上の組織フォーム ライブラリにフォームを発行し、 フォームのバックアップを作成した後に、 個人用フォーム ライブラリからフォームを削除する必要があります。 なんらかの理由で、1 つのフォームを複数の場所に発行する必要がある場合、 すべてのフォーム ライブラリを最新のフォームで更新する必要があります。

既定では、Outlook はフォームの合計サイズを 2048 KB に制限しています。 この設定を変更するには、以下の手順に従います。

  1. [ツール] メニューの [オプション] をクリックします。
  2. [その他] タブをクリックして、[詳細オプション] をクリックします。
  3. [ユーザー設定フォーム] をクリックします。 [格納領域の制限値] ボックスに 2048 以上の値を入力し、 [OK] をクリックします。

フォーム キャッシュが最大ディスク容量に到達すると、 最も古く、かつ使用されていないフォームがキャッシュから消去されます。

フォームがフォーム キャッシュ内で見つかった場合、 見つかったフォームの最終変更日時と元の場所にあるフォームの最終変更日時を比較します。 元の場所にあるフォームが更新されている場合、 Outlook は更新されたフォームをダウンロードして、 フォーム キャッシュ内に存在するフォームを更新します。 フォーム キャッシュについては、この資料の後半で説明します。

フォーム キャッシュの場所やコンテンツは変更できない

Outlook 2002 は、 ローミング ユーザーをサポートするようにデザインされており、 現在コンピュータにログオンしているユーザーに応じてフォーム キャッシュの場所を変更できます。 フォーム キャッシュの場所を示す、ユーザー側で構成可能な設定はありません。 そのため、フォーム キャッシュの場所を既定の場所以外の別の場所に直接変更することはできません。

Frmcache.dat ファイルの形式は文書化されておらず、 ファイルへの直接的な変更はサポートされていません。 Microsoft では、Forms フォルダ内のすべてのコンテンツに関する直接的な変更をサポートしません。 ただし、Microsoft がファイルへの直接的な変更に関する文書を公開した場合、 または Microsoft 製品サポート サービスがトラブルシューティングの目的のみでファイルへの直接的な変更を推奨する場合は除きます。 Forms フォルダのコンテンツに変更を加える前に、 まずバックアップを作成することをお勧めします。

レッスン 2 : フィールド

概要

フィールドは Outlook のソリューションに必要なデータを格納するので、 すべての Outlook のソリューションで重要な役割を果たします。 一般的なデータベースとは異なり、 Outlook と MAPI (メッセージング アプリケーション プログラミング インターフェイス) フィールドを中心とする概念の多くは、 その他の種類のアプリケーションと一貫性がないため、 Outlook はソリューション開発者にいくつかの問題を突きつけます。 このレッスンでは、Outlook でフィールドが実装される方法、 およびソリューションでフィールドを最大限に活用する方法について説明します。

レッスン内容

このレッスンでは、次の内容について説明します。

  • 標準フィールドとユーザー定義フィールドの違い。
  • ユーザー定義フィールドがさまざまな場所に存在できること、 およびユーザー定義フィールドの不整合がソリューションに与える悪影響。
  • [フィールドの選択] ダイアログ ボックスを最大限に活用する方法。
  • Microsoft Outlook の各種フィールドの使用目的。

参考資料

  • Outlook 2002 Visual Basic リファレンス ヘルプの「フィールドとコントロールを使う」セクションのさまざまなトピック。
  • Building Applications with Microsoft® Outlook® Version 2002』の「Chapter 6: Controls, Fields and Properties」 (Randy Byrne 著、Microsoft Press 出版)

Outlook のフィールド構造

Outlook のフォームをカスタマイズする際、 フィールドを使用する作業が重要な側面になります。 このセクションでは、フィールドのすべての側面について説明し、 フォームをカスタマイズするための優れた基礎を提供します。

Outlook のフィールドは、 MAPI ベースのデータベース (つまりストア) に保存されます。 このデータベースは、Exchange Server 上のフォルダまたはローカルの個人用フォルダ ファイル (*.pst) ファイルです。 Outlook アイテムは、フィールドのグループで構成されており、 一般的なデータベースのレコードに相当します。

一般的なフラット ファイルのデータベース システム (Microsoft Excel など) またはリレーショナル データベース システム (Microsoft Access など) では、 まずフィールドを定義し、 データベース (データベース テーブル) 内の各レコードが同じフィールドのセットを保持します。 ただし、MAPI ベースのストアでは、 異なるフィールドのセットを保持するアイテムを 1 つのフォルダ内に保存することをアプリケーションが許可しているので、 MAPI ベースのストアは "半構造化" と呼ばれています。 Outlook では、アイテム構造は Outlook のデザインの一部である規則のみに基づいています。

Outlook のアイテムは、 種類ごとに特定の標準フィールドのセットを含んでいます。 たとえば、連絡先はある標準フィールドのセットを含んでいますが、 メッセージは別の種類の標準フィールドのセットを含んでいます。 すべての種類のアイテムに使用できる標準フィールドもありますが、 1 種類のアイテムまたはアイテムのサブセットのみで使用できる標準フィールドもあります。

Outlook では、 アイテムで使用できる標準フィールド以外に、 多数のユーザー定義フィールド (カスタム フィールド) をアイテムに追加できます。

標準フィールド

Outlook の各アイテムは、 標準フィールドのセットを保持しています。 たとえば、連絡先アイテムは、[氏名]、[電子メール]、[誕生日] フィールドなど、 連絡先固有の情報を保存するための標準フィールドを保持しています。 [件名] フィールドなど、 すべての種類のフォームに使用できるフィールドもありますが、 1 つのフォームのみで使用できるフィールドもあります。 ただし、ソリューションの観点からすると、 Outlook の標準フィールドは、 標準フォーム ベースのすべてのアイテムに存在するので 、 これらのフィールドを使用する作業は直感的に理解できます。 たとえば、すべての連絡先アイテムは、 少なくとも連絡先のすべての標準フィールドを保持しています。

メッセージ フィールド (本文フィールド)

メッセージ フィールドまたは本文フィールドは、 すべての種類のアイテムに存在する Outlook の標準フィールドです。 メッセージ フォームまたは依頼フォームではメッセージ フィールドと呼ばれますが、 連絡先フォームや仕事フォームなど他のフォームでは本文フィールドと呼ばれます。 これらのフィールドの機能は同じです。

メッセージ フィールドを使用して、以下の操作を行えます。

  • インライン ファイルの添付ファイルまたはショートカットの挿入。 テキスト ストリーム内に添付ファイルを表示するには、 メッセージ フォームに RTF 形式を使用する必要があります。
  • アイテムの添付ファイルまたはショートカットの挿入。 この操作により、別のユーザーからのメッセージや別のアイテムをメッセージ フィールドに挿入できます。
  • Web ページへのショートカットの挿入。
  • リンク オブジェクトまたは埋め込みオブジェクトの挿入。 これらのオブジェクトには、ボイス メール、Word 文書、Excel ブック、 および Microsoft PowerPoint® プレゼンテーションなどのファイルが含まれます。

Outlook の各アイテムが、 メッセージ フィールドまたは本文フィールドのデータを格納するために保持している標準フィールドは 1 つだけです。 この種類のユーザー定義フィールドは作成できません。 各アイテムで保持できるリッチ テキスト フィールドは 1 つに制限されています。

   プログラムでメッセージ フィールドを参照すると、 メッセージ フィールドは Body プロパティとして参照されます。

受信者フィールド

受信者フィールドは、 基本的には電子メール アドレスを解決するためにデザインされた標準フィールドです。 これには、宛先、差出人、CC、BCC だけでなく、 連絡先フォームの電子メール、電話番号、および Web ページ フィールドが含まれます。 これらのフィールドは、 電子メール アドレスの解決用に特別にデザインされた Outlook カスタム コントロールを使用して、 セミコロンで区切られた電子メール名を解析します。 電子メール名の解析は、 フィールド内またはフィールド間のコピーと貼り付けにより行われます。

これらのフィールドをユーザー設定フォームのページで使用するには、 [フィールドの選択] ダイアログ ボックスからフォーム ページ上に標準フィールドをドラッグする必要があります。 Outlook は自動的に、 受信者コントロールを作成し、 すべての必要事項を設定します。

   受信者フィールドのデータ型を参照すると、 受信者または内部データ タイプとして表示されます。

連絡先の "選択" フィールド

Outlook では、 連絡先フォームの先頭ページでドロップダウン ボタンをサポートする別のフィールドを利用できます。 これらのフィールドを次の表に示します。

表 3. 連絡先の選択フィールド

選択フィールド 選択されるフィールド
アドレスの選択 選択された住所
電子メールの選択 選択された電子メール
電話 1 の選択 選択された電話
電話 2 の選択 選択された電話 2
電話 3 の選択 選択された電話 3
電話 4 の選択 選択された電話 4
電話 5 の選択 選択された電話 5
電話 6 の選択 選択された電話 6
電話 7 の選択 選択された電話 7
電話 8 の選択 選択された電話 8

これらのフィールドを連絡先フォームのページで使用するには、 フォームをデザイン モードで表示し、 [フィールドの選択] ダイアログ ボックスを使用して、 使用する "選択" フィールドをページ上にドラッグします。 この操作により、 ラベルとドロップダウン リストを表示するボタンが作成されます。 次に、対応する "選択された" フィールドをフォーム上にドラッグします。

フォーム上に "選択" フィールドをドラッグすると、 Outlook がクリックするとドロップダウン リストを表示する特別なボタンを生成します。 ただし、このボタンは次の 2 点が Outlook の標準ボタンと異なります。

  • "選択" ボタンは、 Outlook の標準ボタンよりも小さくなります。 ただし、ボタンのサイズは調整できます。
  • 新しい "選択" ボタンには、 標準ボタンに表示される黒い下向きの三角矢印は自動的には作成されません。 ただし、別の画像を代用できます。 Microsoft では、下向き矢印のビットマップを提供していません。 ただし、ペイントなど標準のソフトウェアの描画パッケージで下向き矢印のビットマップを作成できます。

ボタンで使用する画像を選択するには、 以下の手順に従います。

  1. ボタンを右クリックして、[プロパティの詳細] をクリックします。
  2. [Picture] プロパティをクリックして、 [プロパティ] ウィンドウの上部に表示される [...] をクリックして、 別の画像ファイルを選択します。

   コントロールをフォーム上にドラッグして、 コントロールをボタンにバインドしても、 これらの "選択" ドロップダウン ボタンは作成できません。 正常に機能するドロップダウン ボタンを作成する唯一の方法は、 [フィールドの選択] ダイアログ ボックスから "選択" フィールドをドラッグする方法のみです。

ユーザー定義フィールドの動作

その他の多くのデータベース関連ソフトウェアと異なり、 Outlook は 1 つのフォルダ内に存在するアイテムごとに、 異なるユーザー定義フィールドのセットを格納できます。 このことはフォルダ内のアイテムが、 データを格納する非常に柔軟性のあるコンテナであることを意味しますが、 開発者はこの柔軟性が Outlook ベースのソリューションに与える影響を認識する必要があります。

Access などのデータベース プログラムでは、 フィールドは "テーブル レベル" で定義されているので、 テーブルにフィールドを追加すると、 追加したフィールドがテーブル内のすべてのレコードに存在するようになります。 Outlook アイテムは、機能的にはデータベース内のレコードに相当します。 Outlook フォルダは、概念的にはテーブルまたはフラット ファイル データベースに相当します。 ただし、Outlook と Microsoft Exchange がフィールド (つまりプロパティ) の概念をどのように実装するかを考えると、 このデータベースとの共通点は破綻します。

Exchange では、 フォルダ内のアイテムは任意のフィールド セットを保持できます。 フォルダ内のアイテムの "フィールド スキーマ" を決定するのはアプリケーションです。 Outlook は、 連絡先、予定、仕事などの定義済みのアイテムごとに独立したフィールド スキーマを保持しています。 これらの各アイテムは、 そのアイテムの種類に固有な標準フィールドのセットを保持しています。 複数の種類のアイテム内に存在するフィールドもあります。 たとえば、開始フィールドは連絡先や履歴エントリに存在します。 また、経費情報フィールドや支払条件フィールドなど、 すべてのアイテムに存在するフィールドもあります。

Outlook アイテムの種類ごとに用意されている標準フィールド以外にも、 Outlook にはアイテムに追加情報を保存するユーザー定義フィールド (カスタム フィールド) を作成できます。 これらのユーザー定義フィールドは標準フィールドと同じ目的を持っていますが、 通常、これらのフィールドの使用方法は異なります。 標準フィールドとユーザー定義フィールドの最も重要な違いは、 標準フィールドは特定の種類のアイテムを使用しているとき常に利用できますが、 ユーザー定義フィールドについては必ずしもそうとは言えない点です。 ユーザー定義フィールドは以下の場所に存在します。

  • フォルダ。 ユーザー定義フィールドをフォルダに保存すると、 フォルダ関連の事例でフィールドを使用できます。 たとえば、[フィールドの選択] ダイアログ ボックスを使用して、 表形式ビューにユーザー定義フィールドを追加できます。
  • アイテム。 ユーザー定義フィールドをアイテムに保存すると、 フィールドにデータを保存できます。
  • 発行したフォーム。 ユーザー定義フィールドを発行したフォームに保存すると、 ユーザー設定フォーム ベースで作成した新しいアイテムは、 ユーザー定義フィールドを継承します。

多くの場合、Outlook はアイテムおよびフォルダ間で動的にユーザー定義フィールドを複製します。 この処理は、大部分の Outlook ユーザーからは見えない処理です。 ただし、ソリューションを作成している場合、 ソリューションがすべての考えられる事例で機能するようにフィールドの一貫性を保つことが重要になります。

次のセクションでは、 さまざまな状況での Outlook の動作について説明し、 フィールドが存在する場所、Outlook が動的にフィールドを作成する方法、 およびフィールドが実際に存在する場所を判断する方法を理解して、 ユーザー定義フィールドがソリューションに与える影響を判断できるようにします。

ユーザー定義フィールドの追加

フォームをビュー モードまたはデザイン モードのいずれかで表示しているときに、 [フィールドの選択] ダイアログ ボックスを使用してフィールドを作成すると、 フィールドはフォルダに追加されます。 フォームをデザイン モードで表示しているときに、 フィールドをフォーム上にドラッグすると、 フィールドはアイテムに追加され、 Outlook はコントロールを自動的に作成し、 フィールドをそのコントロールにバインドします。

フォームをデザイン モードで表示しているときに、 コントロールを右クリックしてプロパティにアクセスし、 [プロパティ] ダイアログ ボックスの [値] タブの [新規作成] をクリックして、 新しいユーザー定義フィールドを作成できます。 この手順でフィールドを作成すると、 新しいフィールドはアイテムとフォルダの両方に追加されます。

アイテムを別のフォルダからソリューション フォルダにコピーまたは移動することによって、 フィールドをフォルダ ソリューションに導入できます。 また、動的にまたはソリューションの一部としてプログラムでフィールドを作成して、 アイテムをフォルダにインポートする場合にも、 フィールドを導入できます。

場合によっては、 ユーザー定義フィールドが 3 つの場所 (フォルダ、アイテム、発行したフォーム) のいずれにも存在しないことがあります。 このような状況が発生した場合には、 ソリューションに悪影響を与えることがあることに注意してください。

次の表は、新しいユーザー定義フィールドを作成したときの Outlook の動作の概要を示します。

表 4. 新しいユーザー定義フィールドを伴う Outlook の動作

操作 フィールドの追加先
フォームをビュー モードで表示した状態で、 [フィールドの選択] ダイアログ ボックスで [新規フィールド] ボタンを使用。 フォルダ
フォームをデザイン モードで表示した状態で、 [フィールドの選択] ダイアログ ボックスで [新規フィールド] ボタンを使用。 フォルダ
アイテムをデザイン モードで表示した状態で、 [すべてのフィールド] タブの [新規作成] ボタンを使用。 フォルダ
[フィールドの選択] ダイアログ ボックスからフィールドをフォームにドラッグ。 アイテム
コントロールをフィールドにバインドするときに、 [プロパティ] ダイアログ ボックスの [値] タブの [新規作成] ボタンを使用。 アイテムとフォルダ

ユーザー定義フィールドの削除

次の表を使用して、以下の場所にあるユーザー定義フィールドを削除します。

表 5. ユーザー定義フィールドの削除

フィールドを削除する対象となる場所 操作
フォルダ フォルダのユーザー設定フォームをデザイン モードで開きます。 (この操作を行うには、[ツール] メニューの [フォーム] をポイントし、[フォームのデザイン] をクリックします。 次に、[フォルダの場所] ボックスの一覧でフォルダ名をクリックし、 フォーム名をクリックし、[開く] をクリックします。) [フィールドの選択] ダイアログ ボックスの一覧で [ユーザー定義フィールド] を設定します。 コントロール名をクリックして、[フィールドの削除] をクリックします。
アイテム ユーザー設定フォームをデザイン モードで開きます (前の行参照)。 アイテムの [すべてのフィールド] タブで削除するフィールドをクリックして、[削除] をクリックします。
フォーム (この手順は、 ユーザー設定フォームがフォルダで新しいアイテムを作成したときに開かれる既定のフォームである場合を想定しています。 この操作の詳細については、 セクション「メッセージ クラス」をご覧ください。) [標準] ツール バーの [新規作成] をクリックして、 ユーザー設定フォームを実行時モードで開きます。 フォームの [すべてのフィールド] タブをクリックしてフィールドを削除し、フォームを再発行します。

ユーザー定義フィールドが存在する場所を判断する

次の表を使用して、フィールドが存在する場所を判断します。

表 6. フィールドが存在する場所の判断基準

フィールドの存在を確認する対象となる場所 操作
フォルダ [フィールドの選択] ダイアログ ボックスの一覧で [ユーザー定義フィールド] を設定します。
アイテム ユーザー設定フォームをデザイン モードで開き、 アイテムの [すべてのフィールド] タブの [対象となるフィールドグループ] ボックスの一覧で [このアイテムのユーザー定義フィールド] をクリックします。 ソリューションの開発時に、一時的にこのページを表示するようにすることをお勧めします。 作成したフィールドが [すべてのフィールド] タブに表示されない場合、 フィールドを追加後にフォームを発行していない可能性があります。 フォームの発行手順については、 セクション「フォームの保存、発行、および配布」をご覧ください。
フォーム (この手順では、 ユーザー設定フォームがフォルダで新しいアイテムを作成したときに開かれる既定のフォームである場合を想定しています。 この操作の詳細については、 セクション「メッセージ クラス」をご覧ください。) [標準] ツール バーの [新規作成] ボタンをクリックして、 ユーザー設定フォームを実行モードで開き、 フォームの [すべてのフィールド] ページを確認します。 作成したフィールドが [すべてのフィールド] タブに表示されない場合、 フィールドを追加後にフォームを発行していない可能性があります。 フォームの発行手順については、 セクション「フォームの保存、発行、および配布」をご覧ください。

ユーザー定義フィールドを追加後に起こりうる問題点

このセクションでは、 フォルダ ベースのソリューションでユーザー定義フィールドに一貫性がない場合に発生する現象の一部を説明します。

  • フィールドがアイテムに動的に追加されたので、 アイテムが一時アイテムになります。 一般的な現象としては、アイテム サイズの増加、 アイテムのメッセージ クラス フィールドがそのアイテムの種類の標準のメッセージ クラスに戻る、 ユーザーが一時アイテムを開くときにマクロの "有効/無効" の警告が表示されるなどの現象があげられます。
  • Outlook オブジェクト モデルは、 フィールドが特定の場所に存在することを想定してデザインされているので、 Outlook オブジェクト モデルの特定の範囲ではエラーが発生することがあります。 これについては、この資料で詳しく説明し、コードでエラーが発生する場合の例についても見ていきます。
  • Outlook オブジェクト モデルのコードでフィールドがある特定の場所に存在すると想定されているとき、 その場所にフィールドが存在しない場合は、 一般的なプログラム ロジックの問題点とエラーが発生します。

フィールドの使用に関する推奨事例

ユーザー設定フォームのソリューションでフィールドを使用しているときに考慮すべき推奨事例は多数あります。

ソリューションが完了するまでアイテムを作成しない

理想的には、 ソリューションで必要なすべてのユーザー定義フィールドを含むユーザー設定フォームを作成する必要があります。 このようなフォームを作成すると、 フォームをフォルダに発行でき、 フォルダ内に作成されるすべてのアイテムはユーザー設定フォームに基づいて作成されるので、 ユーザー定義フィールドが継承されます。 このような事例では、 各ユーザー定義フィールドがすべての場所に存在し、 ソリューションで一貫性が保たれていることが保証されます。

ソリューションの開発中に、 ソリューションのテスト用にアイテムを作成した場合、 これらのアイテムを削除するか、 フォームにユーザー定義フィールドを後で追加する場合は、 新しいアイテムを作成する必要があります。

アイテムを作成後、 フォルダ ソリューションにフィールドを追加する必要がある場合は、 すべてのアイテムにフィールドが追加されたことを確認します。 この操作を行うには、 プログラムで (Item.UserProperties.Add を使用して)、 またはアイテムを表形式ビューで表示して、 ビューにユーザー定義フィールドを追加し、 Outlook がアイテムにフィールドを動的に追加できるように一時的にフィールドに値を追加後、 一時的に追加した値を削除します。

Visual Basic for Applications を使用してアイテムをインポートする

データをアイテムとしてフォルダにインポートする場合、 Outlook のインポート/エクスポート ユーティリティを使用してアイテム内にユーザー定義フィールドを作成することはできません。 このユーティリティを使用してアイテムをインポートする場合、 プログラムでアイテム内のすべてのユーザー定義フィールドを追加するプロシージャを作成するか、 またはプログラムですべてのアイテムを作成およびインポートするプロシージャを作成することを検討します。

値を保持している場合のみフィールドをアイテムに追加する

さまざまな状況において、フィールドが値を保持しているかどうかによって異なる現象が見られます。 たとえば、新しい連絡先アイテムを開き、 フォームの [すべてのフィールド] ページに新しいユーザー定義フィールドを作成した場合、 フィールドはフォルダに追加されます。 ただし、このフィールドに値を入力するまで、 フィールドは [このアイテムのユーザー定義フィールド] ボックスの一覧には表示されません。 つまり、フィールドがフォルダ内に存在し、 アイテム内には存在しない場合、 フィールドに値が設定されるときに、Outlook がフィールドをアイテムに自動的に追加します。 この現象は、直接編集機能を使用して表形式ビューにデータを入力する場合にも発生します。

アイテムのコピーまたは移動

あるフォルダから別のフォルダにアイテムをコピーまたは移動すると、 アイテム内のユーザー定義フィールドも移動しますが、 フィールドは移動先フォルダに関連付けられません。 何を行うのかにもよりますが、 個別のアイテムを移動する代わりに、 フォルダ全体のコピーを作成するか、 または [フィールドの選択] ダイアログ ボックスを使用して新しいフォルダ内でユーザー定義フィールドを再定義します。

ユーザー定義フィールドは検索の対象となるフォルダ内に存在する必要がある

Outlook オブジェクト モデルで Find メソッドまたは Restrict メソッドを使用して、 具体的な条件を満たすフォルダ内のすべてのアイテムを検索できます。 たとえば、OrderDate フィールド (ユーザー定義フィールド) に今年の日付が設定されているすべてのアイテムを取得したいと仮定します。 これらのメソッドが機能するには、 取得するアイテムだけでなく、 ユーザー定義フィールドもフォルダ内に存在している必要があります。 [フィールドの選択] ダイアログ ボックスを使用して、 コードで使用するフィールドに適した新しいフィールドを作成できます。 また、UserProperties.Add メソッドの AddToFolderFields 引数を使用して、 アイテムにフィールドを追加したときに、 追加したフィールドがフォルダにも追加されたことを確認するようにできます。

やってみよう : ユーザー定義フィールドを使用する

次に、フォルダ ベースのサンプル ソリューションを作成する一連の手順を示します。 既存の獣医連絡先ソリューションを引き続き使用して、 ソリューションを構築します。

簡単なユーザー設定の連絡先フォームを作成および発行する

最初に作成するフォームでは、 顧客のペット名およびペットの種類に関する情報を整理します。

  1. [獣医連絡先] フォルダを選択して、 新しい連絡先フォームを開きます。 このフォームはレッスン 1 で作成した Customer フォームです。
  2. [ツール] メニューの [フォーム] をポイントし、[このフォームのデザイン] をクリックします。
  3. フォームの [ペット情報] タブをクリックします。 レッスン 1 でこのフォーム ページに追加したコントロールを削除します。
  4. [フィールドの選択] ダイアログ ボックスの一覧で [ユーザー定義フィールド] をクリックします。
  5. [新規フィールド] ボタンをクリックし、[名前] ボックスに「ペット名」と入力します。[OK] をクリックします。
  6. 再度、[新規フィールド] ボタンをクリックし、 [名前] ボックスに「ペットの種類」と入力します。[OK] をクリックします。
  7. [ペット名] フィールドと [ペットの種類] フィールドの両方をフォームの [ペット情報] タブにドラッグします。
  8. フォームを Customer_Pet_Info として再発行します。
  9. アイテムへの変更を保存せずに、 アイテムを閉じます。

上記の手順で [フィールドの選択] ダイアログ ボックスから 2 つのフィールドをフォーム上にドラッグしたとき、 Outlook はアイテムにフィールドを設定しました。 アイテムはフォームとして発行されたので、 これらのフィールドは発行したフォーム内にも存在します。

これで、これらのフィールドはフォルダとフォームの両方に存在するようになりました。 すべての新しいアイテムは、 発行したフォームに基づいて作成されるので、 すべてのアイテムがこれらの 2 つのユーザー定義フィールドを保持することになります。 ユーザー定義フィールドは、このフォルダで作業する際に関連するすべての場所に存在するので、 これは理想的な事例です。

メッセージ クラスとサイズをビューに追加する

次の手順では、表形式のビューを設定し、 ビューにフィールドを追加して、 Outlook フィールドの動作を監視しやすくします。

  1. [獣医連絡先] フォルダをクリックします。

  2. [表示] メニューの [現在のビュー] をポイントして、[ビューの定義] をクリックします。

  3. [ビューの定義] ダイアログ ボックス (図 6 参照) の [新規作成] をクリックします。

    ここをクリックすると拡大表示できます
    図 6. [ビューの定義] ダイアログ ボックス (図をクリックすると拡大表示できます)

  4. [新しいビューの作成] ダイアログ ボックス (図 7 参照) の [新しいビュー名] ボックスに「獣医連絡先」と入力します。 [ビューの種類] ボックスの一覧で [表] が選択されていることを確認して、 [OK] をクリックします。

    Aa155722.odc_olcustfrm107(ja-jp,office.10).gif
    図 7. [新しいビューの作成] ダイアログ ボックス

  5. [ビューの設定] ダイアログ ボックス (図 8 参照) の [フィールド] をクリックします。

    Aa155722.odc_olcustfrm108(ja-jp,office.10).gif
    図 8. [ビューの設定] ダイアログ ボックス

  6. [表示フィールドの選択] ダイアログ ボックス (図 9 参照) の [表示するフィールドと順序] ボックスの一覧に表示されているフィールドをすべて削除します。

    ここをクリックすると拡大表示できます
    図 9. [表示フィールドの選択] ダイアログ ボックス (図をクリックすると拡大表示できます)

  7. [対象となるフィールド グループ] ボックスの一覧で [すべての連絡先フィールド] が表示されていることを確認します。 [表示可能なフィールド] ボックスの一覧から、[表題]、[会社]、[メッセージ クラス]、 および [サイズ] フィールドを [表示するフィールドと順序] ボックスの一覧に移動して、 [OK] をクリックします。

  8. [ビューの設定] ダイアログ ボックスで [OK] をクリックします。

  9. [ビューの定義] ダイアログ ボックスで "獣医連絡先" が選択されていることを確認して、 [適用] をクリックします。

       メッセージ クラス フィールドとサイズ フィールドは、説明のために追加しました。 フォルダ ソリューションを開発するときは、 これらのフィールドを表示することをお勧めします。

  10. 必要に応じて、列の幅を調整します。

顧客の連絡先アイテムを 2 つ作成する

  1. [獣医連絡先] フォルダをクリックして、フォルダを右クリックし、[プロパティ] をクリックします。

  2. [全般] タブの [このフォルダに投稿するときに使用するフォーム] ボックスの一覧で [Customer_Pet_Info] をクリックし、[OK] をクリックします (図 10 を参照してください)。

    Aa155722.odc_olcustfrm110(ja-jp,office.10).gif
    図 10. [獣医連絡先 プロパティ] ダイアログ ボックス

  3. ツール バーの先頭のボタン ([新規作成]) をクリックして、 新しい連絡先アイテムを開きます。

  4. 名前「Alan Adams」と入力します。 [ペット情報] ページをクリックして、[ペット名] ボックスに「Allie」と入力し、 [ペットの種類] ボックスには「ワニ」と入力します (図11 を参照してください)。 [保存して閉じる] をクリックします。

    Aa155722.odc_olcustfrm111(ja-jp,office.10).gif
    図 11. 獣医連絡先フォームの [ペット情報] ページ

  5. ツール バーの先頭のボタンをクリックして、 新しい連絡先アイテムを開きます。

  6. 名前「Bob Barry」と入力します。 [ペット情報] ページをクリックして、[ペット名] ボックスに「Babs」と入力し、 [ペットの種類] ボックスには「ヒヒ」と入力します。 [保存して閉じる] をクリックします。

この時点で、2 つのユーザー定義フィールド (ペット名およびペットの種類) が、 [獣医連絡先] フォルダに発行したフォーム (Customer_Pet_Info) と上記の手順で作成した 2 つのアイテム内に存在するようになります。

発行したフォームにフィールドを追加する

ペットが去勢手術を受けているかどうかに関する情報を管理するフィールドを追加します。

  1. ツール バーの先頭のボタンをクリックして、 新しい連絡先アイテムを開きます。

  2. [ツール] メニューの [フォーム] をポイントし、 [このフォームのデザイン] をクリックします。

  3. [ペット情報] ページをクリックします。

  4. [フィールドの選択] ダイアログ ボックスの [フィールドの新規作成] をクリックし、 [名前] ボックスに新しいフィールド名として「去勢」と入力します。

  5. [種類] ボックスの一覧で [はい/いいえ] をクリックします。 [書式] ボックスの設定は [アイコン] のままにして、 [OK] をクリックします。

  6. [フィールドの選択] ダイアログ ボックスから [去勢] フィールドをフォーム ページ上にドラッグします。 Outlook は、[種類] が [はい/いいえ] のフィールド用にチェック ボックス コントロールを自動的に作成します (図 12 を参照してください)。

    Aa155722.odc_olcustfrm112(ja-jp,office.10).gif
    図 12. Customer_Pet_Info フォームの [去勢] フィールド

  7. [ツール] メニューの [フォーム] をポイントし、 [フォームの発行] をクリックします。 [フォームの発行] ウィンドウが表示される場合は、 アイテムの一覧から [Customer_Pet_Info] を選択し、 [表示名] ボックスと [フォーム名] ボックスにアイテム名を表示して、[発行] をクリックします。

  8. アイテムへの変更を保存せずに、アイテムを閉じます。

ビューに新しいフィールドを追加する

  1. [表示] メニューの [現在のビュー] をポイントして、[現在のビューの編集] をクリックします。
  2. [ビューの設定] ダイアログ ボックスで [フィールド] をクリックします。 [対象となるフィールド グループ] ボックスの一覧に [ユーザー定義フィールド] が表示されていることを確認し、 [去勢] フィールドを [表示するフィールドと順序] ボックスの一覧に移動します。
  3. 必要な場合はフィールドの順序を調整し、[OK] を 2 回クリックして、 開いているダイアログ ボックスを閉じます。

この時点で、[去勢] フィールドはフォルダと発行されたフォームに存在するようになります。 [去勢] フィールドは、上記の手順で作成した 2 つのアイテムに対して直接公開されませんが、 これらのアイテムは発行されたフォーム定義にリンクされているので、 [去勢] フィールドはこれらのアイテム内に存在するものとして取り扱われます。 これを確認するには、Alan Adams アイテムをダブルクリックして、 連絡先アイテムを開きます。 フォームの [すべてのフィールド] ページをクリックし、 [対象となるフィールド グループ] ボックスの一覧で [このアイテムのユーザー定義フィールド] をクリックします。 3 つのユーザー定義フィールドは、 すべてアイテム内に存在するものとして表示されていることに注意してください (図 13 を参照してください)。 アイテムを閉じます。

Aa155722.odc_olcustfrm113(ja-jp,office.10).gif
図 13 顧客 Alan Adams の [すべてのフィールド] ページ

表形式ビューでは、2 つのアイテムの [去勢] フィールドの列にチェック ボックスが表示されないことに注意してください。 通常、[種類] が [はい/いいえ] に設定されているフィールドの列は、 フィールドに False が設定されている場合チェック ボックスはオフになり、 True が設定されている場合チェック ボックスはオンになります。 現在の事例では、チェック ボックスが表示されていません。 これは、フィールドが実際にはアイテム内に存在しておらず、 フィールドが発行したフォームに存在していることを示します。 外観の違いによって、フィールドがアイテムの一部でないように見えます。 フィールドは技術的にはアイテムの一部ではありませんが、 これらのフィールドは実用性を考慮してアイテムで利用できるようになっています。

フォルダに別のフィールドを追加する

発行したフォームを使用せずに、去勢手術日のフィールドを追加します。 また、ビューにフィールドを追加する別の方法も説明します。

  1. Customer_Pet_Info フォームを閉じていることを確認します。
  2. Outlook の画面に [詳細] ツール バーが表示されていない場合は、 Outlook ウィンドウの [表示] メニューの [ツールバー] をポイントして、[詳細] をクリックします。
  3. ツール バーの [フィールドの選択] アイコンをクリックします。
  4. [フィールドの選択] ダイアログ ボックスで [新規フィールド] をクリックします。 [名前] ボックスに新しいフィールドの名前として「去勢手術日」と入力し、 [種類] ボックスの一覧で [日付/時刻] をクリックします。 [書式] ボックスに yy/MM/dd 形式の日付を選択します。たとえば、02/11/21 です。[OK] をクリックします。
  5. 表形式ビューの列見出しの [去勢] 列の隣に [去勢手術日] フィールドをドラッグし、 [フィールドの選択] ダイアログ ボックスを閉じます。

このフィールドはフォルダに追加されますが、 発行したフォームまたはフォルダ内に保存されている 2 つのアイテムのいずれにも存在しません (いずれかのアイテムをダブルクリックして、 [ペット情報] タブをクリックしても、 [去勢手術日] フィールドが存在しないことに注意してください)。

3 つ目の連絡先アイテムを作成する

  1. ツール バーの先頭のボタンをクリックして、 新しい連絡先アイテムを開きます。
  2. 名前「Ozzie OneOff」と入力します。 [ペット情報] ページをクリックして、[ペット名] ボックスに「Otto」と入力し、 [ペットの種類] ボックスには「ダチョウ」と入力します。 [去勢] チェック ボックスはオフのままにします。
  3. [保存して閉じる] をクリックします。

この新しいアイテムに [去勢手術日] の値を設定します。 [Ozzie OneOff] 行の [去勢日時] 列で [なし] と表示されているセルをクリックして、 日付を入力します。 日付を入力後、Outlook がこの値をフィールドに保存するために、Tab キーを押します。 表形式ビューのフィールドに値を入力しており、 実際にはフィールドはアイテム内に存在しないので、 Outlook は動的にフィールドをアイテムに追加しました (図 14 を参照してください)。

Aa155722.odc_olcustfrm114(ja-jp,office.10).gif
図 14. Ozzie OneOff アイテムに追加された去勢手術日

この操作により、このアイテムのフォーム定義は発行されたフォームの定義と同一ではなくなったので、 一時アイテムが作成されました。 アイテムのサイズが増加し、 メッセージ クラス フィールドが IPM.Contact に戻っていることに注意してください。 このアイテムは、このフォルダに発行したフォームにリンクしていません。 このアイテムを開くと、アイテムは内部フォーム定義を使用し、 発行したフォームは無視します。

Exchange Server のパブリック フォルダに連絡先をコピーして共有する場合について見てみましょう。 ここでは、フォルダのコピーを作成する代わりに、 新しいフォルダを作成して、 作成したフォルダに連絡先をドラッグします。 これらの手順では、実際のパブリック フォルダを使用する代わりに、 標準フォルダを使用します。

連絡先用のフォルダを作成する

  1. [フォルダ一覧] ビューの (通常 [Outlook Today] と表示される) 最上位のフォルダを右クリックして、 [フォルダの作成] をクリックします。 [名前] ボックスに「獣医連絡先 2」と入力し、 [フォルダに保存するアイテム] ボックスの一覧で [連絡先アイテム] をクリックします。 [OK] をクリックします。

  2. [獣医連絡先] フォルダの 1 つ目の連絡先 (Alan Adams) をクリックします。 Shift キーを押して一番下の連絡先 (Ozzie OneOff) をクリックして、 フォルダ内の 3 つの連絡先を選択します。

  3. [編集] メニューの [フォルダにコピー] をクリックします。 [獣医連絡先 2] フォルダを選択して、 [OK] をクリックします。

  4. [獣医連絡先 2] フォルダをクリックします。 このフォルダに 3 つの連絡先がコピーされていることが確認できます。

  5. [電話番号リスト] ビューに切り替えます ([表示] メニューの [現在のビュー] をポイントし、 [電話番号リスト] をクリックします)。

  6. [フィールドの選択] ダイアログ ボックスを表示し、 ドロップダウン ボックスの設定を [ユーザー定義フィールド] に変更します。

    [獣医連絡先 2] フォルダに定義されているユーザー定義フィールドはありません。

  7. [フィールドの選択] ダイアログ ボックスを閉じます。

サンプル プログラムを作成する

以下の Outlook Visual Basic for Applications (VBA) コードを使用して、 ダチョウを飼っているペットの飼い主を取得します。

  1. Alt キーを押しながら F11 キーを押して、 Visual Basic エディタにアクセスします。 Visual Basic Editor の起動時またはこのコードの実行時に問題が発生する場合は、 [ツール] メニューの [マクロ] をポイントし、[セキュリティ] をクリックしてセキュリティの設定を確認することをお勧めします。

  2. [プロジェクト] エクスプローラ ウィンドウで、 [Project1]、[Microsoft Outlook Objects]、[ThisOutlookSession] の順にダブルクリックします。

  3. コード ウィンドウに以下のコードを入力します。

    Sub GetDogOwners()
    Set MyFolder = ActiveExplorer.CurrentFolder
    Set Custs = MyFolder.Items
    Set DogCusts = Custs.Restrict("[ペットの種類] = 'ダチョウ'")
    End Sub
    
  4. コードにフォーカスがある状態で、F5 キーを押して、 コードを実行します。 次の実行時エラーが表示されます。

    "ペットの種類" は不明なプロパティです。

  5. Visual Basic Editor を終了します。 変更の保存を確認するダイアログ ボックスが表示されたら、 [いいえ] をクリックします。

  6. [獣医連絡先 2] フォルダに戻り、 [フィールドの選択] ダイアログ ボックスを使用して [ペットの種類] という名前の新しいフィールドを作成します。 このとき、[種類] ボックスと [書式] ボックスは [テキスト] に設定したままにします。 この操作により、フォルダで使用できるユーザー定義フィールドのセットに [ペットの種類] フィールドが追加されます。

  7. 上記のコードを再実行します。 今度は、コードを実行してもエラーは発生しません。 Visual Basic Editor を終了します。 変更の保存を確認するダイアログ ボックスが表示されたら、[いいえ] をクリックします。 このコードは、以後このトピックでは使用しません。

  8. [獣医連絡先 2] フォルダも使用しないので、 このフォルダを削除します。

これはとても長い「やってみよう」でしたが、 この作業を通してユーザー定義フィールドがどのように機能するかについて、 より詳しく理解していただければ幸いです。 ユーザー定義フィールドが存在する厳密な場所、 およびユーザー定義フィールドをある場所から別の場所に移動する方法と場合について理解することは、 Outlook の動作を理解して、効率的なソリューションを開発するのに重要な役割を果たします。

[フィールドの選択] ダイアログ ボックスを使用する

既に [フィールドの選択] ダイアログ ボックスを数回使用していますが、 Outlook では [フィールドの選択] ダイアログ ボックスは複数の目的の役に立ちます。 [フィールドの選択] ダイアログ ボックスを以下の目的で使用できます。

  • [フィールドの選択] ダイアログ ボックスからフィールドをドラッグして、 表形式ビューの列見出しにフィールドを追加します。
  • (アイテム内ではなく) フォルダ内にユーザー定義フィールドを作成し、 フォルダからユーザー定義フィールドを削除します。
  • フォームをデザイン モードで表示しているときに、 (ドラッグ アンド ドロップを使用して) フォームにフィールドを追加します。
  • [フィールドの選択] ダイアログ ボックスの上部にあるドロップダウン ボックスでフォームの種類を変更して、 どの標準フィールドがどの種類のフォームに属しているかを確認します。

既にご覧になったように、 表形式ビューで作業している場合に [フィールドの選択] ダイアログ ボックスにアクセスする最も簡単な方法は、 列見出しを右クリックして、[フィールドの選択] をクリックする方法です。 また、[詳細] ツール バーからも [フィールドの選択] ダイアログ ボックスを利用できます。 フォームをデザイン モードで表示すると、 [フィールドの選択] ダイアログ ボックスが既定で表示されます。

次に [フィールドの選択] ダイアログ ボックスを使用する際の注意事項を示します。

  • 表形式ビューを使用しているとき、 [フィールドの選択] ダイアログ ボックスに一覧されるフィールド セットは動的です。 既にビューに表示されているフィールドは [フィールドの選択] ダイアログ ボックスには表示されません。
  • [フィールドの選択] ダイアログ ボックスでは、 異なる種類のアイテム間でフィールドを組み合わせて使用できます。 これには、フィールドがその他の種類のアイテムで使用するようにデザインされていない場合も含みます。 たとえば、[フィールドの選択] ダイアログ ボックスを使用して、 連絡先フォームに [宛先] フィールドを追加できます。
  • [フィールドの選択] ダイアログ ボックスでは、 標準フィールドと同じ名前のユーザー定義フィールドを作成できます。 標準フィールドと同じ名前のユーザー定義フィールドを作成すると、 さまざまな問題が発生することがあるので、お勧めしません。 ユーザー定義フィールドには、標準フィールドの名前と同じ名前を使用しないことをお勧めします。

フィールドの種類

Outlook では、さまざまなソリューションで使用する幅広い種類のフィールドを用意しています。 たとえば、テキスト、はい/いいえ、日付/時刻、およびキーワードなどがあります。 次の表では、Outlook がサポートしているすべてのデータ型を一覧し、各データ型の使用法を説明します。

表 7. フィールドの種類

種類 説明
テキスト この種類のフィールドは、 通常のテキストを処理するようにデザインされています。
数値 すべての文字が数字であるか、 または数字と関連付けられている必要があります。 たとえば、"$34" と "1.2" は有効な値ですが、 "9d" や "23%" は無効な値になります。
パーセント 常に数字の後にパーセント記号を表示します。 "34" と ".34" は共に "34%" と解釈されます。
通貨 値は円記号と一緒に表示されます。 円単位で切り上げるか、または小数点以下の桁数を表示するかを選択できます。
はい/いいえ ブール型のデータを保存するのに使用します。 プログラムでは、Yes = -1、No = 0 になります。
日付/時刻 その他のアプリケーションの [日付/時刻] フィールドと同じように動作します。 内部的には、種類が [日付/時刻] のフィールドは何らかの値を保持している必要があるので、 この種類のフィールドが値を保持していない場合、Outlook は日付として 1/1/4501 を意図的に割り当てます。 VBScript を使用して日付を参照する場合、 日付を # で囲む必要があります (すなわち、#1/1/4501#)。 内部的には日付が空白の場合 (1/1/4501 が設定されていることになり)、 Outlook はフォーム上に "なし" と表示します。
期間 期限切れを示すのに使用します。時間単位で指定します。 このコントロールに組み込まれている固有情報はありません。
キーワード リスト データを保存するのに使用します。 キーワードは、Outlook がすべてのフォームの種類で使用する [分類] フィールドに最もよく関連付けられるフィールドの種類です。 画面上では、値はカンマとスペースで区切られますが、 プログラムではこれらの値は配列データ構造に格納されます。 VBScript からキーワードを使用する方法の詳細については、 「OL2002: Working with Keywords Fields from VBScript」 (英語) をご覧ください。
組み合わせ 複数の別のフィールドからの情報を組み合わせるのに使用します。 この種類の例としては、連絡先の [氏名] フィールドをあげられます。
スプレッドシートのプログラムの式と同様に、 その他のフィールドまたは関数に基づいて数字を生成するのに使用します。 たとえば、部屋の縦幅と横幅の値を格納するユーザー定義フィールドを保持しているユーザー設定フォームを作成した場合に、 縦幅フィールドと横幅フィールドを乗算して、 部屋の面積を自動的に保存する、種類が [式] のフィールドを作成できます。

フィールド データの検証

データの検証は、使用しているアプリケーションやフォームの種類に関係なく、 任意の種類のフォーム ソリューションで重要になります。 ユーザーがフォームにデータを入力後、 データの入力を受け付ける前に、 入力データが特定の条件を満たしているかどうかを確認する必要があります。 たとえば、電話番号を保存するようにデザインしたフィールドの場合、 少なくともユーザーが 10 桁の数字を入力したことを確認することをお勧めします。

Outlook では、 任意のフィールド、またはフィールドにバインドされている任意のコントロールが値を保持することを要求できます。 また、特定の範囲の数値が入力されているか、 またはデータが今年の日付であるかどうかを確認できます。 その他にも、フィールドに対して指定できる条件は無数にあります。

データが条件を満たさない場合、 フィールドに入力する方法を指示するカスタム メッセージを表示できます。

   種類が [期間] や [日付] などに設定されている一部のフィールドでは、 常に値が設定されているので、 [必ずこのフィールドに値を入力しなければならない] チェック ボックスは淡色表示になります。 種類が [日付] のフィールドに値が設定されていない場合は、 値 1/1/4501 が意図的に設定されるので、このフィールドが空になることはありません。

フィールドまたはコントロールに値を設定するように要求するには、 以下の手順に従います。

  1. フォームをデザイン モードで表示して、 フィールドまたはコントロールを右クリックして、[プロパティ] をクリックします。

  2. [検証] タブをクリックします。

  3. [かならずこのフィールドに値を入力しなければいけない] チェック ボックスをオンにします。

    Aa155722.odc_olcustfrm115(ja-jp,office.10).gif
    図15. コントロールの [プロパティ] ダイアログ ボックスの [検証] タブ

Outlook がエラー メッセージ "このフォームのフィールドには値が必要です。" を表示し、 アイテムを閉じられない状況が発生することがあります。 詳細については、 「OL2002: ErrMsg: A Field on This Form Requires a Value」 (英語) をご覧ください。

検証式およびメッセージを作成するには、以下の手順に従います。

  1. フォームをデザイン モードで表示した状態で、 検証式を作成する対象となるフィールドまたはコントロールを右クリックして、 [プロパティ] をクリックします。

  2. [検証] ページをクリックします。

  3. [フォームを閉じる前にこのフィールドを検証する] チェック ボックスをオンにします。

  4. [検証式] ボックスに、ユーザー入力を検証するのに使用する式を入力します。

  5. [検証が失敗した場合、このメッセージを表示する] ボックスに、 メッセージとして表示するテキストを入力します。 次の表に、検証式のサンプルを示します。

    表 8. 検証式

    検証事項 使用する式
    数値が 50 未満である <50
    数値が 50 を超える >50
    数値が 50 である =50
    任意の 3 文字である ???

やってみよう : フィールドの検証

この演習では、[ペットの種類] フィールドにフィールドの検証を追加して、 このフィールドに "カメ" または "亀" を設定できないようにします。

  1. Customer_Pet_Info フォームの新しいインスタンスを開き、 デザイン モードで表示します ([ツール] メニューの [フォーム] をポイントして、 [このフォームのデザイン] をクリックします)。

  2. フォームの [ペット情報] タブをクリックします。

  3. [ペットの種類] テキスト ボックスを右クリックして、[プロパティ] をクリックします。 [検証] タブをクリックします。

  4. [フォームを閉じる前にこのフィールドを検証する] チェック ボックスをオンにします。

  5. [検証式] ボックスに 「<> "カメ" and <> "亀"」と入力します。

  6. [検証が失敗した場合、このメッセージを表示する] ボックスに「”ごめんなさい!獣医は亀アレルギーです。 別の種類のペットを入力するか、 患者さんに別の獣医に診てもらうように頼んでください。”」と入力します。 メッセージを二重引用符で囲む必要があります。 そうしないと、とても奇妙な現象が発生します (どのような結果になるかお試しください !)。

  7. フォームをフォルダに再発行します。

  8. アイテムへの変更を保存せずに、アイテムを閉じます。

  9. フォームの新しいインスタンスを開きます。連絡先の名前として「Tad Tipsy」と入力し、 [ペット情報] ページに切り替えて、 [ペットの種類] ボックスに「カメ」と入力します。

  10. アイテムのツール バーの [保存して閉じる] をクリックします。 検証メッセージが表示され、[ペットの種類] フィールドには "カメ" を入力できません (図 16 を参照してください)。

    ここをクリックすると拡大表示できます
    図 16. コントロールの [プロパティ] ダイアログ ボックスの [検証] タブ (図をクリックすると拡大表示できます)

  11. この連絡先アイテムへの変更を保存せずに、アイテムを閉じます。

フィールドに初期値を設定する

フィールドに既定値を設定して、 初めてフォームにデータを入力するユーザーが値を入力する必要がないように、 既定でフィールドに値が入力されるようにしたいと考えることがあるかもしれません。 通常、フィールドに初期値を設定するには以下の 3 つの異なる方法があります。

  • コントロールの [プロパティ] ダイアログ ボックスの [初期値] オプション。 この操作を行うには、対象のコントロールを右クリックして、[プロパティ] をクリックします。 [値] タブをクリックして、[このフィールドに初期値を設定する] チェック ボックスをオンにします。 この設定を有効にするには、 コントロールがフィールドにバインドされている必要があることに注意してください。 既定では、[新規フォームを作成するときにこの式を計算する] オプションが選択されていることに注意してください。
  • Item_Open イベントで VBScript を使用して、フィールドの値を設定します。
  • フォームを発行する前に、フィールドに値を入力します。

フォーム内で VBScript を使用していない場合の推奨方法は、[初期値] オプションを使用する方法です。 一般的に、初期値を設定するだけの目的でフォームにコードを追加することは好まないでしょう。

やってみよう : 初期値を設定する

この演習では、 フォームの [ペット情報] タブに [初診日] フィールドを追加して、 新しい顧客フォームを開いたときに、[初診日] フィールドに今日の日付が自動で設定されるようにします。

  1. Customer_Pet_Info フォームの新しいインスタンスを開き、デザイン モードで表示します。

  2. フォームの [ペット情報] タブをクリックします。

  3. [フィールドの選択] ダイアログ ボックスの [新規フィールド] をクリックします。 [名前] ボックスにフィールド名として「初診日」と入力し、 [種類] を [日付/時刻] に設定し、yy/MM/dd/ 形式の日付を選択します。 たとえば、02/11/21 を選択します。[OK] をクリックします。

  4. [初診日] フィールドをフォーム ページ上にドラッグします。

  5. [初診日] テキスト ボックスを右クリックして、[プロパティ] をクリックします。

  6. [値] タブをクリックします。[このフィールドに初期値を設定する] チェック ボックスをオンにして、 その下のボックスに「=Now()」と入力します。[OK] をクリックします。

  7. フォームを再発行します。現在のアイテムへの変更は保存せずに、アイテムを閉じます。

  8. フォームの新しいインスタンスを開き、[ペット情報] タブをクリックします。

    [初診日] フィールドにはどんな値が表示されていますか ?

    答え : 今日の日付が表示されています (図 17 を参照してください)。

    Aa155722.odc_olcustfrm117(ja-jp,office.10).gif
    図 17. Customer_Pet_Info フォーム上の初診日コントロール

フィールドの自動更新

[初期値] 設定を使用して初期値を設定する以外にも、 Outlook ではフォーム上のフィールド コンテンツに基づいて自動的にフィールドを計算したり、設定したりできます。 この操作は、初期値を設定する場合と同様ですが、 フィールドはその他のフィールドが更新されるたびに自動的に更新されます。 このオプションを選択すると、 多くの既定の連絡先フィールドと同様に、 フィールドは動的になります。 たとえば、他の名前フィールドに変更が加えられるたびに自動で更新される [表題] フィールドなどです。

やってみよう : フィールドの自動更新

この演習では、 フォームの [ペット情報] タブに [ペットの飼い主] フィールドを追加して、 [氏名] フィールドに基づいて自動で [ペットの飼い主] フィールドに値を計算して設定するようにします。 このように設定すると、フォームの [ペット情報] タブを参照したときにペットの飼い主が誰であるかを簡単に確認できます。

  1. Customer_Pet_Info フォームの新しいインスタンスを開き、 デザイン モードで表示します。

  2. [ペット情報] タブをクリックします。

  3. [フィールドの選択] ダイアログ ボックスの [新規フィールド] をクリックします。 「ペットの飼い主」という名前のテキスト フィールドを作成し、 作成したフィールドをフォームの [ペット情報] タブにドラッグします。

  4. [ペットの飼い主] フィールドのテキスト ボックスを右クリックして、 [プロパティ] をクリックします。

  5. [値] タブをクリックして、[このフィールドに初期値を設定する] チェック ボックスをオンにして、 その下のテキストボックスに 「[氏名] & IIf( [配偶者]<> "" , " (" & [配偶者] & ")" , "")」と入力します。

  6. [この式を自動計算する] オプションをクリックして、[OK] をクリックします。

  7. フォームを再発行します。 現在のアイテムへの変更は保存せずに、アイテムを閉じます。

  8. フォームの新しいインスタンスを開いて、連絡先の [姓] ボックスとと [名] ボックスに名前を入力します。

  9. フォームの [詳細] タブをクリックして、配偶者の名前を入力します。

  10. [ペット情報] タブをクリックして、[ペットの飼い主] フィールドを見てみてください。

    フィールドに設定されている値は何ですか?

    答え : 姓 名 (配偶者) (図 18を参照してください)

    Aa155722.odc_olcustfrm118(ja-jp,office.10).gif
    図 18. Customer_Pet_Info フォーム上のペットの飼い主コントロール

  11. この新しい連絡先アイテムへの変更を保存せずに、アイテムを閉じます。