チュートリアル : Windows フォームを使用してデータを収集する方法
このチュートリアルでは、Microsoft Office Excel のドキュメント レベルのカスタマイズから Windows フォームを開き、ユーザー情報を収集して、その情報をワークシートのセルに書き込む方法を示します。
対象: このトピックの情報は、Office 2013 および Office 2010 のドキュメント レベルのプロジェクトおよびアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
このチュートリアルでは Excel のドキュメント レベルのプロジェクトを使用しますが、ここで説明する概念は他の Office プロジェクトにも該当します。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
-
Microsoft Office Developer Tools が含まれているエディションの Visual Studio 2012。詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.110\).md)」を参照してください。
- Excel 2013 または Excel 2010。
[!メモ]
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。
新規プロジェクトの作成
最初に、Excel ワークブック プロジェクトを作成します。
新しいプロジェクトを作成するには
WinFormInput という名前の Excel ブック プロジェクトを作成し、ウィザードで [新規ドキュメントの作成] をクリックします。詳細については、「方法: Visual Studio で 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 イベントに示すような、イベント ハンドラーを追加する必要があります。イベンド ハンドラーの作成方法の詳細については、「方法: 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 のカスタマイズ」を参照してください。