次の方法で共有


Office ドキュメントでの Windows フォーム コントロールの制限事項

更新 : 2008 年 7 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

ドキュメント レベルのプロジェクト

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

アプリケーション レベルのプロジェクト

  • Excel 2007

  • Word 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Microsoft Office Word 文書または Microsoft Office Excel ワークシートに追加されている Windows フォーム コントロールと、Windows フォームに追加されている Windows フォーム コントロールには相違点があります。たとえば、Button コントロールを Word 文書に追加すると、DockAnchorTabIndex などのプロパティは、予測したようには動作しません。

相違点の多くは、Windows フォーム コントロールがドキュメントでホストされる方法の違いによるものです。Windows フォーム コントロールをドキュメントに追加した場合は、Visual Studio Tools for Office によって ActiveX コントロールが埋め込まれ、これがドキュメント内の Windows フォーム コントロールをホストします。Windows フォーム コントロールはドキュメントには直接埋め込まれません。

Windows フォーム コントロールのメソッドおよびプロパティの制限事項

Windows フォーム コントロールのメソッドおよびプロパティには、ドキュメント上では Windows フォーム上で使用する場合と同じようには動作しないものが多数あり、これらはドキュメント上では使用しないことをお勧めします。たとえば、Dock や Anchor などのプロパティを設定した場合、これらはドキュメントではなくコンテナ ActiveX コントロールに対する Windows フォーム コントロールの位置にのみ作用します。Word および Excel ではサポートされていない Windows フォーム コントロールのメソッドおよびプロパティの一覧を次に示します。

  • Excel のコントロールでサポートされていないメソッドおよびプロパティ

    • Anchor

    • Dock

    • Location

    • TabIndex

    • TabStop

    • TopLevelControl

  • Word のコントロールでサポートされていないメソッドおよびプロパティ

    • Hide

    • Show

    • Anchor

    • Dock

    • Location

    • TabIndex

    • TabStop

    • TopLevelControl

    • Visible

Word 文書でテキスト行内に挿入されている Windows フォーム コントロールの Left プロパティまたは Top プロパティも設定できません。Windows フォーム コントロールは、次のような場合に、テキスト行内に追加されます。

Office ドキュメントでの Windows フォーム コントロールの相違点

一般に、Windows フォーム コントロールは、Office ドキュメント上にあっても Windows フォーム上にある場合と同じように動作しますが、いくつか相違点があります。Office ドキュメントにおける Windows フォーム コントロールの相違点を次の表に示します。

機能

相違点

コントロールのタブ オーダー

Excel ワークシートまたは Word 文書上にあるコントロール間はタブ移動できません。

コントロールのグループ化

Office ドキュメント上のコントロールは、GroupBox コントロールを使用してグループ化することはできません。ドキュメントに直接複数のオプション ボタンを追加した場合は、これらは一度に 1 つしか選択できないオプション ボタンにはなりません。コードを記述してこれらのオプション ボタンを一度に 1 つしか選択できないようにすることもできますが、オプション ボタンをユーザー コントロールに追加し、そのユーザー コントロールをドキュメントに追加することをお勧めします。詳細については、「Word のコントロールのサンプル」または「Excel のコントロールのサンプル」を参照してください。

コントロールの型

ドキュメント上で使用される Windows フォーム コントロールは、Visual Studio Tools for Office で提供されるクラスにラップされており、それによって Excel ワークシートまたは Word 文書に固有の機能がコントロールに追加されています。たとえば、Excel ワークシートの Button コントロールをオブジェクトとして参照またはキャストするときは、System.Windows.Forms.Button 型ではなく必ず Microsoft.Office.Tools.Excel.Controls.Button 型を指定します。

コントロールの位置およびサイズ

コントロールのサイズおよび位置は、コンテナ ActiveX コントロールに含まれる各種プロパティによって決定されます。ActiveX コントロールのプロパティは、Windows フォーム コントロールの同等のプロパティとは異なる値を持ちます。コントロールの Top、Left、Height、または Width の各プロパティに設定する値は、ピクセル単位ではなくポイント単位になります。

Word 文書のコントロールの位置

前後の流れのあるレイアウトにコントロールを追加すると、内容が変更された場合にはその内容の流れに従ってコントロールも移動します。ツールボックスからコントロールをドラッグして追加した場合、そのコントロールは Word 文書内のテキスト行内に挿入されるので、特定の段落には固定できません。コントロールをダブルクリックするなど別の方法でコントロールを追加した場合は、画像の挿入について設定してある Word のオプションに従ってコントロールが挿入されます。

テキスト行内に挿入されているコントロールの Left プロパティまたは Top プロパティは設定できません。

コントロールは、ヘッダーやフッターの内部、またはサブドキュメントの内部には配置できません。

コントロールのイベント

コントロールを選択すると、次の順番でイベントが発生します。

  1. Enter

  2. GotFocus

コントロールの選択を解除すると、次の順番でイベントが発生します。

  1. Leave

  2. Validating

  3. Validated

  4. LostFocus

コントロールの拡大と縮小

ドキュメントのズーム設定を 100% 以外に変更すると、コントロールはドキュメントと同じ倍率で表示されますが、無効になります。たとえば、130% ズームでドキュメントを表示しているときにボタンをクリックすると、ズームを 100% に設定しないとコントロールが無効であることを示すメッセージが表示されます。ズームを 100% に変更すると、コントロールは正常に動作します。

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

Windows フォーム上のコントロールのプロパティには整数値が設定されますが、Word 文書上のコントロールのプロパティには単精度浮動小数点数型 (Single) の値が設定されます。Excel では、コントロールのプロパティ値には倍精度浮動小数点数型 (Double) の値が設定されます。ワークシート上のコントロールの Height プロパティおよび Width プロパティの値がそのワークシートまたは画面のサイズを超える場合、その値は切り捨てられます。

コントロールのサイズ変更

8 つのサイズ変更ハンドルのいずれかを使ってドキュメント上のコントロールのサイズを変更した場合は、そのコントロールを再度選択するまで新しいサイズが [プロパティ] ウィンドウに反映されません。

コントロールの動作

Excel ワークシート上のコントロールは、ワークシート ウィンドウが分割されていると予期しない動作をすることがあります。たとえば、ワークシート上の TextBox には、ウィンドウのうち 1 つからしかアクセスできない場合があります。

コントロールの名前付け

コントロールの名前に予約語は使用できません。たとえば、ワークシートに Button コントロールを追加し、名前を「System」に変更すると、そのプロジェクトをビルドするときにエラーが発生します。

プログラミングによるコントロールの追加

実行時にコントロールのコンストラクタを使用してドキュメントにコントロールを追加することはできません。その代わり、Visual Studio Tools for Office で提供されているヘルパー メソッドを使用します。たとえば、ワークシートにボタンを追加するには、AddButton メソッドを使用します。ヘルパー メソッドでサポートされていないコントロールを追加するには、AddControl メソッドを使用できます。詳細については、「実行時の Office ドキュメントへのコントロールの追加」を参照してください。

コントロールのコピー

実行時に Windows フォーム コントロールをコピーしてドキュメントに貼り付けると、ドキュメントに空のコンテナ ActiveX コントロールが貼り付けられます。貼り付けた先に Windows フォーム コントロールは表示されず、元のコントロールの背後にあるコードはコンテナ ActiveX コントロールにコピーされません。

ドキュメント レベルのプロジェクトの制限

ドキュメントで Windows フォーム コントロールを使用する場合、ドキュメント レベルのプロジェクトに固有の制限があります。

デザイン時のコントロールのサポート

Visual Studio デザイナで Excel ワークシートまたは Word 文書を開いているときは、一部の Windows フォーム コントロールは [ツールボックス] から削除されます。これは技術的な制限があるか、Word または Excel 内に同等の機能が既にあるためです。Visual Studio Tools for Office では、ドキュメントにフォーカスがあるときに [ツールボックス] に表示される Windows フォーム コントロールやその他のコントロールがすべてサポートされ、サードパーティのコントロールもドキュメントに追加できます。

ms178765.alert_note(ja-jp,VS.90).gifメモ :

ドキュメントが保護されている場合は、すべてのコントロールが [ツールボックス] から削除されます。ドキュメントの保護については、「ドキュメント レベルのソリューションにおけるドキュメントの保護」を参照してください。

ms178765.alert_note(ja-jp,VS.90).gifメモ :

サードパーティ製のコントロールの場合、Visual Studio Tools for Office ソリューションで使用するためには、ComVisibleAttribute 属性が true に設定されている必要があります。

次のコントロールとコンポーネントは [ツールボックス] にはありません。

レガシ ActiveX コントロールのサポート

ActiveX コントロールが含まれた既存の Word 文書または Excel ブックを使用して Visual Studio Tools for Office プロジェクトを作成した場合、その ActiveX コントロールの機能は失われませんが、Visual Studio Tools for Office 内からのドキュメントへの新しい ActiveX コントロールの追加はサポートされていません。たとえば、[コントロール ツールボックス] から追加され、VBA (Visual Basic for Applications) マクロを実行するボタンが Word 文書にある場合、その文書が Visual Studio Tools for Office プロジェクトで使用された後も、引き続きそのボタンはマクロを実行します。ただし、ActiveX コントロールおよび VBA マクロを削除し、Windows フォーム コントロールおよびマネージ コードに置き換えることをお勧めします。

参照

処理手順

方法 : Office ドキュメントに Windows フォーム コントロールを追加する

概念

Office ドキュメントでの Windows フォーム コントロールの概要

実行時の Office ドキュメントへのコントロールの追加

その他の技術情報

Office ドキュメントのコントロール

履歴の変更

日付

履歴

理由

2008 年 7 月

一般的な制限事項とドキュメント レベルのカスタマイズに固有な制限事項の相違点に情報を追加

SP1 機能変更