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

Bill Jacob and Frank C. Rice
Microsoft Corporation

January 2003

対象 :
   Microsoft® Outlook® 2002

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

目次

レッスン 3: コントロールを使用する
  フィールドとコントロール
  フォームにコントロールを追加する
  コントロールの属性
  フォームのコントロール レイアウト機能
  Outlook ユーザー設定フォームでコントロールを配布する
レッスン 4: 標準の Outlook コントロールを使って作業する
  コントロールの種類
  コントロールを使って作業する
レッスン 5: フォームのプロパティ
  その他のフォーム属性
  フォームにヘルプを追加する
レッスン 6: アクション
  アクションとは何か ?
  アクションの設定
  覚えておくべきこと

レッスン 3: コントロールを使用する

概要

このレッスンでは、 Microsoft Outlook® フォームで ActiveX® コントロールを使って作業する方法を説明します。 ここでは個別のコントロールについては詳しく説明しないで、 コントロール ツールボックスを最も効果的に使う方法を紹介し、 Outlook がフォームのデザイン機能に提供するさまざまなレイアウト機能を説明します (個別のコントロールの詳細については、次のレッスンで詳しく説明します)。

次のレッスンを最も効果的に活用するために、 レッスン 1 と 2 をまだお読みでない方は、 先にこれらのレッスンをお読みになることをお勧めします。 これらのレッスンに示した図の番号は、前のレッスンからの連続番号です。

レッスン内容

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

  • Outlook フォームにコントロールを追加するさまざまな方法。
  • フィールドとコントロールの違い、およびフィールドにコントロールをバインドする意味。
  • Outlook のフォーム レイアウト機能の一部を使用したフォームのデザインの簡略化。

参考資料

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

フィールドとコントロール

レッスン 2 で説明したように、 フィールドは Outlook が監視する情報の各部分を格納するためのコンテナです。 ユーザー設定の Outlook フォームを使って作業する場合、 通常はコントロール ツールボックスを使用してフォームにコントロールを追加します。 追加するコントロールは実際のフィールドではなく、 フィールドの内容を表示するために使用する単なるフロント エンドまたはユーザー インターフェイスです。

やってみよう : 非連結コントロールを使って作業する

この演習では、 フィールドにコントロールをバインドしないとどうなるのかを見ていきます。 レッスン 2 で作成した Customer_Pet_Info 連絡先フォームを変更して、 顧客のペット情報を監視できるようにします。

  1. Customer_Pet_Info 連絡先フォームの新しいインスタンスを開き、 デザイン モードで表示します。
  2. [ペット情報] タブに切り替え、([フォーム] メニューの) コントロール ツールボックスを表示して、 フォーム上の [ペット情報] ページにテキスト ボックス コントロールをドラッグします。
  3. そのフォームを再発行してから、 フォームの新しいインスタンスを開きます。
  4. [ペット情報] タブで、テキスト ボックスに値を入力し、 連絡先を保存します。
  5. 連絡先を再び開き、[ペット情報] タブを見ます。

どうなりましたか ?

答え : コントロールは値を保存しないので、 テキスト ボックスは空です。

コントロールはコントロール自体に値を保存できないので、 コントロールがデータの保存に使用するフィールドを指定する必要があります。 コントロールにフィールドをバインド (またはリンク) すると、 アイテムを保存または送信するときに、データが格納されます。

やってみよう : 連結コントロールを使って作業する

この演習では、 フィールドにコントロールをバインドするとどうなるのかを見ていきます。

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

  2. [ペット情報] ページをクリックし、 上記の「やってみよう」で追加したテキスト ボックスを右クリックします。 次に、[プロパティ] をクリックします。

  3. [プロパティ] ダイアログ ボックスで、[値] タブをクリックします。

  4. [フィールド] ボタンをクリックし、[すべての連絡先フィールド] をクリックします。 次に、[言語] をクリックします。

  5. [OK] をクリックして、[プロパティ] ダイアログ ボックスを閉じます。

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

  7. フォームの新しいインスタンスを開きます。

  8. [ペット情報] タブで、変更したテキスト ボックスに値を入力し、連絡先を保存します。

  9. 連絡先を再び開き、[ペット情報] タブを見ます。

    どうなりましたか ?

    答え : テキスト ボックスに値が表示されます。

  10. 連絡先を閉じ、フォルダから連絡先を削除します。

さまざまな状況で、フィールドにコントロールをバインドする必要があります。 フィールドとコントロールの違い、 およびフィールドとコントロールを結びつけるためのバインド プロセスを理解していないと、 通常以下のような問題が発生します。

  • コントロールを含むフォームを作成し、 アイテムを保存、投稿、または送信するときにデータが保持されません。 これについては、上記の手順で例示しました。
  • Microsoft Visual Basic® Scripting Edition (VBScript) コードでフィールドまたはコントロールを使って作業すると、 問題が発生します。 これは、構文が異なるためです。(これについては、VBScript に関するセクションで説明します。)

理解しておくべき重要なことは、 コントロール ツールボックスを使ってフォームにコントロールを追加するときは常に、 Outlook が対応するフィールドの作成または割り当てのために何も行わないことです。 コントロールの [プロパティ] ページに移動し、 フィールドを個別の手順で割り当てる必要があります。

フォームにコントロールを追加する

多くの場合、Outlook はフィールドにコントロールを自動的にバインドするので、 コントロール ツールボックスではなく [フィールドの選択] ダイアログ ボックスを使用して、 フォームにフィールドを追加することをお勧めします。 ただし、Outlook は [はい/いいえ] という種類のフィールドを除いて、通常、 テキスト ボックスとラベルを作成します。 これは、特定のフィールドに使用したい種類のコントロールではない場合があります。

たとえば、特定のフィールドが一定数の選択肢または値を所持している場合、 リスト ボックス コントロールまたはコンボ ボックス コントロールを使用してフィールドのデータを表すべきです。 この方法を使えば、ユーザーは多くの選択肢の中から 1 つの選択肢しか選択できません。 この場合、コントロール ツールボックスを使用して、 フォームにリスト ボックスまたはコンボ ボックス コントロールを追加し、 コントロール自体にフィールドをバインドする必要があります。

[フィールドの選択] を使用してコントロールを追加する

デザイン モードでフォームを開いているときに、 [フィールドの選択] ダイアログ ボックスを使用してフォームにフィールドをドラッグできます。 これを行うと、Outlook は自動的にフィールドに対して既定のコントロールを作成し、 作成したコントロールをフィールドにバインドします。 使いやすさの点でこのプロセスは優れていますが、 フィールドとコントロールの違いがあいまいになりがちです。

フィールドにはさまざまな種類があるので、 フィールドに作成されるコントロールの種類もさまざまになります。 次の表は、[フィールドの選択] ダイアログ ボックスを使用してフォームにフィールドを追加するときに、 Outlook が自動的に作成するコントロールの種類を一覧しています。

表 9. コントロールの種類

フィールドの種類 作成されるコントロール
テキスト ラベルとテキスト ボックス
数値 ラベルとテキスト ボックス
パーセント ラベルとテキスト ボックス
通貨 ラベルとテキスト ボックス
はい/いいえ チェック ボックス
日付/時刻 ラベルとテキスト ボックス
期間 ラベルとテキスト ボックス
キーワード ラベルとテキスト ボックス
組み合わせ ラベルと読み取り専用のテキスト ボックス
ラベルと読み取り専用のテキスト ボックス

コントロール ツールボックスを使用してコントロールを追加する

以下の方法のいずれかを使用すると、 コントロール ツールボックスから任意のフォームにコントロールを追加できます。

  • コントロール ツールボックス内のコントロールをクリックし、フォームをクリックします。 コントロールが既定のサイズで表示されます。 その後、コントロールの境界をドラッグすることにより、 そのサイズを変更できます。
  • コントロール ツールボックスからフォームにコントロールをドラッグします。 コントロールが既定のサイズで表示されます。
  • コントロール ツールボックス内のコントロールをダブルクリックし、 フォーム内をクリックするたびに、 ダブルクリックしたコントロールが 1 つずつ追加されます。 たとえば、4 つのコマンド ボタンを作成するには、 コントロール ツールボックス内のコマンド ボタン コントロールをダブルクリックし、 フォーム上を 4 回クリックします。

多くの場合、フィールドにはテキスト ボックス、チェック ボックス、リスト ボックス、コンボ ボックス、 およびオプション ボタンの各コントロールをバインドします。 ユーザーが対話しない、静的な情報を保持するラベル コントロールやイメージ コントロールなど、 その他のコントロールは、通常、フィールドにバインドしません。

**注  ** この資料の後半で説明しますが、 プログラムでコントロールの ItemProperty プロパティを使用して、 コントロールにフィールドをバインドすることもできます。

よく見落とされる設定の 1 つに、 コントロールの任意のプロパティにフィールドをバインドする Outlook の機能があります。 多くのコントロールは、Value プロパティを使用してコントロール内に存在するデータを表します。 Value プロパティは、通常、コントロールの既定のプロパティです。 Outlook はコントロールの既定のプロパティにフィールドをバインドします。 ただし、この動作をオーバーライドして、 コントロールの任意のプロパティにフィールドをバインドできます。 このことは、特定の状況で役立つ場合があります。 この操作を行うには以下の手順に従います。

  1. フォーム デザイン モードで、コントロールを右クリックし、[プロパティ] をクリックします。
  2. [プロパティ] ダイアログ ボックスで、[値] タブをクリックします。
  3. 任意のコントロール プロパティを使用するように、プロパティを変更します。

コントロールの属性

コントロールの状態

デザイン モードでフォーム上にコントロールを配置すると、 コントロールは以下の 3 つの状態のいずれかになります。

表 10. コントロールの状態

状態 説明
非選択 別のコントロールまたはフォーム自体が選択されています。
選択 コントロール自体を使って作業中です。 多くのコントロールは、フォーム上にコントロールを配置したときに自動的に選択されます。 デザイン モードでコントロールを選択すると、コントロールの境界付近にサイズ変更ハンドルが表示されます。 コントロールを選択解除した場合、そのコントロールをクリックするとそのコントロールを再び選択できます。
アクティブ コントロールのコンテンツを使って作業中です。 選択されているコントロールをクリックすると、そのコントロールがアクティブな状態になります。 この状態で、コントロールの [キャプション] プロパティや [値] プロパティを直接編集できます。 ただし、コントロールによって異なります。 たとえば、選択したテキスト ボックス コントロール上でクリックすると、 テキスト ボックスにテキストを直接入力できます。

選択状態とアクティブ状態の両方で、Del キー、Ctrl + X キー、および Ctrl + C キーを使って、 削除コマンド、切り取りコマンド、コピー コマンドをそれぞれ実行できます。 選択状態では、これらのコマンドがショートカット メニューで利用でき、 コントロール自体に影響します。 アクティブ状態では、コントロールの内部でテキストを選択しているときに、これらのコマンドが影響します。 テキストを選択していない場合、これらのコマンドは影響しません。 アクティブ状態のコントロールでは、これらのコマンドをショートカット メニューで利用することはできません。

ここではコントロールのコピーと貼り付けに関するトピックを説明していますが、 Microsoft Outlook には比較的大きなサイズのコントロールのコピーと貼り付けに関する既知の問題点があることに注意してください。 この問題点は、コントロールがマルチ ページ コントロールやフレーム コントロールなど、 他の "コンテナ" コントロール内に存在するときに特に発生するようです。 多くの場合、同じ順序または同じ外観でコピー内容を貼り付けているように見えますが、 バインドが消失したり、 順序が逆になったりすることがよくあることを理解しておくことが重要になります。 この問題点は、すべての バージョンの Microsoft Outlook で発生します。 通常、開発者がフォームの作成ページから開封ページにすべてのコントロールをコピーして貼り付けようとするときに発生します。

詳細については、 資料「OL2002: Controls Do Not Copy or Paste Correctly in Design Mode」 (英語) を参照してください。

コントロールのプロパティ

コントロールのプロパティには、 Outlook のプロパティと詳細プロパティという 2 つの種類があります。 Outlook のプロパティは、コントロールのデザインに必要な基本的なプロパティです。 詳細プロパティは詳細機能を提供します。

Outlook のプロパティ

コントロールに Outlook のプロパティを設定するには、 コントロールを右クリックし、[プロパティ] をクリックします。

[表示] タブ

(フィールドとは対照的に) コントロール自体に影響するプロパティの大部分は、 [プロパティ] ダイアログ ボックスの [表示] タブで設定します (図 19 を参照してください)。

Aa155728.odc_olcustfrm219(ja-jp,office.10).gif
図 19. [プロパティ] ダイアログ ボックスの [表示] タブ

Outlook のプロパティは詳細プロパティとは異なり、[プロパティ] ダイアログ ボックスで設定します。 また、Outlook のプロパティは個別に設定する必要があります。 フォームのページで複数のコントロールを選択し、 [プロパティ] ダイアログ ボックスを使用して選択したコントロールすべての値を変更することはできません。

通常、使用するコントロールの設定の多くは、[プロパティ] ダイアログ ボックスで公開されています。 たとえば、[表示] タブでは、フォーム上のコントロールの場所、前景色と背景色、コントロールを表示するか、 有効にするか、読み取り専用にするか、サイズ変更可能にするかなど、 コントロール名とコントロールの表示属性のほとんどを設定できます。

[表示] タブの設定の多くは非常に直感的です。 ただし、最も混乱しやすい設定の 1 つに、[フォームに合わせてサイズ調整を行う] という設定があります。 この設定は、コントロールの横幅のサイズのみに影響します。 フォームの横幅を狭めたり、広げたりすると、フォームに合わせてコントロールが縮小または拡大されます。 ただし、フォームの縦幅を短くしたり長くしたりしても、コントロールのサイズは変更されません。 コントロールの縦幅のサイズを強制的に変更することはできますが、 これはプログラムを使って行う必要があります。

[値] タブ

[値] タブのすべての項目は、バインドするフィールドに直接関連しており、 コントロールには直接関連しません (図 20 を参照してください)。 コントロールをバインドするフィールドを選択するまで、 このタブのコンテンツは無効になっています。

Aa155728.odc_olcustfrm220(ja-jp,office.10).gif
図 20. [プロパティ] ダイアログ ボックスの [値] タブ

[検証] タブ

[検証] タブのすべての項目は、バインドするフィールドに直接関連しており、 コントロールには直接関連しません (図 21 を参照してください)。 コントロールをバインドするフィールドを選択するまで、 このタブのコンテンツは無効になっています。

Aa155728.odc_olcustfrm221(ja-jp,office.10).gif
図 21. [プロパティ] ダイアログ ボックスの [検証] タブ

詳細プロパティ

コントロールの詳細プロパティを設定するには、 コントロールを右クリックし、[プロパティの詳細] をクリックします。 一度に複数のコントロールを選択して、 [プロパティの詳細] ダイアログ ボックスで、 選択したコントロールすべての値を変更できます。

Microsoft Visual Basic または Visual Basic for Applications (VBA) を以前使用したことがある方には、 [プロパティの詳細] ダイアログ ボックスを使用するための、非常に詳しい知識が備わっているでしょう。 Outlook の [プロパティの詳細] ダイアログ ボックスは、 Visual Basic や VBA の [プロパティ] ウィンドウと同一です。

利用できるプロパティは、コントロールによって異なります。 さまざまなコントロールの各プロパティを調査することはこのレッスンの範囲外です。 しかし、各機能の詳しい知識を持つことと、 [プロパティ] ダイアログ ボックスと [プロパティの詳細] ダイアログ ボックスの違いを理解することをお勧めします。

Outlook Visual Basic リファレンス ヘルプには、 コントロールのプロパティの多くを使用する方法の手順情報を記載しているトピックが数多くあります。 たとえば、以下のことを行う方法を説明するトピックがあります。

  • コントロールの name プロパティを変更する
  • コントロールの表示と非表示を切り替える
  • ページのコントロールを有効または無効にする
  • フィールドの結果を自動計算する
  • コントロールを読み取り専用にする
  • コントロールに複数行の文字列を入力できるようにする
  • コントロール内の文字列の位置を揃える
  • コントロールを 1 単位ずつ移動する
  • コントロールの位置を揃える
  • コントロールのサイズを変更する
  • コントロールの領域を指定する
  • z 順を使用してコントロールを多層化する

コントロールの外観

以下に、Microsoft Outlook がフォーム上のコントロールでサポートしている外観を定義する機能の一部を概説します。

  • 前景色を決定するには、ForeColor プロパティを設定できます。
  • BackColor プロパティと BackStyle プロパティは、コントロールの背景に適用されます。
  • BorderColor プロパティ、BorderStyle プロパティ、 および SpecialEffect プロパティは、コントロールの境界線に適用されます。

Outlook は、透過性をサポートします。 つまり、あるコントロールの背景とあるコントロールで使用しているビットマップの 2 つの領域に、 コントロールの背景ではなく、オブジェクトの背後のあらゆるものを表示します。

上記のプロパティの詳細については、 Outlook Visual Basic リファレンス ヘルプ トピック「コントロールの外観を変更する」を参照してください。

コントロール ツールボックスを使用する

コントロール ツールボックスは、フォームのフレームまたはページに追加できるコントロールを識別します。 Visual Basic Editor で使用するコントロール ツールボックスと、 Microsoft Office アプリケーションすべてに共通のコントロール ツールボックスは同じものです。

Aa155728.odc_olcustfrm222(ja-jp,office.10).gif
図 22. コントロール ツールボックス

コントロール ツールボックスは、以下のようなさまざまな方法でカスタマイズできます。

  • コントロール ツールボックスにページを追加します。 コントロール ツールボックスのタブを右クリックして、[新規ページ] をクリックするだけです。
  • コントロール ツールボックス内のあるページから別のページにコントロールを移動します。 これを行うには、任意のページ上のコントロールを別のページのラベルにドラッグし、 そのページが最前面に表示されるまでラベル上にマウス ポインタを停止します。 ページが最前面に表示されたら、そのページ上にコントロールをドラッグします。
  • コントロール ツールボックスのページ名を変更します。
  • コントロール ツールボックスに ActiveX コントロールなどの他のコントロールを追加します。
  • コントロール ツールボックスからコントロールを削除します。 コントロール ツールボックスで、 削除するコントロールを右クリックし、[削除 <コントロール名>] をクリックします。
  • 変更したコントロールをフォームからコントロール ツールボックスにコピーします。 たとえば、[OK] ボタンと [キャンセル] ボタンはコマンド ボタンとして頻繁に使用されます。 カスタマイズした [OK] ボタンと [キャンセル] ボタンの組み合わせをコントロール ツールボックスにコピーすると、 別のフォームにそれらのボタンをすばやく追加できます。

   コントロール ツールボックスに行ったカスタマイズをリセットするか、 説明できない動作を修正するには、Outlook.box ファイルの名前を変更します。 このファイルには、特定の Office アプリケーションのコントロール ツールボックスに関連するユーザー定義の設定または変更が保存されています。 Outlook の起動時に Outlook.box が見つからない場合、 アプリケーションは新しい Outlook.box を作成します。 Office の既定のインストールでは、 Outlook.box は C:\Documents and Settings\<ユーザー名>\Application Data\Microsoft\Forms に存在します。

フォームのコントロール レイアウト機能

以下は、Outlook がサポートするフォーム レイアウト機能の一覧です。

  • 一度に複数のコントロールを選択して、 複数のコントロールに同じプロパティを設定できます。
  • フォーム上のコントロールを中央揃えにします。
  • フォーム上のコントロールを右揃えにします。
  • コントロールの配置を容易にするために、グリッドのサイズを変更できます。
  • グリッドの表示と非表示を切り替えます。
  • ユーザーがフォームのサイズを変更したときに、コントロールのサイズを自動的に変更します。
  • ページのコントロールのタブ オーダーを設定します。

詳細については、Outlook Visual Basic リファレンス ヘルプの「フォームを使って作業する」の「フィールドとコントロールを使う」の「コントロールを配置、サイズ変更する」を参照してください。

コントロール グループを作成する

グループとは、フォームのデザイン時の作業で 1 つの単位として使用するフォーム上の複数のコントロールです。 実際にフォームを使用することとは関係ありません。 任意のコントロールをグループとしてフォームに含めることができます。 コントロールがグループに属している場合に、 グループ全体を使って作業することも、1 つのコントロールを選択することもできます。

グループおよびグループ内のコントロールを使って作業するためのさまざまな方法があります。 グループを選択後、以下のことを実行できます。

  • グループ内のすべてのコントロールのサイズを同時に変更します。
  • グループ内のコントロールを分離し、各コントロールを他のコントロールから独立させます。
  • グループのショートカット メニューを表示して、 グループに影響するコマンドにすばやくアクセスします。
  • グループ内のコントロールを分離しないで、グループ内の 1 つのコントロールを選択します。 グループ内の他のコントロールに影響せずに、 選択したコントロールのプロパティの設定を変更できます。

Outlook フォームでグループを使って作業することに関する詳細については、 Outlook Visual Basic リファレンス ヘルプの「Microsoft Forms リファレンス」の「グループで作業する」を参照してください。

ピクチャを使って作業する

イメージ コントロールを使用すると、Outlook でフォーム上に画像を表示できます。 フォームにイメージ コントロールを追加したら、[プロパティの詳細] ダイアログ ボックスに移動し、 ファイル システムに保存された画像を Picture プロパティに設定します。

また、フォームのページ背景としてピクチャを設定することもできます。 これを行うには、フォームのページの空白の領域を右クリックし、[プロパティの詳細] をクリックします。 次に、ファイル システムから画像を選択します。

フォームでピクチャを使って作業することに関する詳細については、 Outlook Visual Basic リファレンス ヘルプの「ピクチャを使う」を参照してください。

カスタム ActiveX コントロール

このセクションでは、Outlook に含まれているコントロールで、 Outlook フォームで使用するために特別にデザインされたさまざまな標準のコントロールを見ていきましょう。 ただし、他の開発環境の他の多くのフォームと同様、 開発者は Outlook フォームにも任意の ActiveX コントロールを追加できます。

Outlook フォームで独自の ActiveX コントロールやサードパーティの ActiveX コントロールを使って作業することに関する全体的な説明は、 このレッスンの範囲外です。 これらのコンポーネントは、通常 Visual Basic を使って作成されますが、 COM (コンポーネント オブジェクト モデル) をサポートする任意のプログラミング言語で、 このようなコンポーネントを作成することもできます。

Outlook は、 VBA のユーザー フォームと同じフォーム テクノロジを使用します。 ただし、Outlook フォーム上でカスタム コントロールを使用する際の固有の制限事項があるので、 それに注意することが重要になります。 たとえば、Outlook はコントロールで Click イベントのみをサポートします。 そのため、コントロールがサポートする可能性があるその他のイベントを直接使用できません。 例として、マルチ ページ コントロールを使用する場合を考えます。 このコントロールでは、 多くの場合、 ユーザーがコントロールの特定のページをクリックしたときに発生するイベントを追跡できることがに重要なります。 VBA のユーザー フォームではこれを行えますが、 Outlook フォームでこのイベントを使用することはできません。 つまり、コントロールの機能はカスタム コントロールの最初の使用目的を大幅に狭め、 無効にしてしまう場合があります。

いくつか独創的な手法を使って、 以下のようないくつかの方法でこのような制限事項を回避できる場合があります。

  • 代わりに Visual Basic ActiveX コンポーネントを使用します。 Visual Basic コンポーネントは、Visual Basic フォームを表示し、Visual Basic フォームの機能すべてを提供します。 サーバーは Outlook をオートメーションで起動し、 Outlook のフォームまたはアイテムと ActiveX コンポーネント間でデータを相互に転送できます。
  • Outlook フォームにカスタム ActiveX コントロールを配置し、 Outlook フィールドをコントロールの既定のプロパティ以外にバインドします。 フィールド内の値はユーザーが別のコントロールをクリックするか、Tab キーを押すまで、更新されないので、 このアプローチを使用すると、通常は問題が発生します。

上記のトピックや VBScript、Visual Basic、および VBA で Outlook フォームをカスタマイズすることに関する他のトピックの詳細については、 Randy Byrne が執筆した書籍からの引用である「Building Applications with Microsoft Outlook Version 2002」 (英語) を参照してください。

Outlook ユーザー設定フォームでコントロールを配布する

関連する複数の問題点やバグが存在するので、 コントロールのライセンスの許可は複雑な問題になる傾向があります。

配布方法

Outlook 2002 では、以前の Outlook よりも、ActiveX コントロールのサポートを強化しています。 ただし、ユーザー設定フォームで使用する ActiveX コントロールの配布は、 Outlook 開発者が遭遇する最も複雑な問題であることに変わりありません。 Visual Basic とは異なり、 Outlook にはアプリケーションのコンポーネントをインストールおよび登録するための setup.exe プログラムがありません。 ユーザー設定フォームの配布に関する詳細については、 資料「Distribute and Manage Forms in Outlook」 (英語) を参照してください。

レッスン 4: 標準の Outlook コントロールを使って作業する

概要

Outlook は、他の Office アプリケーションが使用するのと同一の基本コントロールを使用します。 しかし、多くのフォーム デザイナは、 コントロールが Outlook フォームに個別に実装されることがよくあることを知ったときに驚きます。 このレッスンでは、標準の各コントロールを見ていき、 ユーザー設定の Outlook フォームでそれらのコントロールをどのように使用するのか (どのように使用すべきなのか) を説明しましょう。

レッスン内容

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

  • ユーザー インターフェイスの視点から各コントロールを使用する方法。
  • Outlook フォームで予想通りに機能するための各コントロールの設定。
  • コントロールがフィールドにバインドされるかどうかに関連して、各コントロールがどのように動作するか。
  • Outlook フォームでのコントロールの使用時に、 どのコントロールに制限事項があるのか。

参考資料

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

コントロールの種類

ラベル コントロール

ラベル コントロール (図 23) は他のコントロールの "ラベルとして使用" するか、 フォームにテキストを表示する目的しかないので、簡単に使用できます。 前のレッスンで、フォームにフィールドを追加したときに、 既にラベル コントロールを使用しました。 Outlook は、[フィールドの選択] ダイアログ ボックスからフォームにフィールドを追加するときに、 自動的にラベルを作成します。

Aa155728.odc_olcustfrm223(ja-jp,office.10).gif
図 23. [初診日] テキスト ボックスのラベル コントロール

ラベルは、通常、以下の方法で作成されます。

  • [フィールドの選択] ダイアログ ボックスからフォームにフィールドをドラッグしたときに、自動的に作成されます。ラベル コントロールとテキスト ボックス コントロールは通常、フィールド名を含んだラベルと共に並べて配置されます。
  • コントロール ツールボックスを使用します。 ラベル コントロールの既定のテキストは Label1 です。 このテキストはコントロールをダブルクリックし、 コントロール内のテキストを編集することによって変更できます。 または、コントロールを右クリックし、[プロパティ] をクリックすると変更できます。

ユーザーはフォームの使用中にラベル コントロールのテキストを変更できないので、 通常はフィールドにバインドされません。 ただし、ユーザーがフィールドのコンテンツを参照し、ラベルのテキストを変更できるようにする場合は、 フィールドにラベルをバインドできます。 これは、テキスト ボックス コントロールを読み取り専用にするのと同じ目的を果たします。

**注  ** Outlook のユーザー インターフェイスを使用してラベルのテキストを変更することはできますが、 プログラムで値を変更しても値は保持されません。 デザイン モードを終了するか、フォームを保存するか、またはフォームを送信した後、 値は変更する前の値に戻ります。 これは、Outlook フォームがデザインされた方法が原因で発生します。 通常、コントロールではなく、元になる連結フィールドの値を変更する必要があります。 ただし、ラベルはバインドされないのが一般的なので、 この場合、元になる連結フィールドの値を変更することは当てはまりません。

テキスト ボックス コントロール

テキスト ボックス コントロールは最も頻繁に使用されるコントロールで、 フォームへのデータ入力を可能にします。 テキスト ボックス コントロールは、 通常、標準フィールドまたはユーザー定義フィールドにバインドし、 テキスト ボックス コントロールに入力した情報がアイテムと共に保存されるようにします。 ラベルはテキスト ボックス コントロールと組み合わせて使用されるのが一般的です。 これは、どの種類の情報をテキスト ボックスに入力する必要があるかを識別するのに役立ちます。 適切な例として、標準の Outlook 連絡先フォームの [全般] ページにある [役職] テキスト ボックスがあります。 図 23 はラベルとテキスト ボックスの組み合わせを例示しています。

テキスト ボックスは、通常、以下の方法で作成されます。

  • [フィールドの選択] ダイアログ ボックスからフォームにフィールドをドラッグしたときに、自動的に作成されます。この事例では、テキスト ボックス コントロールはフィールドに自動的にバインドされ、開発者がテキスト ボックス コントロールを一意に識別するために使用できるようにラベルも作成されます。
  • コントロール ツールボックスを使用します。 コントロール ツールボックスを使用すると、 フォームにテキスト ボックス コントロールを配置できますが、 コントロールはフィールドにバインドされません。 通常は、コントロールを右クリックして、[プロパティ] をクリックし、[値] タブでフィールドを指定する必要があります。 テキスト ボックス コントロールがフィールドにバインドされていない場合、 コントロールに入力したすべてのデータはフォームの保存時または送信時に消失します。

テキスト ボックスの [マルチライン] プロパティをオンにする ([プロパティの詳細] ダイアログ ボックスの Multiline プロパティ を True に設定する) と、 テキスト ボックス コントロールに複数行を表示できます。 テキスト ボックス コントロールは大量のデータを表示できますが、 通常はフォームごとに 32 KB を超えるデータを入力できないように、 フィールド サイズが制限されています。

詳細については、 資料「OL2002: Text That You Insert into Field Is Missing」 (英語) を参照してください。

コマンド ボタン コントロール

コマンド ボタン コントロールは、 ボタンのクリック時に特定のアクションを実行します。 ユーザー設定の Outlook フォームでは、 これは VBScript サブルーチンが実行されることを意味します。 ただし、[フィールドの選択] ダイアログ ボックスから利用できる組み込みの Outlook ダイアログ ボックスもあります。 ユーザーがボタンをクリックして組み込みの Outlook ダイアログ ボックスを表示できるように、 これらのダイアログ ボックスをコマンド ボタン コントロールにバインドできます。

Aa155728.odc_olcustfrm224(ja-jp,office.10).gif
図 24. Outlook 連絡先フォームの [フリガナ] コマンド ボタン

コマンド ボタン コントロールは、通常、以下の方法で作成されます。

  • コントロール ツールボックスを使用します。 コントロールは通常 VBScript で参照されるので、 コントロール名を変更し、 コントロール上に適切なテキストを配置する必要があります。 たとえば、コマンド ボタン コントロールを使って、ユーザーがフォームを印刷できるようにする場合、 コントロールのキャプションを [印刷] に、 コントロールの名前を cmdPrint のようにするのが一般的です。 キャプションは、コマンド コントロールがフォーム上に存在するときに、 コマンド ボタン コントロール自体に表示されるテキストです。

    ユーザーがボタンをクリックしたときに Outlook で VBScript コードを実行するには、 コントロールの Click イベントを作成します。 この場合、イベント プロシージャは以下のようになります。

    Sub cmdPrint_Click()
    ' 実行するコードをここに記述します。
    End Sub
    
  • [フィールドの選択] ダイアログ ボックスから受信者フィールド (宛先、差出人、CC、BCC) をドラッグします。 Outlook がコマンド ボタン コントロールと受信者コントロールを作成し、 その両方を受信者フィールドにバインドします。 コマンド ボタン コントロールをクリックすると、 Outlook が [名前の選択] ウィンドウを表示し、 アドレス帳から名前を選択できます。 受信者コントロールも同じフィールドにバインドされるので、 アドレス帳から名前を選択すると、 受信者コントロールの名前が変更されます。

  • [フィールドの選択] ダイアログ ボックスから Outlook ダイアログ フィールドをドラッグします。 これらのフィールドには省略記号 (...) が付けられていて、 この記号はクリックするとウィンドウが表示されることを示しています。 たとえば、連絡先フォームで、フォーム上に [分類項目...] または [名前の確認...] コマンドをドラッグして、 コマンド ボタン コントロールを作成できます。 コマンド ボタン コントロールをクリックすると、 [分類項目] ダイアログ ボックスまたは [名前の確認] ダイアログ ボックスが表示されます。 この作業を行うために、VBScript を作成する必要はありません。 コントロールの Outlook のプロパティにアクセスすると、[種類] プロパティが [ボタン] として一覧されることがわかります。

チェック ボックス コントロール

チェック ボックス コントロールは、通常、ブール値 (はい/いいえ、真/偽、オン/オフ) データを表すために使用し、 [種類] が [はい/いいえ] のフィールドにバインドされます。

Aa155728.odc_olcustfrm225(ja-jp,office.10).gif
図 25. Customer_Pet_Info フォームのチェック ボックス

チェック ボックス コントロールは、 相互に排他的になるようにはデザインされていません。 つまり、各チェック ボックス コントロールをそれぞれオンまたはオフにでき、 1 つのチェック ボックス コントロールは他のチェック ボックス コントロールの設定に影響しません。 一般的に、オプション ボタン コントロールは相互に排他的な機能に使用します。 この違いは、標準の Microsoft Windows® ユーザー インターフェイス ガイドラインの一部です。 何らかの理由でチェック ボックス コントロールの値を相互に排他的にする必要がある場合、 VBScript コードを記述して、特定のチェック ボックス コントロールが選択されたときに、 他のすべてのフィールドを手動で False に設定できます。

チェック ボックス コントロールは、通常、以下の方法で作成されます。

  • [フィールドの選択] ダイアログ ボックスから、 標準または [種類] が [はい/いいえ] に設定されているユーザー定義のフィールドをドラッグします。 連絡先フォーム上の [履歴] フィールドが 1 つの例です。
  • コントロール ツールボックスを使用します。 通常は [種類] が [はい/いいえ] に設定されているフィールドにコントロールをバインドする必要があります。 ただし、[種類] が [数値] に設定されているフィールドにチェック ボックス コントロールをバインドすることもできます。 この場合、"はい" は -1 と等価で、"いいえ" は 0 (ゼロ) と等価です。 テキスト フィールドにコントロールをバインドすると、 チェック ボックス コントロールが機能しないことに注意してください。

オプション ボタン コントロール

オプション ボタン コントロールは、 フォームでいくつかの選択肢の 1 つをユーザーが選択する方法を指定します。 [ファイル] メニューをクリックして [古いアイテムの整理] をクリックすると、 オプション ボタンの例を表示できます。 2 つのオプション ボタンが、[古いアイテムの整理] ダイアログ ボックスの最上部にあります。

Aa155728.odc_olcustfrm226(ja-jp,office.10).gif
図 26. 2 つのオプション ボタンを含む [古いアイテムの整理] フォーム

Outlook フォームでオプション ボタンが完全に機能的にするために必要となる複数の手順があります。 覚えておくべき主な要点は以下のとおりです。

  • ある組み合わせのすべてのオプション ボタンが同じフィールドにバインドされている必要があります。 Outlook は最初のオプション ボタンをバインドするときに自動的にこれを行います。 フィールドにオプション ボタンをバインドしない場合、 フォームの送信時または保存時に、そのオプション ボタンは空になります。
  • 以下に例示するように、 フィールドは通常テキスト フィールドである必要があります。 ただし、数値フィールドなど、複数値を保存できる他の種類のフィールドも使用できます。 数値フィールドには 0、1、または 2 など、 必ず特定の種類のデータに対応する適切な値に、各コントロールの値を設定してください。 最も重要なことは、[種類] が [はい/いいえ] または [ブール値] のフィールドを使用しないことです。 それらの値はチェック ボックスに使用すべきです。
  • 各コントロールの値は、 テキスト フィールドに存在する値に設定する必要があります。 コントロールの [キャプション] プロパティは、通常、その値と一致する必要があります。
  • フォームのページで複数のセットのオプション ボタンを使用している場合、 フレーム コントロールにオプション ボタンを配置するか、 "コンテナ" コントロールとして機能するその他のコントロールに配置する必要があります。

詳細については、 資料「OL2002: Outlook フォームでオプション ボタンを使用する方法」を参照してください。

やってみよう : フォーム上にオプション ボタンを作成する

この演習では、 これまで作業してきた Customer_Pet_Info フォームにいくつかのオプション ボタンを追加します。 オプション ボタンを追加して、ペットがオスかメスかを把握しておくためです。 これを行うには、ユーザーがオスかメスかをクリックできるように、 ラベルの下に 2 つのオプション ボタンを含むラベルを追加します。 この事例では、一度に 1 つの選択肢だけを選択できるようにします。 したがって、(チェック ボックスではなく) オプション ボタンが適切な選択であることに注意してください。

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

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

  3. [フォーム] メニューの [コントロール ツールボックス] をクリックします。

  4. コントロール ツールボックスからフォームのページに 2 つのオプション ボタン コントロールをドラッグします。

  5. 最初のオプション ボタン コントロールを右クリックし、[プロパティ] をクリックします。

  6. [プロパティ] ウィンドウの [値] タブで、[新規作成] をクリックします。 フィールドの名前として「種別」と入力し、[OK] をクリックします。 そのフィールドはテキスト フィールドであることに注意してください。 [値] タブの [使用するプロパティ] は引き続き [Value] に設定しておく必要があります。 ([使用するプロパティ] ドロップ ダウン リストにある) [設定可能な値] ボックスの設定を [オス] に変更します。

  7. [表示] タブをクリックし、[キャプション] を [オス] に変更します。 このテキストが、実際にフォームに表示されます。[OK] をクリックします。

  8. 2 つ目のオプション ボタンを右クリックし、表 示されるショートカット メニューの [プロパティ] をクリックします。

  9. [プロパティ] ウィンドウの [値] タブで、 コントロールが最初のオプション ボタンを作成したのと同じフィールドに自動的にバインドされていることに注目します。 [値] ボックスの設定を [メス] に変更します。

  10. [表示] タブをクリックし、[キャプション] を [メス] に変更します。 次に、[OK] をクリックします。

  11. コントロール ツールボックスを使用して、 2 つのオプション ボタン コントロールの上にラベル コントロールを追加します。 ラベルを右クリックし、[プロパティ] をクリックします。 [キャプション] を [種別:] に変更し、[名前] プロパティを [lblSex] に変更します。 [OK] をクリックします。

  12. フォームを再発行します。 フォームへの変更を保存せずに、閉じます。

  13. フォームの新しいインスタンスを開きます。

  14. 連絡先の名前を Fickle Fred に設定します。 フォームの [ペット情報] ページをクリックし、 [ペットの種類] を [カエル] に設定し、 [種別] を [メス] に設定します。

  15. [保存して閉じる] をクリックします。

  16. Fickle Fred 連絡先アイテムを再度開き、 フォームの [ペット情報] タブをクリックします。 [メス] が現在選択されていることに注意してください。 これは、ユーザーが選択した項目がアイテムの保存時に保持されたことを示します (図 27 を参照してください)。

    Aa155728.odc_olcustfrm227(ja-jp,office.10).gif
    図 27. Customer_Pet_Info フォームの [ペット情報] タブ

  17. フォームの [すべてのフィールド] タブをクリックし、 ドロップ ダウン リストを [ユーザー定義フィールド] を表示するように設定します。

    種別フィールドの値はどうなりましたか ?

    答え : メスです (図 28 を参照してください)。

    Aa155728.odc_olcustfrm228(ja-jp,office.10).gif
    図 28. Customer_Pet_Info フォームの [すべてのフィールド] タブ

リスト ボックス コントロールとコンボ ボックス コントロール

リスト ボックス コントロールとコンボ ボックス コントロールは、 同じ種類の機能を提供しますが、やや違いがあります。 リスト ボックス コントロールは、 フォームに直接表示できる情報の一覧を表示します。 それに対して、コンボ ボックス コントロールは、 ドロップ ダウン ボタンがクリックされたときのみ一覧を表示します。

Aa155728.odc_olcustfrm229(ja-jp,office.10).gif
図 29. Sales Range コンボ ボックス コントロールと Best Region リスト ボックス コントロール

リスト ボックス コントロールは、1 列でデータを表示する以外に、 複数列にデータを表示するように構成できます。 ただし、複数列を表示するには、コントロールにデータを設定するためのコードが必要になります。 複数列を表示するリスト ボックス コントロールまたはコンボ ボックス コントロールの列幅を設定するために、 ColumnWidths プロパティですべての列の幅をポイント単位で指定できます。 特定の列の幅を 0 (ゼロ) に指定すると、 その列の情報は非表示になります。 リスト ボックス コントロールまたはコンボ ボックス コントロールの、 1 列を除くすべての列をユーザーに非表示にする場合、 TextColumn プロパティを使って表示する情報列を指定できます。 同様に、BoundColumn プロパティで列数を指定することにより、 ユーザーが選択するときにコントロールで使用する値の列を制御できます。

リスト ボックス コントロールとコンボ ボックス コントロールは通常テキスト フィールドにバインドされますが、 キーワード フィールドを使用してリスト ボックス コントロールにデータを格納することもできます。 ただし、コンボ ボックス コントロールにはデータを格納できません。 キーワード フィールドは複数の値を格納するようにデザインされてます。 そのため、リスト ボックス コントロールをキーワード フィールドにバインドすると、 Outlook がリスト ボックス コントロール内の値の前にチェック ボックスを自動的に追加します。 その後、ユーザーはリスト ボックス コントロールで 1 つ以上の値をクリックでき、 すべての値がキーワード フィールドに保存されます。 ただし、キーワード フィールドに格納できる文字数は 255 文字です。 そのため、この種類のフィールドはユーザーが比較的少数の値から選択する場合のみに使用すべきです。

詳細については、 資料「OL2002: ListBox Bound to Keywords Field Unexpectedly Changes」 (英語) を参照してください。

コントロールを使って作業する

デザイン時にリスト ボックスとコンボ ボックスにデータを設定する

Outlook フォーム上でリスト ボックス コントロールとコンボ ボックス コントロールにデータを設定するにはさまざまな方法があります。 コントロールには、デザイン時または実行時にデータを設定できます。

定義済みで不変値のセットを所持している場合、 フォームのデザイン時にリスト ボックス コントロールまたはコンボ ボックス コントロールにデータを設定できます。

やってみよう : デザイン時にリスト ボックスにデータを設定する

以下の手順は、Customer_Pet_Info フォームにリスト ボックス コントロールを追加して、 ペットの大きさを管理する方法を例示しています。

  1. Customer_Pet_Info フォームの新しいインスタンスを開き、 デザイン モードで表示します。
  2. [ペット情報] タブをクリックします。
  3. [フォーム] メニューの [コントロール ツールボックス] をクリックします。 コントロール ツールボックスのリスト ボックス コントロールをフォームにドラッグします。
  4. リスト ボックス コントロールを右クリックし、[プロパティ] をクリックします。 [値] タブで、[新規作成] をクリックします。 [名前] に「ペットのサイズ」と入力し、[OK] をクリックします。 [設定可能な値] ボックスに「非常に小さい; 小さい; 普通; 大きい; 非常に大きい」と入力し、[OK] をクリックします。
  5. リスト ボックス コントロールの上にラベル コントロールを追加し、 [キャプション] を [サイズ:] に変更します。
  6. フォームを再発行します。 フォームへの変更を保存せずに、閉じます。
  7. フォームの新しいインスタンスを開き、 フォームの [ペット情報] タブをクリックします。

リスト ボックス コントロールで任意のアイテムを選択できます。 選択した値は [ペットのサイズ] ユーザー定義フィールドに格納されます (確認するには、[すべてのフィールド] タブをクリックしてください)。

実行時にリスト ボックスとコンボ ボックスにデータを設定する

多くのソリューションでは、 リスト ボックス コントロールまたはコンボ ボックス コントロール内の値が最新になるように、 定期的に更新する必要があります。 値は通常どこか他の場所に保存されるので、 アイテムを開くたびに保存された値を取得する必要があります。 これを行うには、 フォームに VBScript を追加し、Item_Open イベントを使用してアイテムが開かれるたびにコードを実行します。 このコードは、リスト ボックス コントロールまたはコンボ ボックス コントロールに値を提供します。

VBScript を使ってリスト ボックス コントロールまたはコンボ ボックス コントロールにデータを設定するにはいくつかの方法があります。

設定可能な値プロパティ

作業するリスト ボックス コントロールまたはコンボ ボックス コントロールが比較的単純な場合、 コントロールの [設定可能な値] プロパティを使用すると、 デザイン時の手順を自動化できます。 このプロパティは Outlook 固有のもので、 セミコロン区切りの文字列を設定する必要があります。 これは、上記のデザイン時の手順と同様です。

やってみよう : [設定可能な値] プロパティを使用する

[設定可能な値] プロパティを実装する方法を確認するには、以下の手順に従います。

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

  2. [標準のフォーム ライブラリ] で、 [メッセージ] をクリックし、[開く] をクリックします。

  3. [(P.2)] タブをクリックします。

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

  5. [フォーム] メニューの [コントロール ツールボックス] をクリックします。 コントロール ツールボックスのリスト ボックス コントロールをフォームにドラッグします。

  6. リスト ボックス コントロールを右クリックし、 [プロパティ] をクリックします。 [値] タブで、[新規作成] をクリックします。 [名前] に「ListBoxField」と入力し、[OK] をクリックします。 [設定可能な値] フィールドは空のままにして、[OK] をクリックします。

  7. [フォーム] メニューの [コードの表示] をクリックします。 以下の VBScript コードを入力するか貼り付け、 スクリプト エディタを閉じます。

    Sub Item_Open()
       ' FormPage を ページ (P.2) と等しい設定にします。
       Set FormPage = Item.GetInspector.ModifiedFormPages("P.2")
       ' コントロールを ListBox1 という名前のリスト ボックスに設定します。
       Set Control = FormPage.Controls("ListBox1")
       ' リスト ボックスに値を代入します。
       Control.PossibleValues = "青;緑;赤;黄"
    End Sub
    
  8. [すべてのフィールド] タブをクリックし、 [フォーム] メニューの [このページを表示] をクリックします。

  9. [フォーム] メニューの [フォームの実行] をクリックします。

  10. フォームの [P.2] ページをクリックします。

  11. リスト ボックス コントロール内の任意のアイテムをクリックします。

  12. [すべてのフィールド] ページをクリックし、 [対象となるフィールド グループ] ボックスに [このアイテムのユーザー定義フィールド] が表示されていることを確認します。

    ListBoxField ユーザー定義フィールドが一覧され、[P.2] ページで選択した値もそこに一覧されます。

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

AddItem メソッド

AddItem メソッドは、通常、 一連のデータをループして使用します。 データをループしながら、 リスト ボックス コントロールまたはコンボ ボックス コントロールに一度に 1 つずつアイテムを追加します。

AddItem メソッドの使用例については、 資料「OL2002: How to Populate a Combo Box with Your Contacts」 (英語) を参照してください。

List プロパティ

リスト ボックス コントロールとコンボ ボックス コントロールには、 List プロパティがあります。 このプロパティでは、コントロールが使用すべきデータを含む配列を指定できます。 ユーザーのソリューションでデータの格納に配列を既に使用している場合、 このアプローチを使用すると、 最も単純なプログラミング ソリューションを提供できます。 さらに、List プロパティを使用する 1 つの主要な利点は、 複数列のデータを持つリスト ボックス コントロールまたはコンボ ボックス コントロールにデータを設定する場合に、 List プロパティが複数次元の配列をサポートすることがあげられます。

やってみよう : List プロパティを使用してリスト ボックスにデータを設定する

以下の手順を使用して、 連絡先フォルダからのデータを含む 2 列のリスト ボックス コントロールにデータを設定します。

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

  2. [標準のフォーム ライブラリ] で、[メッセージ] をクリックし、[開く] をクリックします。

  3. [(P.2)] タブをクリックします。

  4. [フォーム] メニューの [コントロール ツールボックス] をクリックします。 コントロール ツールボックスのリスト ボックス コントロールをフォームにドラッグします。 リスト ボックス コントロールのサイズをフォームのページの大部分を占めるほど大きくします。

  5. [フォーム] メニューの [コードの表示] をクリックします。 以下の VBScript コードを入力するか貼り付け、スクリプト エディタを閉じます。

    Sub Item_Open()
       Dim FullArray()
       ' フォームのページ名 (P.2) を設定します。
       Set Page = Item.GetInspector.ModifiedFormPages("P.2")
       ' コントロールを ListBox1 という名前のリスト ボックスに設定します。
       Set Control = Page.Controls("ListBox1")
       ' Session オブジェクトを設定します。
       Set olns = Application.Session
       ' 既定の連絡先フォルダを取得します。
       Set ConFolder = olns.GetDefaultFolder(10)
       ' フォルダにアイテムを取得します。
       Set ConItems = ConFolder.Items
       ' 連絡先フォルダにすべてのアイテムを取得します。
       NumItems = ConItems.Count
       ' すべてのフォルダ アイテムを処理するように配列のサイズを変更します。
       ReDim FullArray(NumItems-1,2)
       ' 連絡先フォルダ内のアイテムをループします。
       ' 配列にデータを入力し、見つかった
       ' 連絡先の数を管理します。
       NumContacts = 0
       For I = 1 to NumItems
          Set itm = ConItems(I)
          If Left(itm.MessageClass, 11) = "IPM.Contact" Then
             NumContacts = NumContacts + 1
             FullArray(NumContacts-1,1) = itm.FullName
             FullArray(NumContacts-1,2) = itm.CompanyName
          End If
       Next
    
       ' 2 つのデータ列を処理するようにコントロールを設定します。
       Control.ColumnCount = 3
    
       If NumItems = NumContacts Then
          ' すべての連絡先が存在するので、FullArray を使用します。
          Control.List() = FullArray
       Else
          ' いくつか DistLists が存在するので、より小さい ConArray を使用して、
          ' リスト ボックス内の空の値を削除します。
          Dim ConArray()
          ReDim ConArray(NumContacts-1,2)
          For I = 0 to NumContacts?1
             ConArray(I,1) = FullArray(I,1)
             ConArray(I,2) = FullArray(I,2)
          Next
          Control.List() = ConArray
       End If
    End Sub
    
  6. [フォーム] メニューの [フォームの実行] をクリックします。

  7. フォームの [P.2] ページをクリックします。

    リスト ボックス コントロールは、 既定の連絡先フォルダからのデータを保持するようにデータが設定されます (図 30 を参照してください)。

    Aa155728.odc_olcustfrm230(ja-jp,office.10).gif
    図 30. 連絡先フォルダの一覧を保持するリスト ボックス コントロール

**注   ** フィールドにバインドされていないリスト ボックス コントロールとコンボ ボックス コントロールは、 Click イベントをサポートしません。 代わりに、PropertyChange イベントまたは CustomPropertyChange イベントを使用して、 コントロール内の値が変更されたことを検出する必要があります。

**注   ** ListStyle プロパティを Option に設定していない場合は、 MultiSelect プロパティがチェック ボックスまたはオプション ボタンを一覧に表示するかどうかを判断します。 MultiSelectSingle に設定している場合、 オプション ボタンが一覧に表示されます。 MultiSelectMulti または Extended に設定している場合、 チェック ボックスが一覧に表示されます。

一覧のエントリとユーザーが入力したエントリを照合する

MatchEntry プロパティを使用して、 リスト ボックス コントロールまたはコンボ ボックス コントロールがキーボードからの入力に応答する方法を決定できます。 たとえば、MatchEntry プロパティを設定することにより、 リスト ボックスにエントリが入力されたときに、 Outlook が、リスト ボックスに入力されたエントリと一覧内の既存のエントリをどのように照合するかを決定します。

  1. デザイン モードでフォームを開きます。
  2. コントロール ツール ボックスからフォームにリスト ボックスまたはコンボ ボックス コントロールをドラッグします。
  3. コントロールを右クリックし、[プロパティの詳細] をクリックします。
  4. MatchEntry プロパティをクリックし、[適用] ボックスで値を選択します。

エントリの照合を行わないように MatchEntry プロパティを設定するには、[None] を選択します。 最後に入力した文字とリスト内の各エントリの先頭の文字を比較する (一覧内で最初に一致する文字を検出する) には、[FirstLetter] を選択します。 また、ユーザーのエントリと一覧からのエントリが正確に一致しているかどうか比較するには、[Complete] を選択します。

エントリの照合の使用について注意すべき 2 つの点は、以下のとおりです。

  • 照合機能は 2 秒後 (アジア言語バージョンでは 6 秒後) にリセットされます。 たとえば、米国の 50 州の一覧を持っていて、 「CO」と省略形で入力すると、"Colorado" が検出されます。 ただし、2 秒以上の時間をかけて「CO」と入力すると、 オートコンプリート検索が文字間をリセットするので、"Ohio" が検出されます。
  • Complete 照合を選択する場合、 一覧のエントリをアルファベット順に並べ替えることをお勧めします (並べ替えを行うには、TextColumn プロパティを使用できます)。 一覧をアルファベット順に並べ替えていない場合は、照合が正しく機能しません。 たとえば、一覧に Alabama、Louisiana、および Alaska が含まれている場合、 ユーザーが「ala」と入力すると、"Alabama" が完全一致とみなされます。 実際には、ユーザーが入力したものと一致する 2 つのエントリが一覧に存在するので、 この結果は完全ではありません。 アルファベット順に並べ替えると、この問題を回避できます。

マルチ ページ コントロールとタブ ストリップ コントロール

マルチ ページ コントロールとタブ ストリップ コントロールは、 視覚的には同様の機能を提供しますが、 そのアーキテクチャは大きく異なります。 さらに、Outlook がコントロールでは Click イベントしかサポートしないので、 どちらのコントロールもある程度制限されます。

タブ ストリップ コントロールとマルチ ページ コントロールはどのようなときに使用するのでしょうか ? データに単一のレイアウトを使用する場合は、 タブ ストリップ コントロールを使用して、それぞれ固有のタブにデータの各セットをマップします。 データに複数のレイアウトが必要な場合は、 マルチ ページ コントロールを使用して、 それぞれ固有のページに各レイアウトを割り当てます。 マルチ ページ コントロールのページとは異なり、 タブ ストリップ コントロールのクライアントの領域 (コントロールを受け入れる領域) は個別のフォームではなく、 タブ ストリップ コントロールを保持するフォームの一部です。 タブ ストリップ コントロールの境界は、 タブに関連付けるフォームの領域を定義します。 タブ ストリップ コントロールのクライアント領域にコントロールを配置するときに、 タブ ストリップ コントロールを保持するフォームにコントロールを追加していきます。

マルチ ページ コントロールの主な利点は、 このコントロールを使用すると、フォームのページに通常追加するよりも、 多くのコントロールをフォームに追加できることです。 実際に、標準の Outlook フォームでは、マルチ ページ コントロールを使用して、 フィールドの組織化と連絡先フォームなどの比較的大きな情報の表示を行えます。

Aa155728.odc_olcustfrm231(ja-jp,office.10).gif
図 31. マルチ ページ コントロール

Aa155728.odc_olcustfrm232(ja-jp,office.10).gif
図 32. タブ ストリップ コントロール

VBScript でいずれかのコントロールの Click イベントを使用する場合、 そのコントロールが存在するページのメイン部分をクリックするとイベントが発生することに注意してください。 イベント プロシージャの構文は Sub <ページ名>_Click() です。 しかし、マルチ ページ コントロールの最上部のタブをクリックしても Click イベントが発生しないことに注意してください。 多くの開発者は、 ユーザーがマルチ ページ コントロールの別のタブをクリックしたときに、 プログラムで特定の操作を実行できるようにイベントが発生することを期待します。 マルチ ページ コントロールとタブ スクリプト コントロールの詳細については、 Microsoft Outlook Visual Basic リファレンス ヘルプを参照してください。

Outlook の受信者コントロール

Aa155728.odc_olcustfrm233(ja-jp,office.10).gif
図 33. 受信者コントロール

受信者コントロールは、 解決可能な電子メール アドレス、Web ページ、 電話番号などを格納するようにデザインされた、 フォームで唯一の標準のコントロールです。 このコントロールは Outlook.exe に組み込まれており、 個別の ActiveX コントロールまたは OCX ではありません。 ただし、Outlook はこのコントロールを他のコントロールと同様に登録するので、 フォームに直接追加できるだけでなく、 コントロール ツールボックスにも追加されます。 コントロールの一覧では、 このコントロールは Outlook Recipient Collection Edit OLE コントロールとして参照されます。 ただし、このコントロールを使用するには、 受信者コントロールを直接使用するのではなく、 フォーム上に受信者ベースのフィールドのいずれかをドラッグする必要があります。 このコントロールは標準の受信者フィールドでしか使用できないようにデザインされているので、 この種類のユーザー定義フィールドは作成できません。

Outlook のメッセージ コントロール

Aa155728.odc_olcustfrm234(ja-jp,office.10).gif
図 34. メッセージ コントロール

メッセージ コントロールは、 ファイル、アイテム、またはオブジェクトを挿入できる、 フォームで唯一の標準のコントロールです。 このコントロールは Outlook.exe に組み込まれており、 個別の ActiveX コントロールまたは OCX ではありません。 ただし、Outlook はこのコントロールを他のコントロールと同様に登録するので、 フォームに直接追加できるだけでなく、 コントロール ツールボックスにも追加されます。 コントロールの一覧では、 このコントロールは Outlook DocSite OLE コントロールとして参照されます。 ただし、このコントロールを使用するには、DocSite コントロールを直接使用するのではなく、 フォーム上に [メッセージ] フィールドまたは [メモ] フィールドをドラッグする必要があります。 これらのコントロールをフォームごとに複数所持できません。 Outlook はデザイン時および実行時の両方で警告を表示します。 フォームに複数のコントロールを追加すると、 追加したコントロールが正しく更新されず、 それが原因で使用上の問題が発生することがあります。

メッセージ フィールドの使用中に覚えておくべきいくつかのルールを以下に示します。

  • 各フォームにはページごとに 1 つのメッセージ コントロールしか含めることができません。 たとえば、フォームの作成ページにメッセージ コントロールを、 同じフォームの開封ページにメッセージ コントロールを持つことは可能です。
  • メッセージ ページにメッセージ コントロールを含めたり、 ページ 2 や、作成ページまたは開封ページのようなページに重複したコントロールを所持することはできません。
  • フォームがメッセージ コントロールを含むページの [フォーム] メニューで、 [開封レイアウトの分割] オプションをオンにしていない場合は、 フォームにはメッセージ コントロールのみを含めることができます。
  • メッセージ コントロールは、メッセージ フィールドに自動的にバインドされます。

レッスン 5: フォームのプロパティ

概要

このセクションでは、 非常に本質的なフォーム レベルのプロパティを使ったフォームのデザインの側面を説明します。 フォームのこれらの属性は、通常、デザイン モードで [プロパティ] ページで設定されます。 [プロパティ] ページの "説明"、"分類"、および "フォーム番号" などの情報は、 ユーザーが [フォームの作成] ダイアログ ボックスでフォームを見つけたり、 特定するのに役立ちます。 ユーザーがフォームを変更しないようにするには、 フォームにパスワードを割り当てて、フォームを保護できます。

レッスン内容

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

  • さまざまなフォーム レベルのプロパティ。
  • 各プロパティを何に使用するか。

参考資料

その他のフォーム属性

デザイン モードでフォームの [プロパティ] タブを使用してフォームのさまざまなプロパティを設定できます。 Outlook フォームを使って作業するのが初めての方は、 このタブを見落とすことがよくあります。 フォームのソリューションのデザイン時にフォームのオプションを効果的に使用できるように、 フォームのオプションをよく理解することが重要になります。

ここをクリックすると拡大表示できます
図 35. フォームの [プロパティ] ページ (図をクリックすると拡大表示できます)

アイテムと共にフォームのレイアウトも送信する

フォームの非常に重要な属性の 1 つは、 フォームと共にフォームのレイアウトも保存するかどうかということです。 フォームのレイアウトには、フォームに追加するすべてのフィールドとコードが含まれます。 フォームをフォーム ライブラリに発行する予定がない場合、 フォームの [プロパティ] ページの [フォームのレイアウトも送信] ボックスをオンにする必要があります。 フォームのレイアウトには、 別のユーザーにフォームを送信するときに、 フォームに追加したすべての新しいデータも送信されます。 組織フォーム ライブラリやパブリック フォルダ ライブラリなど、 他のユーザーがアクセスするフォーム ライブラリにフォームを発行する予定がある場合、 フォームのレイアウトがライブラリに保存されるので、 フォームのレイアウトを送信する必要はありません。

フォームのレイアウトは、フォームに非常に大きいサイズを追加することになります。 したがって、共通のフォーム ライブラリにフォームを発行し、 Outlook がフォーム ライブラリからフォームを使用するようにすることが最適であるといえます。 フォームを使用する各アイテムにフォームのレイアウトを埋め込む場合、 フォームのレイアウトが各アイテムと共に送信または投稿されるので、 パフォーマンスの問題が発生することがあります。 Outlook 98 以降のバージョンでは、 このオプションは既定でオフになっています。

ここをクリックすると拡大表示できます
図 36. フォームのレイアウトも送信メッセージ (図をクリックすると拡大表示できます)

アイコン

フォーム アイコンは、 アイコンが表すアイテムの種類をすばやく判断するための視覚的な手段です。 たとえば、既定の Outlook フォームとは異なるフォームをデザインする場合、 カスタム アイコンを指定し、 通常の Outlook アイテムから目立たせることをお勧めします。

フォームをカスタマイズすると同時に、 フォームのアイコンが標準の投稿アイコンに戻ることに注意することが重要になります。 カスタム投稿フォームをデザインしない限り、 フォームの [プロパティ] ページに移動して、 アイテムの特定の種類の既定のアイコンに戻す必要があります。

ここをクリックすると拡大表示できます
図 37. 連絡先フォームの投稿アイコン (図をクリックすると拡大表示できます)

インストール オプションの一覧で、[Visuals for form design] オプションを選択すると、 セットアップ時にアイコンがインストールされます。 既定では、これらのアイコンは C:\Program Files\Microsoft Office\Office\Forms にインストールされます。

フォームに関連付けられたアイコンを変更するには、 フォームの [プロパティ] ページで [大きいアイコンの変更] または [小さいアイコンの変更] をクリックします。 次に、使用しているフォームの種類にとって適切な .ICO ファイルを選択します。 小さいアイコンは、[フォームの管理] ダイアログ ボックス以外の Outlook 全体で使用されます。 [フォームの管理] ダイアログ ボックスでは大きいアイコンを使用します。

   独自のアイコンを作成するために、イメージ エディタなどのツールを使用できます。 このツールは、Visual Basic 6.0 CD-ROM (Disk 1) または Microsoft Visual Studio® 6.0 CD-ROM (Disk 3) から利用できます。 ツールが存在する場所は、\Common\Tools\VB\Imagedit\Imagedit.exe です。

表形式ビューにアイテムを表示していて、 アイコンが適切なアイコンではないように思える場合、 そのアイテムは一時アイテムに変換された可能性があります。 一時アイテムの詳細については、「レッスン 1」を参照してください。

また、Outlook がアイテムの内部にアイコンを保持しないことを理解しておくことも重要です。 アイコンは、常に、発行したフォームに保存されます。 そのため、アイコンは相互にリンクします。 これが、ビューのアイコンが更新されるのに少し時間がかかる主な理由です。 また、これは、発行したフォームにアイテムがアクセスできない場合に、 アイコンが標準のアイコンにリセットされることも意味します。 埋め込みのファイルなど、 リンクされるほとんどのものと同様に、 このアーキテクチャ デザインには利点と欠点があります。 デザインの主な利点の 1 つは、アイテムを最小サイズで保持することです。

Word メールを使用する

フォームのメッセージ コントロールで Microsoft Word が実行されるように指定できます。 メールの作成時に Microsoft Word を使用すると、Word が提供するスペル チェック、 類義語辞典、および書式を利用できます。 Word 2002 をすべての既定のメール形式 (テキスト形式、リッチ テキスト形式、HTML 形式) 用のエディタとして設定するには、 デザイン モードでフォームを開き、[(プロパティ)] ページをクリックし、 [Microsoft Word を電子メール エディタとして使用する] チェック ボックスをオンにします。

Outlook 2000 を使用していて、 既定のメール形式がリッチ テキスト形式の場合、 このオプションを選択すると、 フォームのメッセージ コントロールで Word が実行されます。 既定のメール形式がテキスト形式または HTML 形式のメール メッセージでは WordMail を使用できません。

メール メッセージすべての電子メール エディタとして Word を選択するには、 [ツール] メニューの [オプション] をクリックして [メール形式] をクリックします。 メール メッセージまたは投稿を使用すると、 Outlook が WordMail をエディタとして開始していることを説明するメッセージを表示します。 ただし、メッセージまたはメモ フィールドで Word の文書の終わりを示す隠し文字である、 アンダースコアに注目することによって WordMail を使用していることを通知することもできます。

ここをクリックすると拡大表示できます
図 38. Word をエディタとして選択するための設定 (図をクリックすると拡大表示できます)

フォームのデザインを保護する

フォームの [プロパティ] ページで、[フォーム デザインを保護] ボックスをオンにして、 誰かがフォームをデザイン モードに切り替えようとすると、 Outloolk がパスワードの入力を要求するように設定できます。

有効なパスワードに関する Microsoft のポリシーの詳細については、 資料「189126: Microsoft's Policy Regarding Missing or Invalid Passwords」 (英語) を参照してください。

フォーム パスワードを設定することが、 標準のエンド ユーザーがフォームを変更できないようにする唯一の方法です。 実際には Outlook オブジェクト モデルを使用してフォームのパスワードを取得できます。 フォームをパスワードで保護している場合でも、 オブジェクト モデルの ScriptText プロパティを使用すると、 フォーム内の VBScript コードを取得できます。 詳細については、資料「288554 OL2002: Outlook ユーザー設定 フォームのパスワードでは完全なセキュリティ保護はできない」を参照してください。

発行したフォームの表示と非表示を切り替える

フォームがフォルダに発行されている場合に、 ユーザーがフォーム ライブラリまたは [アクション] メニューでそのフォームを参照できないようにするために、 発行したフォームを非表示にできます。 これを行うには、デザイン モードでフォームの [プロパティ] ページの [返信時にこのフォームを使用] ボックスをオンにします。

または、以下の手順に従って、上記と同じフォーム プロパティを設定できます。

  1. [ツール] メニューの [オプション] をクリックし、[その他] タブをクリックします。

  2. [詳細オプション] をクリックし、[ユーザー設定フォーム] をクリックして [フォームの管理] をクリックします。

  3. 使用するフォーム ライブラリが表示されない場合、 [設定] をクリックして別のフォーム ライブラリまたはフォルダを選択します。

  4. 変更するフォームをクリックし、[プロパティ] をクリックして [隠す] ボックスをオンまたはオフにします。

    Aa155728.odc_olcustfrm239(ja-jp,office.10).gif
    図 39. [フォームのプロパティ] ウィンドウの [隠す] チェック ボックス

フォームを非表示にする場合、 基本的には "第 1 レベル" のフォームのみから起動できる "第 2 レベル" のフォームを作成しています。 たとえば、企業情報の記録に使用する連絡先フォームがあるとしましょう。 メール メッセージに返信できるのと同様に、 別の連絡先フォームを起動するアクションを作成し、 企業の従業員に関する特定の情報を記録できます。 この状況は、フォーム内に追加の VBScript またはロジックがあり、 ソリューションが企業アイテム ("親" アイテム) と従業員アイテム ("子" アイテム) 間のリレーションシップを保持することを意図しています。 ただし、ユーザーが従業員フォームから従業員フォームを起動しないことが大前提です。 つまり、ユーザーができる操作は、 連絡先フォームから従業員フォームを起動することだけにしたいのです。 従業員フォームがフォルダに発行されている場合、 従業員フォームを非表示にすることによって、 ユーザーは [アクション] メニューから従業員フォームを開くことができなくなります。

[返信時にこのフォームを使用] 設定は、名前が少し間違っています。 この設定を使用できるのは、メッセージ フォームだけです。 ただし、この設定はフォームがフォルダまたはフォーム ライブラリに発行されるときにすべてのフォームを単純に非表示にします。

フォームの印刷時または保存時にフィールドを表示または非表示にする

カスタム フォームに他の標準フィールドを追加する場合、 通常は追加手順を実行して、 [印刷時と名前を付けて保存するときにこのフィールドを含む] 設定をオンにする必要があります。 これにより、他の標準フィールドも印刷されます。 この設定は、フォームにユーザー定義フィールドを追加するときに自動的にオンになります。 ただし、Outlook は標準フィールドが追加されてもこの設定をオンにしません。 この設定を利用するには、以下の手順に従います。

  1. デザイン モードで、設定を行うフィールドを右クリックして、[プロパティ] をクリックします。

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

  3. [印刷時と名前を付けて保存するときにこのフィールドを含む] ボックスをオンまたはオフにします。

    Aa155728.odc_olcustfrm240(ja-jp,office.10).gif
    図 40. [印刷時と名前を付けて保存するときにこのフィールドを含む] 設定

フォームにヘルプを追加する

Outlook でカスタム フォームを作成するときに、 ヘルプ ファイルを追加するための直接的な方法はありません。 これに対する多くの回避策があり、 このセクションでは最もよく使用されるアプローチを説明します。

フォーム上に "ヘルプ" ページを作成する

フォームにヘルプ テキストのページを追加するには、以下の手順に従います。

  1. テキストを追加するページをクリックします。

  2. [フォーム] メニューの [ページ名の変更] をクリックします。

  3. [名前] ボックスに「ヘルプ」と入力し、[OK] をクリックします。

  4. ([フォーム] メニューの [コントロール ツールボックス] をクリックして) コントロール ツールボックスからフォームにテキスト ボックス コントロールをドラッグします。

  5. テキスト ボックス コントロールを右クリックし、[プロパティ] をクリックします。

  6. [表示] ページで、[マルチライン] ボックスをオンにして、[OK] をクリックします。

  7. テキスト ボックスにヘルプ テキストを入力します。

  8. テキスト ボックス コントロールを右クリックし、[プロパティ] をクリックします。

  9. [表示] ページで、[読み取り専用] をクリックし、必要に応じて他の表示属性を設定します。

  10. [フォーム] メニューの [フォームの実行] をクリックし、ヘルプ ページがどのように見えるかを確認します。

  11. 変更が完了したら、[ツール] メニューをクリックして [フォーム] をポイントし、[フォームの発行] をクリックします。

       ヘルプ ファイルはフォームに関連付けることができないので、 Outlook フォームのヘルプの作成に HelpContextId プロパティを使用することはできません。 作成ページが開封ページとは異なる場合、 個別のヘルプ ページを作成する必要がある場合があります。

Aa155728.odc_olcustfrm241(ja-jp,office.10).gif
図 41. ヘルプ ページの例

レッスン 6: アクション

概要

アクションはフォームのデザイナが利用できる優れたツールです。 アクションは、特定の環境でフォームの開発者がコードを記述する必要なく、 多くの機能を提供します。 アクションがどのように機能するのかを理解すると、 ワークフローやルーティングのソリューションを作成する能力が大幅に向上します。

レッスン内容

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

  • アクションとは何か、およびアクションを何のために使用するのか。
  • アクションを定義する場合のさまざまなオプション。
  • アクションがフィールドの転送や添付ファイルの保持などの分野にどのように混乱をもたらすか。

参考資料

アクションとは何か ?

アクションは、Outlook フォームの非常に優れた機能です。 アクションを使用すると、プログラミング コードを記述せずに、 さまざまなフォーム ソリューションを作成できます。 アクションは主としてメール メッセージ フォームで使用され、 精巧なルーティング モデルを作成するようにデザインできます。 ただし、Outlook フォームの全種類でアクションを使用できます。

カスタム アクションとは、 既存のアイテムから新しいアイテムを作成する方法です。 その際に、元のアイテムのデータを含めるオプションを使用できます。 たとえば、返信ボタン フレームワークは Outlook に既に存在するこの技法の応用例です。 このフレームワークを使って、独自のデータを追加し、カスタム アクションを作成できます。

**注意  **"アクション" という用語は、 Outlook に関連する多くのものを示すために一般的に使用されます。 "アクション" は常に正しい内容で使用する必要があります。 [自動仕訳ウィザード] はカスタム アクションをサポートしており、 C++ で記述されたアドインです。 また、"カスタム アクション" という用語は、 フォームで作成するユーザー設定フォームのアクションを示すためにも使用できます。 Outlook には [アクション] メニューがあります。 このメニューを使用してユーザー設定フォームのアクションを起動できますが、 [この連絡先への新しいレター] などの処理を単純に開始する、 "アクション" という用語の一般的な意味でも使用できます。 "アクション" という用語を使用するときに、 みなさんと顧客が必ず同じことを指していることを確認することが重要になります。

アクションの 1 つの使用法は、 ある Outlook フォームを別のフォームから開くことです。 Outlook の既定の [返信]、[全員へ返信]、[転送] アクションについては既に詳しい知識があるでしょう。 これらのアクションは、標準の Outlook メール メッセージの開封ページに実装されており、 メッセージを受信して開くときに、 フォーム上でそのアクションを実行できます。

ここをクリックすると拡大表示できます
図 42. 標準の [返信]、[全員へ返信]、および [転送] アクション (図をクリックすると拡大表示できます)

アクションは、1 つのフォルダにさまざまな種類のアイテムを保存するための方法も提供します。 Outlook は、通常、各フォルダがフォルダの種類と一致するアイテムのみを含むことを保証することを支援する優れた操作を行います。 この操作は主に、AutoCreate という機能を使用して行われ、 ある種類のアイテムを別の種類のフォルダにドラッグ アンド ドロップすると、 Outlook がアイテムをフォルダと一致する種類に変換します。 さらに、フォルダの既定のフォームはフォルダの種類と一致する必要があります。 ただし、アクションに別の種類のフォームを起動させることができます。 ユーザーがアイテムを保存するときに、 アイテムとフォルダの種類が一致しなくても、 アイテムはそのフォルダに直接保存されます。

アクションの設定

作成する各アクションは、 アクションに動作方法を通知するさまざまな設定またはプロパティを所持できます。 それらの設定にアクセスするには、 フォームをデザイン モードで開いているときに、 フォームの [(アクション)] ページを使用します。

ここをクリックすると拡大表示できます
図 43. 既定のアクションを持つメッセージ フォームの [(アクション)] ページ (図をクリックすると拡大表示できます)

新しいアクションを作成するには、 フォームの [(アクション)] ページで [新規作成] をクリックします。 [フォーム アクション プロパティの設定] ウィンドウが表示され、 アクションに必要なすべてのプロパティを設定できます。

Aa155728.odc_olcustfrm244(ja-jp,office.10).gif
図 44. [フォーム アクション プロパティの設定] ウィンドウ

アクションを実行するときに、アクションのカスタマイズに使用できる以下のオプションがあります。

アクション名

アクション名を指定します。 アクション名は、メニューとツールバー ボタンに表示されるテキストです。

起動するフォーム

[このアクションで以下の種類のフォームを作成する] 設定には、 アクションが起動するフォームを指定します。 フォームは任意のフォーム ライブラリまたはフォルダに存在できますが、 メール メッセージ以外のユーザー設定フォームは、通常、 組織フォーム ライブラリまたは既定の Outlook フォームのいずれかに存在します。

メッセージ フィールドまたはメモ フィールドの書式

[返信するとき] ボックスでオプションを選択することにより、 メッセージ フィールドまたはメモ フィールドの書式設定方法を指定できます。

  1. **[元のメッセージを残さない]  ** 新しいフォームの本文は空になります。
  2. **[元のメッセージを添付する]  ** 元のメッセージが新しいメッセージに添付ファイルとして含まれます。
  3. **[元のメッセージを残す]  ** メッセージを区切るためにいくつかの改行が追加された状態で、 新しいフォームに元のメッセージの本文がコピーされます。
  4. **[元のメッセージを残し、インデントを設定する]  ** 元のメッセージにインデントが追加されること以外は、上記と同じです。
  5. **[元のメッセージの行頭にインデント記号を挿入する]  ** インデントが追加されたテキストの行頭にユーザーが指定した既定の文字を挿入します。 接頭辞は、[件名の接頭辞] ボックスで指定します。 たとえば、転送されたメッセージの接頭辞は FW にします。
  6. **[元のメッセージへのリンク情報を添付する]  ** 元のメッセージは、新しいメッセージに添付されず、リンク情報のみが添付されます。 これは通常、パブリック フォルダ内のアイテムに使用します。 パブリック フォルダ内のアイテムにはすべての人が常時アクセスできるので、 リンクは常に有効です。 リンクが無効な場合、 メッセージがパブリックにアクセスできない受信者に送信された可能性があります。 この場合、受信者がリンクをクリックしようとすると、 汎用エラー メッセージが表示されます。
  7. **[ユーザーの既定値を優先する]  ** ユーザーが既定値として設定したすべての設定を使用します。 たとえば、既定の Outlook 返信フォームに基づいた新しいフォームを作成する場合に、 この設定を使用することがあります。 その後、新しいフォームを使用する返信メッセージには、 件名に RE: が保持されます。

新しいフォームの宛先を指定する

新しいフォームの宛先を指定する方法を指定できます。

  1. **[返信]  ** [差出人] フィールドを [宛先] フィールドにコピーします。
  2. **[全員へ返信]  ** [宛先] フィールドの受信者に [差出人] フィールドを追加し、 新しい [CC] フィールドに元の [CC] フィールドをコピーします。
  3. **[転送]  ** [宛先] フィールドと [CC] フィールドを空のままにします。 さらに、これは元のメッセージの添付ファイルを保持し、 VBScript などの他の機能も保持する唯一のオプションです。
  4. **[フォルダへ投稿]  ** 通常は投稿フォームで使用します。 フォームをフォルダに保存するようにフォームの投稿先を指定します。 また、[件名] フィールドはクリアされます。
  5. **[返信]  **返信ボタンで使用します。

メニューとツールバーのオプション

アクションがメニューまたはツールバー ボタンで利用できるかどうかを指定できます。

  • **[アクションを表示する] ボックスをオフにする。  ** フォームでプログラムを使ってアクションを実行する VBScript を使っている場合、 通常は [アクションを表示する] ボックスをオフにします。 これは、ユーザーがアクション自体を開始しないようにします。
  • **[メニューのみ]  ** このアクションは、Outlook メニューのみで利用できます。 ツールバーでは利用できません。
  • **[メニューとツールバー]  ** 最もよく使用する選択肢です。ツールバー ボタンは、[返信ボタン] という名前の新しいツールバーに追加されます。

件名フィールドに接頭辞を挿入する

[件名] フィールドに「承認」などのユーザー指定の文字列で接頭辞を挿入するかどうかを指定できます。

フォームを開く方法

新しいアイテムをどのように開くのかを指定できます。

  • **[フォームを開く]  ** Outlook の既定のアクションと同様に、 新しいフォームが画面上に表示されます。

  • **[フォームをすぐに送信]  ** Outlook はフォームを表示せずに、フォームをすぐに送信します。 これは [承諾] アクションまたは [辞退] アクションによく使用されます。

  • **[開封/送信時にメッセージを表示]  ** これは会議出席依頼に返信するのと同時に機能します。 そして、Outlook はすぐに返信を送信するかどうか、 または何らかのコメントを追加するかどうかを確認するメッセージを表示します。

    Aa155728.odc_olcustfrm245(ja-jp,office.10).gif
    図 45. 返信のダイアログ ボックス

Outlook に組み込まれている既定の返信フォーム ([アクション] ページに一覧されているフォーム) を使用するか、 これらのフォームすべてを無効にしてユーザー設定の返信フォームを作成できます。 フォームを説明する行をクリックして [プロパティ] をクリックし、 [有効にする] ボックスをオフにすることにより、 [アクション] ページでこれらのフォームの一部またはすべてを無効にできます。 作成するユーザー設定の返信フォームは、 デザイン モードのフォームの [アクション] ページに一覧されます。

カスタム ボタンとカスタム メニュー コマンドを作成したり、 追加したカスタム ボタンやカスタム メニュー コマンドをユーザーが選択したときに何が発生するかを指定したり、 仕事、予定表アイテム、またはメモを開くボタンまたはメニュー コマンドを作成できます。 フォームが標準の返信ヘッダーまたは転送ヘッダーを使用するように指定できます。 また、ユーザー設定の返信フォームの [件名] フィールドに 「RE:」などの接頭文字を追加することもできます。

ユーザー設定の返信フォームの宛先を特定の電子メール アドレスに送信するか、 パブリック フォルダに投稿するように前もって指定しておくと、 返信フォームを開かずに情報を送信できます。

サポート メモ

  • [返信] アクションで添付ファイルを含めるには、 [転送] アクションを使用する必要があります。 そのため、アクションが [返信] である場合でも、 添付ファイルを保持するには [転送] アクションを使用します。
  • 元のフォームが VBScript を含んでいて、 元のフォームと同一ではない新しいフォームを起動すると、 一時アイテムが作成されるので、 VBScript コードは新しいコードにコピーされます。 受信者がアイテムを開くとき、 マクロを有効にするか無効にするかを指定するダイアログ ボックスが表示されます。 一時アイテムの詳細については、 「レッスン 1: アイテムとフォームを使用する」を参照してください。
  • すべての標準フィールドが、起動される新しいフォームにコピーされるわけではありません。 どのフィールドがコピーされるのかを説明するドキュメントはありません。 さまざまな組み合わせのアイテムがあることを考えると、 これについてのドキュメントを作成するのは困難でしょう。 ただし、すべてのユーザー設定のフィールドは新しいフォームにコピーされます。

やってみよう : カスタム アクションを作成する

この演習では、Customer_Pet_Info フォームにカスタム アクションを追加して、 連絡先情報を誰かに簡単に送信できるようにします。

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

  2. フォームの [アクション] ページをクリックします。

  3. [アクション] ページの下部にある [新規作成] をクリックします。

  4. [アクション名] に「連絡先の転送」と入力します。

  5. [フォーム名] で [フォーム] をクリックして [標準のフォーム ライブラリ] から [メッセージ] をクリックし、 [開く] をクリックします。

  6. [返信するとき] を [元のメッセージを添付する] に設定します。

  7. [フォームの返信方法] を [転送] に設定します。

  8. [件名の接頭辞] に「FW:」を設定し、その他の設定は既定の設定のままにします。

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

  10. フォームを再発行します。フォームへの変更を保存せずに、閉じます。

  11. フォームの新しいインスタンスを開き、フルネームを入力し、連絡先を保存します。

  12. 連絡先を再度開き、アクション用の新しいツールバーが存在することに注目します。

  13. [連絡先の転送] をクリックします。

    何が起こりましたか ?

    答え : 新しいメール メッセージを埋め込みオブジェクトとして添付し、元の連絡先を添付した状態で起動されました (図 46 を参照してください)。

    Aa155728.odc_olcustfrm246(ja-jp,office.10).gif
    図 46. 元の連絡先が埋め込まれたメール メッセージ

覚えておくべきこと

  • 発行したユーザー設定フォームに基づいたアイテムを所有している場合に、 フォームのレイアウトまたはフォームのスキーマを何も変更しない場合、 Outlook は一時フォームを自動的に作成します。 通常の現象として、マクロを有効にするか無効にするかを指定する警告が表示されたり、 アイコンが既定のアイコンにリセットされたり、 アイテムのサイズが予期せず増加したりします。
  • ユーザー定義フィールドを格納できる 3 つの場所 (フォルダ、アイテム、およびパブリック フォーム) があります。 Outlook フォームのソリューションを開発中に、 フィールドの場所および既存のアイテムにどのように影響するかに常に注意することが重要になります。 ソリューションを作成するときに、フィールドの一貫性を常に保持する必要があります。
  • フィールドにコントロールをバインドしない場合、 アイテムの保存、送信、または投稿時に、コントロール内の一部のデータが消失します。 コントロールは単なるフィールド用のユーザー インターフェイスです。フィールドは、データが実際に保存される場所です。
  • Outlook はさまざまなフォーム レイアウト機能を提供しており、 Outlook の [プロパティ] ウィンドウと [プロパティの詳細] ウィンドウの両方に詳しい知識を持つ必要があります。
  • デザイン モード時にフォームの [プロパティ] ページで利用できるさまざまなフォーム オプションがあります。 これらを見落とさないでください。
  • アクションとは、プログラミング コードを記述せずに、 ワークフロー型のフォーム ソリューションを作成するための優れた方法です。