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

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

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

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

前提条件

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

Note

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

新しいプロジェクトの作成

まず、Excel ブック プロジェクトを作成します。

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

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

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

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

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

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

  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. ボタンを選択し、 [プロパティ] ウィンドウでプロパティ [テキスト] を見つけ出し、テキストを OKに変更します。

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

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

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

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

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

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

    Note

    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 という名前のメソッドを作成します。 このメソッドはフォームから呼び出され、ユーザーの入力は NamedRange コントロールである formInputのセル A1に渡されます。

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

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

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

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

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

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

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

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

テスト

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

ブックをテストするには

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

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

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

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

次のステップ

このチュートリアルでは、Windows フォームを表示しワークシートにデータを渡すための基本操作を説明しました。 これ以外にも、次の操作が可能です。