チュートリアル : 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 のインストール」を参照してください。
メモ : |
---|
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピュータでは名前や場所が異なる場合があります。これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。 |
新規プロジェクトの作成
最初に、Excel ワークブック プロジェクトを作成します。
新しいプロジェクトを作成するには
WinFormInput という名前の Excel ブック プロジェクトを作成し、ウィザードで [新規ドキュメントの作成] をクリックします。詳細については、「方法 : Visual Studio Tools for Office プロジェクトを作成する」を参照してください。
新しい Excel ブックがデザイナで開き、WinFormInput プロジェクトがソリューション エクスプローラに追加されます。
ワークシートへの NamedRange コントロールの追加
Sheet1 に名前付き範囲を追加するには
Sheet1 のセル A1 を選択します。
[名前ボックス] に「formInput」と入力します。
[名前ボックス] は、数式バーの左、ワークシートの列 A のすぐ上にあります。
Enter キーを押します。
NamedRange コントロールがセル A1 に追加されます。ワークシートには何も表示されませんが、セル A1 が選択されると、[名前ボックス](左側のワークシートのすぐ上) と [プロパティ] ウィンドウに "formInput" が表示されます。
プロジェクトへの Windows フォームの追加
ユーザー情報を受け取るための Windows フォームを作成します。
Windows フォームを追加するには
ソリューション エクスプローラでプロジェクト [WinFormInput] を選択します。
[プロジェクト] メニューの [Windows フォームの追加] をクリックします。
フォームに GetInputString.vb または GetInputString.cs という名前を付け、[追加] をクリックします。
新しいフォームがデザイナで開きます。
ボタンを選択し、[プロパティ] ウィンドウの [Text] を検索して、テキストを**「OK」**に変更します。
次に、ユーザーの情報を収集するコードを ThisWorkbook.vb または ThisWorkbook.cs に追加します。
Windows フォームの表示と情報の収集
GetInputString Windows フォームのインスタンスを作成して表示し、ユーザーの情報をワークシート内のセルに書き込みます。
フォームを表示して情報を収集するには
ソリューション エクスプローラで ThisWorkbook.vb または ThisWorkbook.cs を右クリックし、[コードの表示] をクリックします。
ThisWorkbook の Open イベント ハンドラに、GetInputString フォームの変数を宣言してフォームを表示する次のコードを追加します。
メモ : 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(); }
名前付き範囲にテキストを書き込む 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; }
次に、ボタンのクリック イベントを処理するコードを追加します。
ワークシートへの情報の送信
ワークシートに情報を送信するには
ソリューション エクスプローラで GetInputString を右クリックし、[デザイナの表示] をクリックします。
ボタンをダブルクリックして、ボタンの Click イベント ハンドラが追加されたコード ファイルを開きます。
イベント ハンドラにコードを追加します。このコードは、テキスト ボックスから入力を取得して WriteStringToCell 関数に送信し、フォームを閉じます。
Globals.ThisWorkbook.WriteStringToCell(Me.TextBox1.Text) Me.Dispose()
Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text); this.Dispose();
テスト
ここでプロジェクトを実行できます。Windows フォームが表示され、入力内容がワークシートに表示されます。
ブックをテストするには
F5 キーを押してプロジェクトを実行します。
Windows フォームが表示されることを確認します。
テキスト ボックスに「Hello World」と入力して、[OK] をクリックします。
ワークシートのセル A1 に "Hello World" が表示されることを確認します。
次の手順
このチュートリアルでは、Windows フォームを表示してワークシートにデータを渡す際の基本事項について説明します。実行できる他のタスクには次のものがあります。
Excel ブックまたは Word 文書上の Windows フォーム コントロールを使用する。詳細については、「Office ドキュメントでの Windows フォーム コントロールの概要」を参照してください。
ドキュメント レベルのカスタマイズまたはアプリケーション レベルのアドインから Microsoft Office アプリケーションのユーザー インターフェイスを変更する。詳細については、「Office UI のカスタマイズ」を参照してください。