チュートリアル : オプション ボタンを使用してドキュメントのグラフを更新する方法
このチュートリアルでは、Microsoft Office Word のドキュメント レベルのカスタマイズでオプション ボタンを使用して、文書上でグラフのスタイルを選択するオプションをユーザーに提供する方法を示します。
対象: このトピックの情報は、Word 2007 と Word 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
このチュートリアルでは、次の作業について説明します。
デザイン時におけるドキュメント レベルのプロジェクトの文書へのグラフの追加
ユーザー コントロールへの追加によるオプション ボタンのグループ化
オプション選択時のグラフ スタイルの変更
この結果として完成したサンプルについては、「Office 開発のサンプルとチュートリアル」の Word コントロールのサンプルを参照してください。
注意
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio の設定」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
-
Microsoft Office 開発者ツールを含むエディションの Visual Studio 2010。 詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.100\).md)」を参照してください。
- Word 2007 または Word 2010。
プロジェクトの作成
まず、Word 文書プロジェクトを作成します。
新しいプロジェクトを作成するには
My Chart Options という名前の Word ドキュメント プロジェクトを作成します。 ウィザードで、[新規ドキュメントの作成] をクリックします。 詳細については、「方法: Visual Studio で Office プロジェクトを作成する」を参照してください。
新しい Word ドキュメントが Visual Studio のデザイナーに開かれ、My Chart Options プロジェクトがソリューション エクスプローラーに追加されます。
ドキュメントへのグラフの追加
グラフを追加するには
Visual Studio デザイナーでホストされている Word 文書のリボンで [挿入] タブをクリックします。
[テキスト] の [オブジェクトの挿入] ドロップダウン ボタンをクリックし、[オブジェクト] をクリックします。
[オブジェクト] ダイアログ ボックスが表示されます。
[新規作成] タブの [オブジェクトの種類] ボックスの [Microsoft Graph グラフ] を選択して、[OK] をクリックします。
文書のカーソル位置にグラフが追加され、[データシート] ウィンドウに既定のデータが表示されます。
[データシート] ウィンドウを閉じてグラフ内の既定値を受け入れ、ドキュメントの中をクリックしてグラフからフォーカスを移動します。
グラフを右クリックし、[オブジェクトの書式設定] をクリックします。
[オブジェクトの書式設定] ダイアログ ボックスの [レイアウト] タブの [四角] を選択して、[OK] をクリックします。
プロジェクトへのユーザー コントロールの追加
文書上のオプション ボタンは、既定では一度に 1 つしか選択できないようにはなりません。 これらのオプション ボタンは、ユーザー コントロールに追加し、選択範囲を制御するコードを作成することによって、正しく機能するようになります。
ユーザー コントロールを追加するには
ソリューション エクスプローラーで [My Chart Options] プロジェクトを選択します。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスの [ユーザー コントロール] をクリックし、コントロールに ChartOptions という名前を付けて [追加] をクリックします。
ユーザー コントロールに Windows フォーム コントロールを追加するには
デザイナーでユーザー コントロールが非表示になっている場合は、ソリューション エクスプローラーで ChartOptions をダブルクリックします。
[ツールボックス] の [コモン コントロール] タブから 1 つ目の [オプション ボタン] コントロールをユーザー コントロールにドラッグし、以下のプロパティを変更します。
プロパティ
値
名前
columnChart
テキスト
Column Chart
2 つ目の [オプション ボタン] をユーザー コントロールに追加し、次のプロパティを変更します。
プロパティ
値
名前
barChart
テキスト
Bar Chart
3 つ目の [オプション ボタン] をユーザー コントロールに追加し、次のプロパティを変更します。
プロパティ
値
名前
lineChart
テキスト
Line Chart
4 つ目の [オプション ボタン] をユーザー コントロールに追加し、次のプロパティを変更します。
プロパティ
値
名前
areaBlockChart
テキスト
Area Block Chart
参照の追加
ドキュメントのユーザー コントロールからグラフにアクセスするには、Microsoft.Office.Interop.Graph アセンブリへの参照がプロジェクト内に必要です。
Microsoft.Office.Interop.Graph アセンブリへの参照を追加するには
[プロジェクト] メニューの [参照の追加] をクリックします。
[参照の追加] ダイアログ ボックスが表示されます。
[.NET] タブで [Microsoft.Office.Interop.Graph] をクリックし、[OK] をクリックします。 プロジェクトが Word 2007 を対象としている場合は、アセンブリのバージョン 12.0.0.0 を選択します。プロジェクトが Word 2010 を対象としている場合は、バージョン 14.0.0.0 を選択します。
オプション ボタンが選択されたときのグラフ スタイルの変更
ボタンを正しく動作させるために、ユーザー コントロールにパブリック イベントを作成し、選択の種類を設定するプロパティを追加し、各オプション ボタンの CheckedChanged イベントにプロシージャを作成します。
ユーザー コントロールにイベントとプロパティを作成するには
ソリューション エクスプローラーでユーザー コントロールを右クリックし、[コードの表示] をクリックします。
SelectionChanged イベントと Selection プロパティを作成するコードを ChartOptions クラスに追加します。
Public Event SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Private selectedType As Microsoft.Office.Interop.Graph.XlChartType = _ Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered Public Property Selection() As Microsoft.Office.Interop.Graph.XlChartType Get Return Me.selectedType End Get Set(ByVal value As Microsoft.Office.Interop.Graph.XlChartType) Me.selectedType = value End Set End Property
public event EventHandler SelectionChanged; private Microsoft.Office.Interop.Graph.XlChartType selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered; public Microsoft.Office.Interop.Graph.XlChartType Selection { get { return this.selectedType; } set { this.selectedType = value; } }
オプション ボタンの CheckedChange イベントを処理するには
areaBlockChart オプション ボタンの CheckedChanged イベント ハンドラーでグラフ タイプを設定した後で、このイベントを発生させます。
Private Sub areaBlockChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles areaBlockChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlAreaStacked RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void areaBlockChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlAreaStacked; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
barChart オプション ボタンの CheckedChanged イベント ハンドラーで、グラフの種類を設定します。
Private Sub barChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles barChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlBarClustered RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void barChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlBarClustered; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
columnChart オプション ボタンの CheckedChanged イベント ハンドラーで、グラフの種類を設定します。
Private Sub columnChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles columnChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void columnChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
lineChart オプション ボタンの CheckedChanged イベント ハンドラーで、グラフの種類を設定します。
Private Sub lineChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles lineChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlLineMarkers RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void lineChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlLineMarkers; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
C# では、オプション ボタンのイベント ハンドラーを追加する必要があります。 このコードを ChartOptions コンストラクターの InitializeComponent の呼び出しの後に追加できます。 イベンド ハンドラーの作成方法の詳細については、「方法: Office プロジェクトでイベント ハンドラーを作成する」を参照してください。
public ChartOptions() { InitializeComponent(); areaBlockChart.CheckedChanged += new EventHandler(areaBlockChart_CheckedChanged); barChart.CheckedChanged += new EventHandler(barChart_CheckedChanged); columnChart.CheckedChanged += new EventHandler(columnChart_CheckedChanged); lineChart.CheckedChanged += new EventHandler(lineChart_CheckedChanged); }
ドキュメントへのユーザー コントロールの追加
このソリューションをビルドすると、新しいユーザー コントロールがツールボックスに自動的に追加されます。 このコントロールは、ツールボックスからドキュメントにドラッグできます。
ユーザー コントロールをドキュメントに追加するには
[ビルド] メニューの [ソリューションのビルド] をクリックします。
ChartOptions ユーザー コントロールがツールボックスに追加されます。
ソリューション エクスプローラーで ThisDocument.vb または ThisDocument.cs を右クリックし、[デザイナーの表示] をクリックします。
ツールボックスから ChartOptions コントロールをドキュメントにドラッグします。
ChartOptions1 という新しいコントロールがプロジェクトに追加されます。
グラフ タイプの変更
ユーザー コントロールで選択されたオプションに基づいてグラフの種類を変更するイベント ハンドラーを作成します。
ドキュメントに表示されているグラフのタイプを変更するには
次のイベント ハンドラーを ThisDocument クラスに追加します。
Private Sub ChartOptions1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles ChartOptions1.SelectionChanged Try Dim shape As Word.Shape = Me.Shapes.Item(1) ' Activate the shape. shape.Activate() Dim dataChart As Graph.Chart = CType(shape.OLEFormat.Object, Graph.Chart) dataChart.ChartType = Me.ChartOptions1.Selection ' Deactivate the shape. Me.ChartOptions1.Select() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
private void ChartOptions1_SelectionChanged(object sender, EventArgs e) { try { object index = 1; Word.Shape shape = this.Shapes.get_Item(ref index); // Activate the shape. shape.Activate(); Microsoft.Office.Interop.Graph.Chart dataChart = (Microsoft.Office.Interop.Graph.Chart)shape.OLEFormat.Object; dataChart.ChartType = this.ChartOptions1.Selection; // Deactivate the shape. this.ChartOptions1.Select(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
C# では、ユーザー コントロールのイベント ハンドラーを Startup イベントに追加する必要があります。
this.ChartOptions1.SelectionChanged += new EventHandler(ChartOptions1_SelectionChanged);
アプリケーションのテスト
文書をテストして、オプション ボタンを選択したときにグラフのスタイルが正常に更新されることを確認できます。
文書をテストするには
F5 キーを押してプロジェクトを実行します。
各オプション ボタンをオンにします。
選択に合わせてグラフ スタイルが変更されることを確認します。
次の手順
次に行う作業は以下のとおりです。
ボタンを使用してテキスト ボックスにデータを設定します。 詳細については、「チュートリアル : ボタンを使用して文書内のテキスト ボックスにテキストを表示する方法」を参照してください。
コンボ ボックスからスタイルを選択して、書式を変更します。 詳細については、「チュートリアル : CheckBox コントロールを使用したドキュメント書式の変更」を参照してください。
参照
概念
Word 文書上での Windows フォーム コントロールの使用
Office ドキュメントでの Windows フォーム コントロールの制限事項