チュートリアル: Windows フォームを使用してデータを収集する
このチュートリアルでは、Microsoft Office Excel のドキュメント レベルのカスタマイズから Windows フォームを開き、ユーザーから情報を収集し、その情報をワークシートのセルに書き込む方法について説明します。
対象: このトピックの情報は、ドキュメントレベルのプロジェクトおよび VSTO アドイン プロジェクトに適用されます。 「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。
このチュートリアルでは具体的には Excel のドキュメントレベルのプロジェクトを使用していますが、チュートリアルで示される概念は他の Office プロジェクトに適用できます。
前提条件
このチュートリアルを実行するには、次のコンポーネントが必要です。
Microsoft Office Developer Tools が含まれている Visual Studio のエディション。 詳細については、「Office ソリューションを開発できるようにコンピューターを構成する」を参照してください。
Excel 2013 または Excel 2010。
Note
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。
新しいプロジェクトの作成
まず、Excel ブック プロジェクトを作成します。
新しいプロジェクトを作成するには
WinFormInputという名前で Excel ブック プロジェクトを作成し、ウィザードで [新しいドキュメントの作成] を選択します。 詳しくは、「方法: Visual Studio で Office プロジェクトを作成する」をご覧ください。
Visual Studio により新しい Excel ブックがデザイナーで開き、 WinFormInput プロジェクトが ソリューション エクスプローラーに追加されます。
ワークシートに NamedRange コントロールを追加する
Sheet1 に名前付き範囲を追加するには
でセル A1
Sheet1
を選択します。[名前] ボックスに formInputと入力します。
[名前] ボックスは数式バーの左側、ワークシートの列 A の真上にあります。
Enter キーを押します。
NamedRange コントロールがセル A1に追加されます。 ワークシート上には表示されませんが、セル A1 を選択すると、 [名前] ボックス (左側のワークシートの真上) および [プロパティ] ウィンドウに formInput と表示されます。
プロジェクトに Windows フォームを追加する
ユーザーに情報を要求するための Windows フォームを作成します。
Windows フォームを追加するには
ソリューション エクスプローラー でプロジェクト WinFormInputを選択します。
[プロジェクト] メニューの [Windows フォームの追加]をクリックします。
フォームに GetInputString.vb または GetInputString.csという名前を付けてから、 [追加]をクリックします。
デザイナーで新しいフォームが開きます。
ボタンを選択し、 [プロパティ] ウィンドウでプロパティ [テキスト] を見つけ出し、テキストを OKに変更します。
次に、ユーザーの情報を収集するためのコードを
ThisWorkbook.vb
またはThisWorkbook.cs
に追加します。
Windows フォームを表示して情報を収集する
GetInputString
Windows フォームのインスタンスを作成しそれを表示してから、ワークシート内のセルにユーザーの情報を書き込みます。
フォームを表示し、情報を収集するには
ソリューション エクスプローラー で ThisWorkbook.vb または ThisWorkbook.csを右クリックしてから、 [コードの表示]をクリックします。
Open の
ThisWorkbook
イベント ハンドラーで、次のコードを追加して、フォームGetInputString
の変数を宣言してから、フォームを表示します。Note
C# では、次のようにイベント ハンドラーを Startup イベントに追加する必要があります。 イベント ハンドラーの作成方法について詳しくは、「方法: Office プロジェクトでイベント ハンドラーを作成する」をご覧ください。
テキストを名前付き範囲に書き込む
WriteStringToCell
という名前のメソッドを作成します。 このメソッドはフォームから呼び出され、ユーザーの入力は NamedRange コントロールであるformInput
のセル A1に渡されます。public void WriteStringToCell(string formData) { Globals.Sheet1.formInput.Value2 = formData; }
次に、ボタンのクリック イベントを処理するためのコードをフォームに追加します。
ワークシートに情報を送信する
ワークシートに情報を送信するには
ソリューション エクスプローラー で GetInputStringを右クリックし、 [デザイナーの表示]をクリックします。
ボタンを右クリックして、ボタンの Click イベント ハンドラーが追加されたコード ファイルを開きます。
テキスト ボックスから入力を受け取り、関数
WriteStringToCell
に送信してから、フォームを閉じるコードをイベント ハンドラーに追加します。
テスト
これでプロジェクトを実行できるようになりました。 Windows フォームが表示され、ワークシートに入力が表示されます。
ブックをテストするには
F5 キーを押してプロジェクトを実行します。
Windows フォームが表示されることを確認します。
テキスト ボックスに Hello World と入力し、 [OK]をクリックします。
ワークシートのセル A1 に Hello World と表示されることを確認します。
次のステップ
このチュートリアルでは、Windows フォームを表示しワークシートにデータを渡すための基本操作を説明しました。 これ以外にも、次の操作が可能です。
Excel ブックまたは Word 文書で Windows フォーム コントロールを使用する。 詳細については、「Office ドキュメントでの Windows フォーム コントロールの概要」を参照してください。
ドキュメント レベルのカスタマイズまたは VSTO アドインから Microsoft Office アプリケーションのユーザー インターフェイスを変更する。 詳細については、「Office UI のカスタマイズ」を参照してください。