チュートリアル : オプション ボタンを使用してドキュメントのグラフを更新する方法

更新 : 2007 年 11 月

対象

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

プロジェクトの種類

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

Microsoft Office のバージョン

  • Word 2007

  • Word 2003

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

このチュートリアルでは、Microsoft Office Word のドキュメント レベルのカスタマイズでオプション ボタンを使用して、文書上でグラフのスタイルを選択するオプションをユーザーに提供する方法を示します。

このチュートリアルでは、次のタスクについて説明します。

  • デザイン時におけるドキュメント レベルのプロジェクトの文書へのグラフの追加

  • ユーザー コントロールへの追加によるオプション ボタンのグループ化

  • オプション選択時のグラフ スタイルの変更

この結果を完全なサンプルとして参照するには、「Word のコントロールのサンプル」を参照してください。

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

お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

前提条件

このチュートリアルを完了するには、次のコンポーネントが必要です。

  • Visual Studio Tools for Office (Visual Studio 2008 Professional および Visual Studio Team System のオプションの要素)

  • Microsoft Office Word 2003 または Microsoft Office Word 2007

このチュートリアルでは Word 2003 のメニューを使用しますが、Word 2007 のリボンでも同じオプションを使用できます。

プロジェクトの作成

まず、Word 文書プロジェクトを作成します。

新しいプロジェクトを作成するには

  • My Chart Options という名前の Word ドキュメント プロジェクトを作成します。ウィザードで、[新規ドキュメントの作成] をクリックします。詳細については、「方法 : Visual Studio Tools for Office プロジェクトを作成する」を参照してください。

    新しい Word ドキュメントが Visual Studio のデザイナに開かれ、My Chart Options プロジェクトがソリューション エクスプローラに追加されます。

ドキュメントへのグラフの追加

Word 2003 プロジェクトでは、Visual Studio ツール バーの [挿入] メニューに、グラフを追加するための Word コマンドが含まれています。

グラフを追加するには

  1. [挿入] メニューの [オブジェクト] をクリックします。

    [オブジェクト] ダイアログ ボックスが表示されます。

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

    [挿入] メニューが表示されない場合は、ドキュメントの中をクリックしてフォーカスを移動する必要があります。詳細については、「Visual Studio 環境における Office メニュー」を参照してください。

  2. [新規作成] タブの [オブジェクトの種類] ボックスの [Microsoft Graph グラフ] を選択して、[OK] をクリックします。

    文書のカーソル位置にグラフが追加され、[データシート] ウィンドウに既定のデータが表示されます。

  3. [データシート] ウィンドウを閉じてグラフ内の既定値を受け入れ、ドキュメントの中をクリックしてグラフからフォーカスを移動します。

  4. グラフを右クリックし、[オブジェクトの書式設定] をクリックします。

  5. [オブジェクトの書式設定] ダイアログ ボックスの [レイアウト] タブの [四角] を選択して、[OK] をクリックします。

プロジェクトへのユーザー コントロールの追加

文書上のオプション ボタンは、既定では一度に 1 つしか選択できないようにはなりません。これらのオプション ボタンは、ユーザー コントロールに追加し、選択範囲を制御するコードを作成することによって、正しく機能するようになります。

ユーザー コントロールを追加するには

  1. ソリューション エクスプローラ[My Chart Options] プロジェクトを選択します。

  2. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

  3. [新しい項目の追加] ダイアログ ボックスの [ユーザー コントロール] をクリックし、コントロールに ChartOptions という名前を付けて [追加] をクリックします。

ユーザー コントロールに Windows フォーム コントロールを追加するには

  1. デザイナでユーザー コントロールが非表示になっている場合は、ソリューション エクスプローラChartOptions をダブルクリックします。

  2. [ツールボックス][コモン コントロール] タブから 1 つ目の [オプション ボタン] コントロールをユーザー コントロールにドラッグし、以下のプロパティを変更します。

    プロパティ

    Name

    columnChart

    Text

    Column Chart

  3. 2 つ目の [オプション ボタン] をユーザー コントロールに追加し、次のプロパティを変更します。

    プロパティ

    Name

    barChart

    Text

    Bar Chart

  4. 3 つ目の [オプション ボタン] をユーザー コントロールに追加し、次のプロパティを変更します。

    プロパティ

    Name

    lineChart

    Text

    Line Chart

  5. 4 つ目の [オプション ボタン] をユーザー コントロールに追加し、次のプロパティを変更します。

    プロパティ

    Name

    areaBlockChart

    Text

    Area Block Chart

参照の追加

ドキュメントのユーザー コントロールからグラフにアクセスするには、Microsoft Graph 11.0 Object Library への参照がプロジェクト内に必要です。

Microsoft Graph 11.0 Object Library への参照を追加するには

  1. [プロジェクト] メニューの [参照の追加] をクリックします。

    [参照の追加] ダイアログ ボックスが表示されます。

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

  3. [コンポーネント名] ボックスの一覧の [Microsoft Graph 11.0 Object Library] をクリックし、[OK] をクリックします。

オプション ボタンが選択されたときのグラフ スタイルの変更

ボタンを正しく動作させるために、ユーザー コントロールにパブリック イベントを作成し、選択の種類を設定するプロパティを追加し、各オプション ボタンの CheckedChanged イベントにプロシージャを作成します。

ユーザー コントロールにイベントとプロパティを作成するには

  1. ソリューション エクスプローラでユーザー コントロールを右クリックし、[コードの表示] をクリックします。

  2. 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 イベントを処理するには

  1. 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);
            }
        }
    }
    
  2. 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);
            }
        }
    }
    
  3. 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);
            }
        }
    }
    
  4. 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);
            }
        }
    }
    
  5. C# では、オプション ボタンのイベント ハンドラを追加する必要があります。このコードを ChartOptions コンストラクタの InitializeComponent の呼び出しの後に追加できます。イベンド ハンドラの作成方法の詳細については、「方法 : Visual Studio Tools for 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);
    }
    

ドキュメントへのユーザー コントロールの追加

このソリューションをビルドすると、新しいユーザー コントロールがツールボックスに自動的に追加されます。このコントロールは、ツールボックスからドキュメントにドラッグできます。

ユーザー コントロールをドキュメントに追加するには

  1. [ビルド] メニューの [ソリューションのビルド] をクリックします。

    ChartOptions ユーザー コントロールがツールボックスに追加されます。

  2. ソリューション エクスプローラThisDocument.vb または ThisDocument.cs を右クリックし、[デザイナの表示] をクリックします。

  3. ツールボックスから ChartOptions コントロールをドキュメントにドラッグします。

    ChartOptions1 という新しいコントロールがプロジェクトに追加されます。

グラフ タイプの変更

ユーザー コントロールで選択されたオプションに基づいてグラフの種類を変更するイベント ハンドラを作成します。

ドキュメントに表示されているグラフのタイプを変更するには

  1. 次のイベント ハンドラを ThisDocument クラスに追加します。

    Private Sub ChartOptions1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles ChartOptions1.SelectionChanged
    
        Try
            'first object is the runtime storage control
            Dim index As Object = 2
            Dim shape As Word.Shape = Me.Shapes.Item(index)
    
            '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
        {
            //first object is the runtime storage control
            object index = 2;
            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);
        }
    }
    
  2. C# では、ユーザー コントロールのイベント ハンドラを Startup イベントに追加する必要があります。

    this.ChartOptions1.SelectionChanged += new EventHandler(ChartOptions1_SelectionChanged);
    

アプリケーションのテスト

文書をテストして、オプション ボタンを選択したときにグラフのスタイルが正常に更新されることを確認できます。

文書をテストするには

  1. F5 キーを押してプロジェクトを実行します。

  2. 各オプション ボタンをオンにします。

  3. 選択に合わせてグラフ スタイルが変更されることを確認します。

次の手順

次に行う作業は以下のとおりです。

参照

概念

Word を使用したチュートリアル

Word 文書上での Windows フォーム コントロールの使用

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

その他の技術情報

Office 開発のサンプルとチュートリアル