チュートリアル : Windows フォームを使用してデータを収集する方法

更新 : 2007 年 11 月

このチュートリアルでは、Microsoft Office Excel のドキュメント レベルのカスタマイズから Windows フォームを開き、ユーザー情報を収集して、その情報をワークシートのセルに書き込む方法を示します。

このチュートリアルでは Excel のドキュメント レベルのプロジェクトを使用しますが、ここで説明する概念は他の Visual Studio Tools for Office プロジェクトにも該当します。

前提条件

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

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

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

ここに挙げた Visual Studio のバージョンでは、Visual Studio Tools for Office が既定でインストールされます。インストールされているかどうかを確認する方法については、「Visual Studio Tools for Office のインストール」を参照してください。

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

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

新規プロジェクトの作成

最初に、Excel ワークブック プロジェクトを作成します。

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

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

    新しい Excel ブックがデザイナで開き、WinFormInput プロジェクトがソリューション エクスプローラに追加されます。

ワークシートへの NamedRange コントロールの追加

Sheet1 に名前付き範囲を追加するには

  1. Sheet1 のセル A1 を選択します。

  2. [名前ボックス] に「formInput」と入力します。

    [名前ボックス] は、数式バーの左、ワークシートの列 A のすぐ上にあります。

  3. Enter キーを押します。

    NamedRange コントロールがセル A1 に追加されます。ワークシートには何も表示されませんが、セル A1 が選択されると、[名前ボックス](左側のワークシートのすぐ上) と [プロパティ] ウィンドウに "formInput" が表示されます。

プロジェクトへの Windows フォームの追加

ユーザー情報を受け取るための Windows フォームを作成します。

Windows フォームを追加するには

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

  2. [プロジェクト] メニューの [Windows フォームの追加] をクリックします。

  3. フォームに GetInputString.vb または GetInputString.cs という名前を付け、[追加] をクリックします。

    新しいフォームがデザイナで開きます。

  4. フォームに TextBox および Button を追加します。

  5. ボタンを選択し、[プロパティ] ウィンドウの [Text] を検索して、テキストを**「OK」**に変更します。

次に、ユーザーの情報を収集するコードを ThisWorkbook.vb または ThisWorkbook.cs に追加します。

Windows フォームの表示と情報の収集

GetInputString Windows フォームのインスタンスを作成して表示し、ユーザーの情報をワークシート内のセルに書き込みます。

フォームを表示して情報を収集するには

  1. ソリューション エクスプローラThisWorkbook.vb または ThisWorkbook.cs を右クリックし、[コードの表示] をクリックします。

  2. ThisWorkbook の Open イベント ハンドラに、GetInputString フォームの変数を宣言してフォームを表示する次のコードを追加します。

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

    C# の場合は、以下の Startup イベントに示すような、イベント ハンドラを追加する必要があります。イベンド ハンドラの作成方法の詳細については、「方法 : Visual Studio Tools for Office でイベント ハンドラを作成する」を参照してください。

    Private Sub ThisWorkbook_Open() Handles Me.Open
        Dim inputForm As New GetInputString()
        inputForm.Show()
    End Sub
    
    private void ThisWorkbook_Startup(object sender, System.EventArgs e)
    {
        this.Open += new 
            Microsoft.Office.Interop.Excel.WorkbookEvents_OpenEventHandler(ThisWorkbook_Open);
    }
    
    private void ThisWorkbook_Open()
    {
        GetInputString inputForm = new GetInputString();
        inputForm.Show();
    }
    
  3. 名前付き範囲にテキストを書き込む WriteStringToCell という名前のメソッドを作成します。このメソッドはフォームから呼び出され、ユーザーの入力内容はセル A1 上の NamedRange コントロールである formInput に渡されます。

    Public Sub WriteStringToCell(ByVal formData As String)
        Globals.Sheet1.formInput.Value2 = formData
    End Sub
    
    public void WriteStringToCell(string formData)
    {
        Globals.Sheet1.formInput.Value2 = formData;
    }
    

次に、ボタンのクリック イベントを処理するコードを追加します。

ワークシートへの情報の送信

ワークシートに情報を送信するには

  1. ソリューション エクスプローラGetInputString を右クリックし、[デザイナの表示] をクリックします。

  2. ボタンをダブルクリックして、ボタンの Click イベント ハンドラが追加されたコード ファイルを開きます。

  3. イベント ハンドラにコードを追加します。このコードは、テキスト ボックスから入力を取得して WriteStringToCell 関数に送信し、フォームを閉じます。

    Globals.ThisWorkbook.WriteStringToCell(Me.TextBox1.Text)
    Me.Dispose()
    
    Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text);
    this.Dispose();
    

テスト

ここでプロジェクトを実行できます。Windows フォームが表示され、入力内容がワークシートに表示されます。

ブックをテストするには

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

  2. Windows フォームが表示されることを確認します。

  3. テキスト ボックスに「Hello World」と入力して、[OK] をクリックします。

  4. ワークシートのセル A1 に "Hello World" が表示されることを確認します。

次の手順

このチュートリアルでは、Windows フォームを表示してワークシートにデータを渡す際の基本事項について説明します。実行できる他のタスクには次のものがあります。

参照

処理手順

方法 : Windows フォームを操作する

概念

Office ソリューションの開発

Office ソリューション プログラミング モデル

アプリケーション レベルのアドインのプログラミング

ドキュメント レベルのカスタマイズのプログラミング

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

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

Office ソリューションのグローバリゼーションとローカリゼーション