Share via


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

Microsoft Office Word 文書または Microsoft Office Excel ワークシートに追加される Windows フォーム コントロールと Windows フォームに追加される Windows フォーム コントロールには、いくつかの違いがあります。 たとえば、ドキュメントに Button コントロールを追加した場合、DockAnchorTabIndex などのプロパティは予期したとおりに動作しません。

これらの違いの多くは、ドキュメントで Windows フォーム コントロールをホストする方法に起因します。 Visual Studio Tools for Office Runtime では、ドキュメントに Windows フォーム コントロールを追加すると、Windows フォーム コントロールをホストする ActiveX コントロールがドキュメントに埋め込まれます。 Windows フォーム コントロールはドキュメントに直接埋め込まれません。

対象: このトピックの情報は、Excel および Word のドキュメントレベルのプロジェクトおよび VSTO アドインのプロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

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

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

また、Word 文書の行内にある Windows フォーム コントロールの Left または Top プロパティを設定することもできません。 Windows フォーム コントロールは、次の場合に行内に追加されます。

  • プログラムで、Word 文書にコントロールを追加し、場所の範囲を指定するメソッドを使用します。

  • デザイン時に、Word 文書に Windows フォーム コントロールを追加します。 これを変更するには、デザイナーでコントロールを変更します。

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

Windows フォーム コントロールは、通常、Office ドキュメント上でも Windows フォーム上と同じように動作しますが、いくつかの違いがあります。 次の表では、Office ドキュメント上の Windows フォーム コントロールに存在する違いについて説明します。

機能 相違点
コントロール タブの順序 Excel ワークシートまたは Word 文書に配置されているコントロール間を Tab キーで移動することはできません。
コントロールのグループ化 Office ドキュメントでは、GroupBox コントロールを使用して他のコントロールを含めることはできません。 ドキュメントに複数のオプション ボタンを直接追加した場合、これらのオプション ボタンは相互に排他的ではありません。 オプション ボタンが相互に排他的になるようにコードを記述することもできますが、ユーザー コントロールにオプション ボタンを追加してから、ドキュメントにユーザー コントロールを追加することをお勧めします。 詳細については、「Office 開発のサンプルとチュートリアル」の Word コントロールのサンプルまたは Excel コントロールのサンプルをご覧ください。
コントロールの種類 ドキュメントで使用される Windows フォーム コントロールは、Visual Studio Tools for Office Runtime によって提供されるクラスでラップされます。これにより、Excel ワークシートまたは Word 文書に固有の追加機能を制御できます。 たとえば、Excel ワークシート上にボタン コントロールがある場合は、そのオブジェクトを参照またはキャストするときに、型を Button ではなく Button として指定する必要があります。
コントロールの位置とサイズ コントロールのサイズと位置は、コンテナー ActiveX コントロールの一部であるプロパティによって決定されます。 ActiveX コントロールのプロパティでは、Windows フォーム コントロールの同等のプロパティとは異なる値を受け取ります。 コントロールの TopLeftHeight、または Width プロパティを設定するときは、ピクセルではなくポイント単位で指定します。
Word 文書でのコントロールの位置 フローベースのレイアウトにコントロールを追加する場合は、コンテンツが変更されたときにコントロールがコンテンツと共にフローすることにご注意ください。 コントロールは Word 文書の行内に追加されるため、ツールボックスからコントロールをドラッグしたときに段落に固定できません。 コントロールをダブルクリックするなど、別の方法でコントロールを追加すると、画像を挿入するために用意された Word のオプションに従ってコントロールが挿入されます。

行内にあるコントロールの Left または Top プロパティを設定することはできません。

ヘッダー、フッター、またはサブドキュメント内にコントロールを配置することはできません。
コントロール イベント コントロールが選択されると、次の順序でイベントが発生します。

1. Enter
2. GotFocus

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

1. Leave
2. Validating
3. Validated
4. LostFocus
コントロールの拡大縮小 ドキュメントのズーム設定を 100% 以外の値に変更すると、コントロールは無効になりますが、ドキュメントでは拡大縮小しているように見えます。 たとえば、ドキュメントのズームが 130% のときにボタンをクリックすると、ズームが 100% に設定されるまでコントロールが無効になっていることを示すメッセージが表示されます。 ズームを 100% に変更すると、コントロールが正しく機能します。
コントロールのプロパティ値 Windows フォーム上のコントロールのプロパティは、整数値に設定されますが、Word 文書上のコントロールでは単精度に設定されます。 Excel では、コントロールのプロパティ値は倍精度に設定されます。 ワークシート上のコントロールの Height および Width プロパティがワークシートまたは画面のサイズを超える場合、その値は切り捨てられます。
コントロールのサイズ変更 8 個のサイズ変更ハンドルのいずれかを使用してドキュメント上のコントロールのサイズを変更した場合、コントロールがもう一度選択されるまで、新しいコントロールの寸法は [プロパティ] ウィンドウに反映されません。
コントロールの動作 ワークシート ウィンドウが分割されると、Excel ワークシート上のコントロールが予期しない動作をする場合があります。 たとえば、ワークシート上の TextBox へのアクセスは、いずれかのウィンドウでしかできない場合があります。
コントロールの名前付け コントロールの名前に予約語は使用できません。 たとえば、Button をワークシートに追加し、名前を System に変更すると、プロジェクトをビルドするときにエラーが発生します。
プログラムによるコントロールの追加 実行時にコントロールのコンストラクターを使用してドキュメントにコントロールを追加しないでください。 代わりに、Visual Studio Tools for Office Runtime によって提供されるヘルパー メソッドを使用します。 たとえば、ワークシートにボタンを追加するには、AddButton メソッドを使用します。 これらのヘルパー メソッドでサポートされていないコントロールを追加する場合は、AddControl メソッドを使用できます。 詳細については、「実行時に Office 文書にコントロールを追加する」を参照してください。
コントロールのコピー 実行時に Windows フォーム コントロールをコピーしてドキュメントに貼り付けると、空のコンテナー ActiveX コントロールがドキュメントに貼り付けられます。 Windows フォーム コントロールは新しい位置に表示されず、元のコントロールの背後にあるコードはコンテナー ActiveX コントロールにコピーされません。

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

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

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

Visual Studio デザイナーで Excel ワークシートまたは Word 文書を開いたときに、特定の Windows フォーム コントロールがツールボックスから削除されます。 これは、技術的な制限のため、または Word または Excel 内でその機能が既に使用可能になっているためです。 Excel および Word プロジェクトでは、ドキュメントにフォーカスがあるときにツールボックスに表示されるすべての Windows フォーム コントロールとその他のコンポーネントがサポートされます。また、ワークシートまたはドキュメントにサードパーティ製のコントロールを追加することもできます。

Note

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

Note

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

ツールボックスでは、次のコントロールとコンポーネントは使用できません。

従来の ActiveX コントロールのサポート

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