次の方法で共有


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

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

適用対象: このトピックの情報は、ドキュメント レベルのプロジェクトと VSTO アドイン プロジェクトに適用されます。 「Office アプリケーションとプロジェクトの種類で使用できる機能」を参照してください。

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

[前提条件]

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

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

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

最初の手順では、Excel ブック プロジェクトを作成します。

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

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

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

ワークシートに NamedRange コントロールを追加する

シート 1 に名前付き範囲を追加するには

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

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

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

  3. Enter キーを押します。

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

Windows フォームをプロジェクトに追加する

ユーザーに情報の入力を求める Windows フォームを作成します。

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

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

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

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

    デザイナーで新しいフォームが開く。

  4. フォームに TextBoxButton を追加します。

  5. ボタンを選択し、[プロパティ] ウィンドウで [テキスト] プロパティを見つけて、テキストを [OK] に変更します。

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

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

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

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

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

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

    C# では、次の Startup イベントに示すように、イベント ハンドラーを追加する必要があります。 イベント ハンドラーの作成の詳細については、「 方法: Office プロジェクトでイベント ハンドラーを作成する」を参照してください。

    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.ShowDialog();
    }
    
  3. 名前付き範囲にテキストを書き込む WriteStringToCell というメソッドを作成します。 このメソッドはフォームから呼び出され、ユーザーの入力はセル NamedRangeformInput コントロール () に渡されます。

    public void WriteStringToCell(string formData)
    {
        Globals.Sheet1.formInput.Value2 = formData;
    }
    

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

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

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

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

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

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

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

Test

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

ブックをテストするには

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

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

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

  4. ワークシートのセル A1Hello World が表示されていることを確認します。

次のステップ

このチュートリアルでは、Windows フォームの表示とワークシートへのデータの受け渡しの基本について説明します。 実行するその他のタスクは次のとおりです。