方法 : Word 文書にコンテンツ コントロールを追加する
更新 : 2008 年 7 月
対象 |
---|
このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。 プロジェクトの種類
Microsoft Office のバージョン
詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。 |
ドキュメント レベルのプロジェクトでは、デザイン時または実行時にプロジェクトの文書にコンテンツ コントロールを追加できます。Visual Studio 2008 Service Pack 1 (SP1) では、Word 2007 用のアプリケーション レベルのアドインを使用して、実行時にコンテンツ コントロールを任意の開いている文書に追加できるようになりました。
このトピックでは、次のタスクについて説明します。
デザイン時におけるコンテンツ コントロールの追加
実行時にコンテンツ コントロールをドキュメント レベルのプロジェクトに追加する
実行時にコンテンツ コントロールをアプリケーション レベルのプロジェクトに追加する
コンテンツ コントロールの詳細については、「コンテンツ コントロール」を参照してください。
デザイン時におけるコンテンツ コントロールの追加
デザイン時にドキュメント レベルのプロジェクトの文書にコンテンツ コントロールを追加する方法はいくつかあります。
[ツールボックス] の [Word コントロール] タブからコンテンツ コントロールを追加する。
Word でネイティブなコンテンツ コントロールを追加する場合と同じ方法で、コンテンツ コントロールを文書に追加する。
[データ ソース] ウィンドウから文書にコンテンツ コントロールをドラッグする。この方法は、コントロールを作成と同時にデータにバインドする場合に役立ちます。詳細については、「方法 : オブジェクトのデータをドキュメントに読み込む」および「方法 : データベースからドキュメントにデータを読み込む」を参照してください。
メモ : |
---|
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。 |
[ツールボックス] を使用してコンテンツ コントロールを文書に追加するには
Visual Studio デザイナでホストされている文書で、コンテンツ コントロールを配置する位置にカーソルを置くか、コンテンツ コントロールに置き換えるテキストを選択します。
ツールボックスを開き、[Word コントロール] タブをクリックします。
次のいずれかの方法でコントロールを追加します。
[ツールボックス] のコンテンツ コントロールをダブルクリックする。
または
[ツールボックス] のコンテンツ コントロールをクリックし、Enter キーを押す。
または
[ツールボックス] からコンテンツ コントロールを文書にドラッグする。コンテンツ コントロールがマウス ポインタの位置ではなく文書内の現在選択されている位置に追加されます。
メモ : |
---|
[ツールボックス] を使用して GroupContentControl を追加することはできません。Word を開いているとき、または実行時には、GroupContentControl のみ追加できます。 |
Word でコンテンツ ページを文書に追加するには
Visual Studio デザイナでホストされている文書で、コンテンツ コントロールを配置する位置にカーソルを置くか、コンテンツ コントロールに置き換えるテキストを選択します。
リボンの [開発] タブをクリックします。
メモ : [開発] タブが表示されていない場合は、最初にこれを表示する必要があります。詳細については、「方法 : [開発] タブをリボンに表示する」を参照してください。
[コントロール] グループで、追加するコンテンツ コントロールのアイコンをクリックします。
実行時にコンテンツ コントロールをドキュメント レベルのプロジェクトに追加する
プロジェクトの ThisDocument クラスの Controls プロパティを使用して、実行時にプログラムによってコンテンツ コントロールを文書に追加できます。各メソッドに 3 つのオーバーロードがあり、それらを使用して次の方法でコンテンツ コントロールを追加できます。
現在選択されている位置にコントロールを追加する。
指定した範囲にコントロールを追加する。
文書内のネイティブなコンテンツ コントロールに基づくコントロールを追加する。
動的に作成した Visual Studio Tools for Office コンテンツ コントロールは、文書を閉じたときに文書に保持されません。ただし、ネイティブなコンテンツ コントロールは文書に残ります。次に文書を開いたときには、ネイティブなコンテンツ コントロールに基づいて Visual Studio Tools for Office コンテンツ コントロールを再作成できます。詳細については、「実行時の Office ドキュメントへのコントロールの追加」を参照してください。
現在選択されている位置にコンテンツ コントロールを追加するには
名前が Add<control class> (control class は追加するコンテンツ コントロールのクラス名であり、AddRichTextContentControl などとなります) で、新しいコントロールの名前を示す 1 つのパラメータを持つ ControlCollection メソッドを使用します。
ControlCollection.AddRichTextContentControl(String) メソッドを使用して文書の先頭に新しい RichTextContentControl を追加するコード例を次に示します。このコードを実行するには、プロジェクトの ThisDocument クラスにコードを追加し、ThisDocument_Startup イベント ハンドラから AddRichTextControlAtSelection メソッドを呼び出します。
Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtSelection() Me.Paragraphs(1).Range.InsertParagraphBefore() Me.Paragraphs(1).Range.Select() richTextControl1 = Me.Controls.AddRichTextContentControl("richTextControl1") richTextControl1.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1; private void AddRichTextControlAtSelection() { this.Paragraphs[1].Range.InsertParagraphBefore(); this.Paragraphs[1].Range.Select(); richTextControl1 = this.Controls.AddRichTextContentControl("richTextControl1"); richTextControl1.PlaceholderText = "Enter your first name"; }
指定した範囲にコンテンツ コントロールを追加するには
名前が Add<control class> (control class は追加するコンテンツ コントロールのクラス名であり、AddRichTextContentControl などとなります) で、Microsoft.Office.Interop.Word.Range パラメータを持つ ControlCollection メソッドを使用します。
ControlCollection.AddRichTextContentControl(Range, String) メソッドを使用して文書の先頭に新しい RichTextContentControl を追加するコード例を次に示します。このコードを実行するには、プロジェクトの ThisDocument クラスにコードを追加し、ThisDocument_Startup イベント ハンドラから AddRichTextControlAtRange メソッドを呼び出します。
Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtRange() Me.Paragraphs(1).Range.InsertParagraphBefore() richTextControl2 = Me.Controls.AddRichTextContentControl(Me.Paragraphs(1).Range, _ "richTextControl2") richTextControl2.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2; private void AddRichTextControlAtRange() { this.Paragraphs[1].Range.InsertParagraphBefore(); richTextControl2 = this.Controls.AddRichTextContentControl(this.Paragraphs[1].Range, "richTextControl2"); richTextControl2.PlaceholderText = "Enter your first name"; }
文書内のネイティブなコンテンツ コントロールに基づくコンテンツ コントロールを追加するには
名前が Add<control class> (control class は追加するコンテンツ コントロールのクラス名であり、AddRichTextContentControl などとなります) で、Microsoft.Office.Interop.Word.ContentControl パラメータを持つ ControlCollection メソッドを使用します。
次のコード例では、ControlCollection.AddRichTextContentControl(ContentControl, String) メソッドを使用して、文書内にあるネイティブなリッチ テキスト コントロールごとに新しい RichTextContentControl を作成します。このコードを実行するには、プロジェクトの ThisDocument クラスにコードを追加し、ThisDocument_Startup イベント ハンドラから CreateRichTextControlsFromNativeControls メソッドを呼び出します。
Private richTextControls As New System.Collections.Generic.List _ (Of Microsoft.Office.Tools.Word.RichTextContentControl) Private Sub CreateRichTextControlsFromNativeControls() If Me.ContentControls.Count <= 0 Then Return End If Dim count As Integer = 0 For Each nativeControl As Word.ContentControl In Me.ContentControls If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then count += 1 Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _ Me.Controls.AddRichTextContentControl(nativeControl, _ "VSTORichTextContentControl" + count.ToString()) richTextControls.Add(tempControl) End If Next nativeControl End Sub
private System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls; private void CreateRichTextControlsFromNativeControls() { if (this.ContentControls.Count <= 0) return; richTextControls = new System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl>(); int count = 0; foreach (Word.ContentControl nativeControl in this.ContentControls) { if (nativeControl.Type == Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText) { count++; Microsoft.Office.Tools.Word.RichTextContentControl tempControl = this.Controls.AddRichTextContentControl(nativeControl, "VSTORichTextControl" + count.ToString()); richTextControls.Add(tempControl); } } }
実行時にコンテンツ コントロールをアプリケーション レベルのプロジェクトに追加する
SP1 では、アプリケーション レベルのアドインを使用して、プログラムによって実行時にコンテンツ コントロールを任意の開いている文書に追加できるようになりました。そのためには、開いている文書に基づく Document ホスト項目を生成し、このホスト項目の Controls プロパティのメソッドを使用します。各メソッドに 3 つのオーバーロードがあり、それらを使用して次の方法でコンテンツ コントロールを追加できます。
現在選択されている位置にコントロールを追加する。
指定した範囲にコントロールを追加する。
文書内のネイティブなコンテンツ コントロールに基づくコントロールを追加する。
動的に作成した Visual Studio Tools for Office コンテンツ コントロールは、文書を閉じたときに文書に保持されません。ただし、ネイティブなコンテンツ コントロールは文書に残ります。次に文書を開いたときには、ネイティブなコンテンツ コントロールに基づいて Visual Studio Tools for Office コンテンツ コントロールを再作成できます。詳細については、「Office ドキュメントでのダイナミック コントロールの永続化」を参照してください。
アプリケーション レベルのプロジェクトでホスト項目を生成する方法の詳細については、「アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張」を参照してください。
現在選択されている位置にコンテンツ コントロールを追加するには
名前が Add<control class> (control class は追加するコンテンツ コントロールのクラス名であり、AddRichTextContentControl などとなります) で、新しいコントロールの名前を示す 1 つのパラメータを持つ ControlCollection メソッドを使用します。
ControlCollection.AddRichTextContentControl(String) メソッドを使用してアクティブな文書の先頭に新しい RichTextContentControl を追加するコード例を次に示します。このコードを実行するには、プロジェクトの ThisAddIn クラスにコードを追加し、ThisAddIn_Startup イベント ハンドラから AddRichTextControlAtSelection メソッドを呼び出します。
Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtSelection() Dim currentDocument As Word.Document = Me.Application.ActiveDocument currentDocument.Paragraphs(1).Range.InsertParagraphBefore() currentDocument.Paragraphs(1).Range.Select() Dim extendedDocument As Document = currentDocument.GetVstoObject() richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1") richTextControl1.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1; private void AddRichTextControlAtSelection() { Word.Document currentDocument = this.Application.ActiveDocument; currentDocument.Paragraphs[1].Range.InsertParagraphBefore(); currentDocument.Paragraphs[1].Range.Select(); Document extendedDocument = currentDocument.GetVstoObject(); richTextControl1 = extendedDocument.Controls.AddRichTextContentControl( "richTextControl1"); richTextControl1.PlaceholderText = "Enter your first name"; }
指定した範囲にコンテンツ コントロールを追加するには
名前が Add<control class> (control class は追加するコンテンツ コントロールのクラス名であり、AddRichTextContentControl などとなります) で、Microsoft.Office.Interop.Word.Range パラメータを持つ ControlCollection メソッドを使用します。
ControlCollection.AddRichTextContentControl(Range, String) メソッドを使用してアクティブな文書の先頭に新しい RichTextContentControl を追加するコード例を次に示します。このコードを実行するには、プロジェクトの ThisAddIn クラスにコードを追加し、ThisAddIn_Startup イベント ハンドラから AddRichTextControlAtRange メソッドを呼び出します。
Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtRange() Dim currentDocument As Word.Document = Me.Application.ActiveDocument currentDocument.Paragraphs(1).Range.InsertParagraphBefore() Dim extendedDocument As Document = currentDocument.GetVstoObject() richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( _ extendedDocument.Paragraphs(1).Range, "richTextControl2") richTextControl2.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2; private void AddRichTextControlAtRange() { Word.Document currentDocument = this.Application.ActiveDocument; currentDocument.Paragraphs[1].Range.InsertParagraphBefore(); Document extendedDocument = currentDocument.GetVstoObject(); richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( currentDocument.Paragraphs[1].Range, "richTextControl2"); richTextControl2.PlaceholderText = "Enter your first name"; }
文書内のネイティブなコンテンツ コントロールに基づくコンテンツ コントロールを追加するには
名前が Add<control class> (control class は追加するコンテンツ コントロールのクラス名であり、AddRichTextContentControl などとなります) で、Microsoft.Office.Interop.Word.ContentControl パラメータを持つ ControlCollection メソッドを使用します。
次のコード例では、文書を開いた後、ControlCollection.AddRichTextContentControl(ContentControl, String) メソッドを使用して、文書内にあるネイティブなリッチ テキスト コントロールごとに新しい RichTextContentControl を作成します。このコードを実行するには、コードをプロジェクトの ThisAddIn クラスに追加します。
Private richTextControls As New System.Collections.Generic.List _ (Of Microsoft.Office.Tools.Word.RichTextContentControl) Private Sub Application_DocumentOpen(ByVal Doc As Microsoft.Office.Interop.Word.Document) _ Handles Application.DocumentOpen If Doc.ContentControls.Count > 0 Then Dim extendedDocument As Document = Doc.GetVstoObject() Dim count As Integer = 0 For Each nativeControl As Word.ContentControl In Doc.ContentControls If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then count += 1 Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _ extendedDocument.Controls.AddRichTextContentControl(nativeControl, _ "VSTORichTextContentControl" + count.ToString()) richTextControls.Add(tempControl) End If Next nativeControl End If End Sub
private System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls; private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc) { if (Doc.ContentControls.Count > 0) { Document extendedDocument = Doc.GetVstoObject(); richTextControls = new System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl>(); int count = 0; foreach (Word.ContentControl nativeControl in Doc.ContentControls) { if (nativeControl.Type == Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText) { count++; Microsoft.Office.Tools.Word.RichTextContentControl tempControl = extendedDocument.Controls.AddRichTextContentControl(nativeControl, "VSTORichTextControl" + count.ToString()); richTextControls.Add(tempControl); } } } }
C# では、さらに Application_DocumentOpen イベント ハンドラを DocumentOpen イベントに追加する必要があります。
this.Application.DocumentOpen += new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);
参照
概念
ホスト項目およびホスト コントロールのプログラム上の制限事項
その他の技術情報
変更履歴
[日付] |
[履歴] |
原因 |
---|---|---|
2008 年 7 月 |
アプリケーション レベルのアドインに関する手順を追加 |
SP1 機能変更 |