次の方法で共有


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

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

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

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

必須コンポーネント

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

-

Microsoft Office 開発者ツールを含むエディションの Visual Studio 2010。 詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.100\).md)」を参照してください。
  • Microsoft Office Excel 2007 または Excel 2010

注意

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

新規プロジェクトの作成

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

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

  • WinFormInput という名前の Excel ブック プロジェクトを作成し、ウィザードで [新規ドキュメントの作成] をクリックします。 詳細については、「方法: Visual Studio で 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 フォームの変数を宣言してフォームを表示する次のコードを追加します。

    注意

    C# の場合は、以下の Startup イベントに示すような、イベント ハンドラーを追加する必要があります。 イベンド ハンドラーの作成方法の詳細については、「方法: 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 ソリューションのグローバリゼーションとローカリゼーション