Microsoft Corporation
June 2005
日本語版最終更新日 2005 年 10 月 5 日
適用対象:
Microsoft Visual Studio 2005
Microsoft Visual Studio 2005 Tools for the Microsoft Office System
Microsoft Visual Basic 2005
Microsoft Office Excel 2003
概要:本実践ラボの演習を通じ、Microsoft Visual Studio 2005 Tools for the Microsoft Office System Beta 2 および Microsoft Office Excel 2003 を使用した、資産配分アプリケーションと負債整理アプリケーションの構築を学習します。
メモ この記事はリリース前のドキュメントであり、今後のリリースで変更される可能性があります。Microsoft Visual Studio 2005 Tools for the Microsoft Office System のベータ版は、Microsoft Visual Studio 2005 のベータ版に含まれています。
VSTO2005ExcelLabs.msi のダウンロード
目次
実践ラボの準備
演習 1 - Excel ワークブックにデータとコントロールを接続する
演習 2 - アクション ペインでコントロールを使用する
演習 3 - Excel ワークブックとアクション ペインにデータを接続する
まとめ
関連情報
実践ラボの準備
実践ラボの演習を行うには、以下の製品をインストールする必要があります:
- Microsoft Windows 2000 以降
- Microsoft Visual Studio 2005 Beta 2
- Microsoft Visual Studio 2005 Tools for the Microsoft Office System Beta 2 (Visual Studio 2005 Beta 2 に含まれています)
- Microsoft Excel Analysis ToolPak をインストールした Microsoft Office Professional Edition 2003
- Microsoft SQL Server 2000 (またはそれ以降) または MSDE
メモ 本ラボの説明では、ファイルをできる限りフル パスで表記します。なお、ダウンロード ファイルは
「\My Documents\Visual Studio 2005\Projects」
に解凍されているものとします。演習に必要なファイル類は
「VSTO2005 Excel Labs\Starter Files」
というサブフォルダに入っています。本ラボで使用するファイル一式は、
「VSTO2005 Excel Labs\Completed Labs」
サブフォルダにあります。
演習 1 - Excel ワークブックにデータとコントロールを接続する
この演習では、Microsoft Office Excel ワークブック内のコントロールを SQL Server データ ソースに連結させるために、SQL Server データ ソースに接続する方法について説明します。また、データ ソース内のレコードのナビゲートに、Windows Forms コントロールを使用します。
所要時間:
- 実習 1: データへの接続と連結 - 15 分
- 実習 2: Windows Forms コントロールの使用 - 15 分
実習 1: データへの接続と連結
Excel ワークブック プロジェクトを作成するには
-
[File] メニューで [New] をクリックし、[Project] をクリックします。
-
[Project Types] の一覧で [Visual Basic] を展開し、[Office] をクリックします。
-
[Templates] の一覧で [Excel Workbook] を選択します。
-
[Name] ボックスに「AssetAllocations」と入力し、[Location] ボックスにファイルの場所 (例:「C:\VSTO2005\Labs」) を指定します。(ここで [Location] が表示されていない場合は、手順 11 で [Save Project] ダイアログ ボックスが表示されます。)
-
[OK] をクリックします。Visual Studio Tools for Office Project Wizard が起動します。
- ウィザードで、[Copy an existing document] を選択します。
-
[Browse] をクリックします。
- 以下のディレクトリに移動し、[Open] をクリックします。
「\My Documents\Visual Studio 2005\Projects\VSTO2005 Excel Labs\Starter Files\Asset Allocations.xls」
-
[OK] をクリックします。このプロジェクトが、Visual Studio 2005 Tools for Office で作成する初めての Excel プロジェクトである場合、図 1 に示すようなダイアログ ボックスが表示されることがあります。その場合は、[OK] をクリックしてダイアログ ボックスを閉じてください。
図 1. Visual Basic for Applications プロジェクト システムへのアクセスはデフォルトでは無効になっています。(クリックすると拡大表示されます)
-
[File] メニューで [Save All] をクリックします。
- 手順 4 で [Location] フィールドが表示されなかった場合は、ここで [Save Project] ダイアログ ボックスが表示されます。[Location] ボックスでファイルの場所 (例:「C:\VSTO2005\Labs」) を指定して、[Save] をクリックします。
SQL スクリプトを使用してサンプル データベースを作成するには
この演習では、スターター ファイルの中にある SQL Server データベースを使用します。サンプル データベースの SQL Server インスタンスへの追加は、SQL スクリプトを使って行います。新しいデータベースの名前は VSTO2005Lab となります。
-
[Start] メニューで [Run] をクリックし、「cmd」と入力して [OK] をクリックします。コマンド ウインドウが開きます。
- スターター ファイルが入っている以下のフォルダに移動します。
「\My Documents\Visual Studio 2005\Projects\VSTO2005 Excel Labs\Starter Files」
- 「VSTO2005ExcelLab.sql」ファイルを編集し、バックアップ データベースのパスを変更します。
変更例
USE master
GO
RESTORE DATABASE VSTO2005Lab
FROM DISK = 'C:\Documents and Settings\
username
\My Documents\Visual
Studio 2005\Projects\VSTO2005 Excel Labs\Starter
Files\VSTO2005ExcelLab_DB.bak'
GO
メモ SQL Server が C ドライブ以外のドライブにインストールされている場合は、SQL スクリプトを編集して論理データベース ファイルをそのドライブに移動します。たとえば、SQL Server が D ドライブにインストールされている場合は、以下のスクリプトを RESTORE 構文に追加します。
WITH MOVE 'VSTO2Lab
_
Data' TO 'D:\Program Files\Microsoft SQL Server\
MSSQL\Data\VSTO2Lab_Data.MDF',
MOVE 'VSTO2Lab
_
Log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL\
Data\VSTO2Lab_Log.LDF'
- バッチ プロシージャを実行します。
osql.exe ?n -E -i VSTO2005ExcelLab.sql
データベースのリストアに成功したことを示すメッセージが表示されます。
- コマンド ウインドウを閉じます。
データソースをプロジェクトに追加するには
-
[Data] メニューで [Show Data Sources] を選択します。[Data Sources] ウインドウが表示されます。
-
[Data Sources] ウインドウで [Add New Data Source] をクリックします。Data Source Configuration Wizard が起動します。
- データ ソース タイプに [Database] を選択して、[Next] をクリックします。
-
[New Connection] をクリックします。このとき、データ接続の作成が初めてであると、[Choose Data Source] ダイアログ ボックスが表示されます。すでに作成されたデータ接続がある場合は、図 3 のような [Add Connection] ダイアログ ボックスが代わりに表示されますので、手順 7 に進んでください。
-
[Choose Data Source] ダイアログ ボックスで、図 2 に示すように、[Microsoft SQL Server] を選択します。
図 2. [Choose Data Source] ダイアログ ボックス
-
[Continue] をクリックします。図 3 に示す [Add Connection] ダイアログ ボックスが表示されます。
図 3. [Add Connection] ダイアログ ボックス (クリックすると拡大表示されます)
- 接続の作成:
-
[Data source] ボックスの値が [Microsoft SQL Server (SqlClient)] ではない場合、[Change] をクリックして、SQL Server データ ソースを選択します。
-
[Server name] ボックスで「(local)」と入力します。
- 認証モードとして [Use Windows Authentication] を選択します。
-
[Connect to a database] セクションの [Select or enter a database name] の一覧で [VSTO2005Lab] を選択します。
-
[Test Connection] をクリックして、接続が有効であることを確認し、[OK] をクリックして接続を追加します。新しい接続の名前は、デフォルト名で「YourServerName.VSTO2005Lab.dbo」です。
-
[Next] をクリックします。
- デフォルト名「VSTO2005LabConnectionString」を使用して、接続を保存します。
-
[Next] をクリックします。
- データベース オブジェクトの一覧で、[Tables] チェック ボックスと [Views] チェック ボックスをオンにして、[Finish] をクリックします。
リレーションをデータ ソースに追加するには
-
[Data Sources] ウインドウで [VSTOLab2005DataSet] を選択し、[Edit DataSet with Designer] ([Data Sources] ウインドウの上部にあります) をクリックします。
-
[Data] メニューで [Add] をポイントし、[Relation] をクリックします。[Relation] ダイアログ ボックスが表示されます。
- 新規リレーションを次のように設定します。
-
[Name]: Customers_PortfolioView
-
[Parent Table]: Customers
-
[Child Table]: PortfolioView
-
[Key Column]: CustomerID
-
[Foreign Key Column]: CustomerID
設定が終了すると、ダイアログ ボックスは図 4 のようになります。
図 4. 設定が完了した [Relation] ダイアログ ボックス (クリックすると拡大表示されます)
-
[OK] をクリックして新規リレーションを追加します。
-
[VSTO2005LabDataSet] デザイナ ウインドウは、図 5 のようになります。
The VSTO2005LabDataSet designer window now looks like Figure 5.
図 5. Customers と PortfolioView 間の新しいリレーション (クリックすると拡大表示されます)
NamedRange コントロールをデータ ソース内のフィールドに連結するには
-
[Solution Explorer] で [Sheet1.vb] を右クリックし、ショートカット メニューで [View Designer] をクリックします。
-
[Data Sources] ウインドウで [Customers] テーブルを展開します。
-
[Customers] テーブル配下にある [CustomerID] をクリックし、Sheet1 の セル B2 の上にドラッグします。
-
[Customers] テーブル配下にある [FirstName] をクリックし、Sheet1 のセル E2 の上にドラッグします。
-
[Customers] テーブル配下にある [LastName] をクリックし、Sheet1 のセル E3 の上にドラッグします。
-
[Customers] テーブル配下にある [BirthDate] をクリックします。[BirthDate] フィールドの右横にある矢印をクリックし、一覧から [NamedRange] をクリックします。[BirthDate] をクリックし、Sheet1 の セル E4 の上にドラッグします。
- セル E5 に、顧客の年齢を計算する関数がすでに設定されていることに注目してください。
ListObject コントロールをデータ ソース内のフィールドに複合連結するには
-
[Data Sources] ウインドウで [PortfolioView] をクリックし、Sheet1 のセル A7 の上にドラッグします。「PortfolioViewListObject」という名前の ListObject が作成されます。PortfolioView の各フィールドには、それぞれ 1 つの列があります。[PortfolioViewListObject] を選択された状態のままにします。
メモ 複合要素を [Data Sources] ウインドウからワークシートにドラッグ アンド ドロップすると、ワークシート上に新規に作成された ListObject 内のセルでは、書式設定が失われます。演習 2 の実習 2 では、ListObject の DataBoundFormat プロパティを設定することでこれを手動修正する方法を説明します。
- ListObject を選択状態のまま、[Data] メニューで [Microsoft Office Excel Data] をポイントし、[Filter] をポイントします。さらに、[AutoFilter] をクリックして ListObject から AutoFilter の一覧を削除します。
-
[Properties] ウインドウで、[PortfolioViewListObject] ListObject の [DataSource] プロパティの横にあるドロップダウン矢印をクリックします。一覧で [CustomersBindingSource] を展開し、続いて [Customers_PortfolioView] をクリックします。
- Asset Allocations ワークブックは名前付き範囲を使用して、ListObject における計算を行います。以下の手順を実行して、Sheet1 の範囲 B7:B8 に 「Symbol」という名前を付けます。
- 範囲 B7:B8 を選択します。
- 図 6 に示す [Name] ボックスで、「Symbol」と入力して [ENTER] キーを押します。
図 6. [Name] ボックスを使用して範囲に名前を付ける
- 手順 4 の手順を繰り返し、表 1 に従って範囲に名前を付けます。
表 1. Asset Allocation ワークブックで必要な名前付き範囲
| 名前 | 範囲 |
| Symbol | Sheet1!$B$7:$B$8 |
| Class | Sheet1!$D$7:$D$8 |
| LastPrice | Sheet1!$G$7:$G$8 |
| Shares | Sheet1!$H$7:$H$8 |
| Amount | Sheet1!$I$7:$I$8 |
チェックポイント
-
[File] メニューで [Save All] をクリックします。
-
[Debug] メニューで [Start] をクリックし、プロジェクトをビルドして、実行します。図 7 に示すような、Asset Allocations.xls というワークブックが Excel で開かれます。
図 7. ワークブック内の範囲は SQL Server テーブルのデータに連結されています(クリックすると拡大表示されます)
-
Customers テーブルの 1 件目のレコードのデータが、NamedRange 連結コントロールに表示されています。また、PortfolioView のテーブル ビューから取得した対応データが ListObject コントロールに表示されています。
- ワークブックを保存せずに Excel を終了します。
実習 2: Windows Forms コントロールの使用
Windows Forms コントロールをワークブックに追加してデータ ソースをナビゲートするには
-
[Toolbox] ウインドウが表示されないときは、[View] メニューをクリックし、 [Toolbox] をクリックします。
-
[Toolbox] で Button コントロールを選択し、Sheet1 のセル A4 にドラッグします。ワークシートに Button1 が追加されます。
-
[Toolbox] で Button コントロールを選択し、Sheet1 のセル B4 にドラッグします。ワークシートに Button2 が追加されます。
- 表 2 の指示に従って、[Properties] ウインドウからボタンのプロパティを変更します。
表 2. ボタン コントロールのプロパティ設定
| コントロール | プロパティ | 値 |
| Button1 | (Name) | btnPrevious |
| | Text | Previous |
| Button2 | (Name) | btnNext |
| | Text | Next |
-
[Solution Explorer] で [Sheet1.vb] を右クリックし、ショートカット メニューで [View Code] をクリックします。
- デザイナにより、「Sheet1」という名前のクラスがワークシートに作成され、Sheet1 の Startup イベントにコードが追加されています。このコードは、NamedRange と ListObject コントロールをデータ ソース内のフィールドに連結したタイミングで追加されたものです。
Private Sub Sheet1_Startup(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Startup
'TODO: 以下を削除して 'VSTO2005LabDataSet.PortfolioView'の
'デフォルト AutoFill を削除します。
If Me.NeedsFill("VSTO2005LabDataSet") Then
Me.PortfolioViewTableAdapter.Fill( _
Me.VSTO2005LabDataSet.PortfolioView)
End If
'TODO: 以下を削除して 'VSTO2005LabDataSet.Customers' の
'デフォルト AutoFill を削除します。
If Me.NeedsFill("VSTO2005LabDataSet") Then
Me.CustomersTableAdapter.Fill(Me.VSTO2005LabDataSet.Customers)
End If
End Sub
-
[Class Name] の一覧で [btnPrevious] をクリックします。[Method Name] の一覧で [Click] をクリックします。
-
btnPrevious の Click イベントに、データ ソースをナビゲートするコードを追加します。
Private Sub btnPrevious_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnPrevious.Click
'1 つ前のレコードに移動します。
Me.CustomersBindingSource.MovePrevious()
End Sub
- 同様の手順で、btnNext の Click イベントにコードを追加します。
Private Sub btnNext_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnNext.Click
'次のレコードに移動します。
Me.CustomersBindingSource.MoveNext()
End Sub
チェックポイント
-
[File] メニューで [Save All] をクリックします。
-
[Debug] メニューで [Start] をクリックし、プロジェクトをビルドして、実行します。Asset Allocations ワークブックが Excel で開かれます。
- ボタンをクリックして、データ ソース内のレコードをナビゲートします。ListObject の内容が、親テーブル (Customers) の連結フィールドの変化に応じて更新されることに注目してください。
- ワークブックを保存せずに Excel を終了します。
演習 2 - アクション ペインでコントロールを使用する
この演習では、Windows Forms コントロールと自分で作成したユーザー コントロールを使用して Excel ソリューションにアクション ペインを作成する方法を学習します。
メモ この演習では、Excel Analysis ToolPak-VBA アドインが提供する関数を利用します。
所要時間:
- 実習 1: Windows Forms コントロールをアクション ペインに追加する - 5 分
- 実習 2: ユーザー コントロールをアクション ペインに追加する - 5 分
実習 1: Windows Forms コントロールをアクション ペインに追加する
Excel ワークブック プロジェクトを作成するには
-
[File] メニューで [New] をクリックし、[Project] をクリックします。
-
[Project Types] に一覧で [Visual Basic] を展開し、[Office] をクリックします。
-
[Templates] の一覧で [Excel Workbook] を選択します。
-
[Name] ボックスに「DebtConsolidation」と入力し、[Location] ボックスにファイルの場所 (例:「C:\VSTO2005\Labs」) を指定します。(ここで [Location] ボックスが表示されていない場合は、手順 10 で [Save] ダイアログ ボックスが表示されます。)
-
[OK] をクリックします。Visual Studio Tools for Office Project Wizard が起動します。
- ウィザードで、[Copy an existing document] を選択します。
-
[Browse] をクリックします。
- 以下のフォルダに移動して、[Debt Consolidation.xls] をクリックし、続いて [Open]、[OK] をクリックします。
「\My Documents\Visual Studio 2005\Projects\VSTO2005 Excel Labs\Starter Files」
-
[File] メニューで [Save All] をクリックします。
- 手順 4 で [Location] フィールドが表示されなかった場合は、ここで [Save] ダイアログ ボックスが表示されます。[Location] ボックスでファイルの場所 (例:「C:\VSTO2005\Labs」) を指定して、[Save] をクリックします。
アクション ペインのサイズと位置を設定するには
-
[Solution Explorer] で [ThisWorkbook.vb] を右クリックし、[View Code] をクリックします。ワークブックのコード モジュールが表示されます。ワークブックのコードビハインド部分が、「ThisWorkbook」という名前のクラスにカプセル化されれている点と、Startup と ShutDown にすでにイベント ハンドラが用意されている点に注目してください。
- ワークブックがロードされ、ビューの初期化を行うときにアクション ペインのサイズと位置を設定するコードを ThisWorkbook_Startup イベントに追加します。
Private Sub ThisWorkbook_Startup(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Startup
With Me.Application.CommandBars("Task Pane")
.Width = 300
.Position = Microsoft.Office.Core.MsoBarPosition.msoBarLeft
End With
Dim labelControl As New Label
labelControl.Text = "TO DO: Add Controls Here"
Me.ActionsPane.Controls.Add(labelControl)
Globals.Sheet2.Select()
Me.Application.ActiveWindow.DisplayHeadings = False
End Sub
チェック ポイント
-
[File] メニューで [Save All] をクリックします。
-
[Debug] メニューで [Start] をクリックし、プロジェクトをビルドして、実行します。「Debt Consolidation.xls」というタイトルのワークブックが Excel でオープンされます。
- 図 8 に示すように、ラベルを持つアクション ペインが表示されます。
図 8. コードによりラベルを追加したアクション ペイン (クリックすると拡大表示されます)
- 変更を保存せずにワークブックをクローズし、Excel を終了します。
実習 2: ユーザー コントロールをアクション ペインに追加する
ユーザー コントロールを作成するには
-
[Solution Explorer] で [DebtConsolidation] プロジェクトを右クリックします。ショートカット メニューで [Add] をポイントし、[New Item] をクリックします。[Add New Item] ダイアログ ボックスが表示されます。
-
[User Control] テンプレートを選択します。
-
[Name] ボックスに「CustomerProfile」と入力して [Add] をクリックします。
- 表 3 を参照して、CustomerProfile ユーザー コントロールのプロパティを設定します。
表 3. CustomerProfile ユーザー コントロールのプロパティ設定
| プロパティ | 値 |
| BackColor | InactiveCaptionText |
| ForeColor | Desktop |
| Size | 300, 600 |
ユーザー コントロールをアクション ペインに追加するには
-
[Solution Explorer] で [Thisworkbook.vb] を右クリックし、ショートカット メニューで [View Code] をクリックします。
-
CustomerProfile コントロール インスタンスの新しいメンバ変数を ThisWorkbook クラスに追加します。
Friend WithEvents profileControl As CustomerProfile
-
CustomerProfile コントロールのインスタンスをアクション ペインに追加する次のコードを ThisWorkbook_Startup に追加します。
profileControl = New CustomerProfile
Me.ActionsPane.Controls.Add(profileControl)
チェックポイント
-
[File] メニューで [Save All] をクリックします。
-
[Debug] メニューで [Start] をクリックし、プロジェクトをビルドして、実行します。「Debt Consolidation」というタイトルのワークブックが Excel で開かれます。
- アクション ペインに、Label コントロール、CustomerProfile ユーザー コントロールの 2 つのコントロールが組み込まれています。
メモ この後の演習で、CustomerProfile コントロールにコントロールを追加します。現在、アクション ペインではユーザー コントロール サーフェイスしか見ることができません。
- 変更を保存せずにワークブックを閉じて、Excel を終了します。
演習 3 - Excel ワークブックとアクション ペインにデータを接続する
この演習では、SQL Server データ ソースに接続し、ワークブックとアクション ペイン内のコントロールをデータベース オブジェクトに連結して、データ ソース内でレコードをナビゲートする方法を学習します。
所要時間:
- 実習 1: 接続の設定とデータ ソースの追加 - 10 分
- 実習 2: データへの接続、連結、ナビゲート - 40 分
この演習では、演習 2 で作成した DebtConsolidation プロジェクトを使用します。
実習 1: 接続の設定とデータ ソースの追加
SQL スクリプトを使用してサンプル データベースを作成するには
-
[Start] メニューで [Run] をクリックし、「cmd」と入力して、[OK] をクリックします。コマンド ウインドウが開きます。
- スターター ファイルが入っている以下のフォルダに移動します。
「\My Documents\Visual Studio 2005\Projects\VSTO2005 Excel Labs\Starter Files」
- 「DebtConsolidation.sql」ファイルを編集し、バックアップ データベースのパスを変更します。たとえば、次のスクリプトの username をご自分のユーザー名に変更します。
USE master
GO
RESTORE DATABASE VSTO2005Lab
FROM DISK = 'C:\Documents and Settings\
username
\My Documents\Visual
Studio 2005\Projects\VSTO2005 Excel Labs\Starter
Files\VSTO2005DebtConsolidation_DB.bak'
GO
メモ SQL Server が C ドライブ以外のドライブにインストールされている場合は、SQL スクリプトを編集して論理データベース ファイルをそのドライブに移動します。たとば、SQL Server が D ドライブにインストールされている場合は、以下のスクリプトを RESTORE 構文に追加します。
WITH MOVE 'VSTO2DebtConsolidation
_
Data' TO 'D:\Program Files\
Microsoft SQL Server\MSSQL\Data\VSTO2DebtConsolidation_Data.MDF',
MOVE 'VSTO2DebtConsolidation
_
Log' TO 'D:\Program Files\
Microsoft SQL Server\MSSQL\Data\VSTO2DebtConsolidation_Log.LDF'
- バッチ プロシージャを実行します。
osql.exe ?n -E -i DebtConsolidation.sql
データベースのリストアに成功したことを示すメッセージが表示されます。
- コマンド ウインドウをクローズします。
データ ソースをプロジェクトに追加するには
-
[Data] メニューで [Show Data Sources] をクリックします。[Data Sources] ウインドウが表示されます。
-
[Data Sources] ウインドウで [Add New Data Source] をクリックします。Data Source Configuration Wizard が起動します。
- データ ソース タイプに [Database] を選択して、[Next] をクリックします。
-
[New Connection] をクリックします。すでに演習 1 でデータ接続を作成しているため、図 9 のような [Add Connection] ダイアログ ボックスが表示されます。
図 9. [Add Connection] ダイアログ ボックス (クリックすると拡大表示されます)
- 接続の作成:
-
[Data Source] ボックスの値が [Microsoft SQL Server (SqlClient)] ではない場合、[Change] をクリックして、SQL Server データ ソースを選択します。
-
[Server Name] ボックスで「(local)」と入力します。
- 認証モードとして [Use Windows Authentication] を選択します。
-
[Connect to a database] セクションの [Select or enter a database name] の一覧で [VSTO2005DebtConsolidation] を選択します。
-
[Test Connection] をクリックして、接続が有効であることを確認し、[OK] をクリックして接続を追加します。新しい接続の名前は、デフォルト名で 「YourServerName.VSTO2005DebtConsolidation.dbo」です。
-
[Next] をクリックします。
- デフォルト名「VSTO2005DebtConsolidationConnectionString」を使用して、接続を保存します。
-
[Next] をクリックします。
- データベース オブジェクトの一覧で、[Tables] チェック ボックスをオンにして、[Finish] をクリックします。
-
[Data Sources] ウインドウで [VSTO2005DebtConsolidationDataSet] をクリックし、[Data Sources] ウインドウの上部にある [Edit DataSet with Designer] をクリックします。すでに「FK_LoanData_NewCustomers」という名前のリレーションが、LoanData テーブルと NewCustomers テーブルの間に作成されているのが分かります。
実習 2: データへの接続、連結、ナビゲート
NewCustomers フィールドへの連結に使用するコントロールを選択するには
-
[Solution Explorer] で [CustomerProfile.vb] を右クリックし、ショートカット メニューで [View Designer] をクリックします。
-
[Data] メニューで [Show Data Sources] をクリックし、[Data Sources] ウインドウを表示します。
-
[Data Sources] ウインドウで [NewCustomers] を選択します。
-
[NewCustomers] の横にあるドロップダウン矢印をクリックし、[Details] をクリックします。
-
[NewCustomers] を展開します。
-
[ProposedRate] フィールドをクリックして選択し、[ProposedRate] の横にある矢印をクリック、続いて [Customize] をクリックします。[Options] ダイアログ ボックスが表示されます。
-
[Associated controls] の一覧で [NumericUpDown] を選択し (選択されていなければ)、[OK] をクリックします。
-
[ProposedRate] の横にあるドロップダウン矢印をクリックし、[NumericUpDown] をクリックします。
-
[MinimumRate] フィールドをクリックして選択し、[MinimumRate] の横にある矢印をクリック、続いて [None] をクリックします。
データ ソースに連結されているコントロールを CustomerProfile コンポーネントに追加するには
-
[Data Sources] ウインドウから [NewCustomers] をドラッグし、ユーザー コントロール デザイン サーフェイスの左上角にドロップします。
このとき、デザイナにより、 [NewCustomers] テーブル内のフィールドに対して、Label コントロール、連結済みの TextBox コントロール、同じく連結済みの NumericUpdown コントロールが自動的に生成されます。また、実行時にデータ ソース内のレコードをナビゲートするための BindingNavigator コントロールもデザイナにより追加されています。
-
[Data Sources] ウインドウで、NewCustomers の [LoanData] フィールドを選択し、ユーザー コントロールの上にドラッグします。これを既存の [NewCustomers] フィールドの下にドロップします。
このとき、デザイナにより、「LoanDataDataGridView」 という名前の DataGridView コントロールがユーザー コントロールに追加されます。
- ユーザー コントロール上で [LoanDataDataGridView] コントロールを選択し、[Properties] ウインドウでの [Datasource] プロパティの横にあるドロップダウンを選択します。
- ドロップダウン リスト [NewCustomersBindingSource] を展開し、[FK_LoanData_NewCustomers] をクリックします。
このとき、デザイナにより、「FK_LoanData_NewCustomersBindingSource」という名前の新しいバインディング ソースがコンポーネント トレイに追加されます。LoanDataDataGridView コントロールはこの新しいバインディング ソースに連結されます。
データ グリッドの表示プロパティを調整するには
-
[LoanDataDataGridView] コントロールで右クリックし、[Edit Columns] をクリックします。
-
[Remove] ボタンをクリックして、選択された列の一覧から、NewCustomerIDとLoanNumber、LoanAmount、LoanRate を削除します。
- 選択された列の一覧で [LoanName] を選択します。Width プロパティに 「150」 を、ReadOnly プロパティに 「True」 を設定します。
- 選択された列の一覧で [Include] を選択し、[Move Up] ボタンをクリックします。Width プロパティに 「50」 を、ReadOnly プロパティに 「True」 を設定します。
-
[OK] をクリックして [Edit Columns] ダイアログ ボックスをクローズします。
メモ この時点で、LoanDataDataGridView には Include と LoanName の 2 つの列しかないはずです。
-
LoanDataDataGridView のプロパティを、表 4 に従って設定します。
表 4. データ グリッドのプロパティ設定
| プロパティ | 値 |
| AllowUserToAddRows | False |
| AllowUserToDeleteRows | False |
| RowHeadersVisible | False |
| Size | 200, 175 |
NumericUpDown コントロールのプロパティ設定とデータ バインディングを追加するには
-
[ProposedRateNumericUpDown] コントロールを選択します。
-
[DecimalPlaces] プロパティに「1」を、[Increment] プロパティに「0.5」を、[Maximum] プロパティに「24」を設定します。
-
[(DataBindings)] プロパティを展開し、[(Advanced)] の横にある [(...)] をクリックします。[Formatting and Advanced Binding] ダイアログ ボックスが表示されます。
-
[Property] の一覧で [Minimum] を選択します。[Binding] の一覧のドロップダウン矢印をクリックします。表示された一覧で [NewCustomersBindingSource] を展開し、[MinimumRate] を選択します。
-
[OK] をクリックして [Formatting and Advanced Binding] ダイアログ ボックスを閉じます。
- コンポーネント トレイで [NewCustomersBindingNavigator] を選択します。
-
[Properties] ウインドウで [BindingSource] プロパティを展開し、[AllowNew] プロパティに「False」を設定します。
コンポーネントのロード時にテーブル アダプタを割り当てるには
-
[View] メニューで [Code] をクリックします。
-
[Class Name] の一覧で [(CustomerProfile Events)] を選択し、[Method Name] の一覧で [Load] を選択します。
- テーブル アダプタを割り当てるコードを追加します。
Private Sub CustomerProfile_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
Me.LoanDataTableAdapter.Fill( _
Me.VSTO2005DebtConsolidationDataSet.LoanData)
Me.NewCustomersTableAdapter.Fill( _
Me.VSTO2005DebtConsolidationDataSet.NewCustomers)
End Sub
DataGridView の行がクリックされたときに Include フィールドの表示をオン/オフに切り替えるには
-
[Class Name] の一覧で [LoanDataDataGridView] を選択し、[Method Name] の一覧で [CellContentClick] を選択します。
- 行がクリックされたときに Include フィールドの表示をオン/オフに切り替えるコードを追加します。
Private Sub LoanDataDataGridView_CellContentClick( _
ByVal sender As Object, ByVal e As _
System.Windows.Forms.DataGridViewCellEventArgs) _
Handles LoanDataDataGridView.CellContentClick
Try
Dim r As Integer = Me.LoanDataDataGridView.CurrentCell.RowIndex
Dim rv As DataRowView = DirectCast( _
Me.LoanDataDataGridView.Rows(r).DataBoundItem, DataRowView)
rv("Include") = Not (rv("Include"))
rv.EndEdit()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
プレースホルダ ラベルをアクション ペインで非表示にするには
-
[Solution Explorer] で [ThisWorkbook.vb] を右クリックし、[View Code] をクリックします。
- ThisWorkbook_Startup プロシージャで、アクション ペインでラベルを定義、配置している以下の 3 行をコメント アウトします。
'Dim labelControl As New Label
'labelControl.Text = "TO DO: Add Controls Here"
'Me.ActionsPane.Controls.Add(labelControl)
チェックポイント
-
[File] メニューで [Save All] をクリックします。
-
[Debug] メニューで [Start] をクリックし、プロジェクトをビルドして、実行します。Debt Consolidation ワークブックが Excel で開かれます。
- データ ソースから取得したレコードが、図 10 に示すようにアクション ペインに表示されます。1 件目のレコードは、Nancy Davolio という名前の顧客です。
図 10. 連結データを表示したアクション ペイン
-
DataGridView コントロールで 1 つまたは複数の行を選択し、チェック ボックスをオンかオフにします。。
-
ProposedRate を変更します。
-
BindingNavigator コントロール上で [Move next] をクリックして次のレコードに移動します。次のレコードは、Andrew Fuller という顧客のデータに対応しています。
-
BindingNavigator コントロール上で [Move previous] をクリックして直前のデータに移動します。Nancy Davolio のデータが表示されます。このとき、DataGridView および NumericUpDown 連結コントロールに対して行った変更がリストアされていることに注目してください (つまり、それまで変更はインメモリ データセットに保持されていました)。
- 変更を保存せずにワークブックを閉じて、Excel を終了します。
アクション ペインの変更に応じて名前付き範囲を更新するには
-
[Solution Explorer] で [CustomerProfile.vb] を右クリックし、ショートカット メニューで [View Code] をクリックします。
-
NumericUpDown 連結コントロール内の値に変化があったときに、RateChanged という名前のイベントを発生させるコードを CustomerProfile クラスに追加します。
Public Event RateChanged(ByVal NewRate As Double)
Private Sub ProposedRateNumericUpDown_ValueChanged( _
ByVal sender As Object, ByVal e As System.EventArgs) _
Handles ProposedRateNumericUpDown.ValueChanged
RaiseEvent RateChanged(ProposedRateNumericUpDown.Value * 0.01)
End Sub
-
[Solution Explorer] で [Thisworkbook.vb] を右クリックし、ショートカット メニューで [View Code] をクリックします。
-
profileControl コントロールの RateChanged イベントに、InterestRate 名前付き範囲の Sheet2 ワークシートに新しいレートを追加するイベント ハンドラを追加します。
Private Sub profileControl_RateChanged(ByVal NewRate As Double) _
Handles profileControl.RateChanged
Globals.Sheet2.InterestRate.Value2 = NewRate
End Sub
Excel ListObject をデータ ソースに連結するには
-
[Solution Explorer] で [CustomerProfile.vb] を右クリックし、ショートカット メニューで [View Code] をクリックします。
-
CustomerProfile コントロールが現在のデータ ソースに使用中の BindingSource を返す、「Connector」という名前の読み取り専用プロパティを新規に追加します。
Public ReadOnly Property Connector() As BindingSource
Get
Return Me.NewCustomersBindingSource
End Get
End Property
-
[Solution Explorer] で [Sheet2.vb] を右クリックし、ショートカット メニューで [View Designer] をクリックします。
-
[Data] メニューで [Microsoft Office Excel Data]、[List] をポイントし、[Create List] をクリックします。[Create List] ダイアログ ボックスが表示されます。
- 範囲として「=A12:F13」と入力し、[My list has headers] を選択し、[OK] をクリックします。
-
[Data] メニューで [Microsoft Office Excel Data]、[Filter] をポイントし、[AutoFilter] をクリックして一覧から Filter コントロールを削除します。
-
[Data] メニューで [Microsoft Office Excel Data]、[List] をポイントし、[Hide Border of Inactive Lists] をクリックします。
-
[Solution Explorer] で [ThisWorkbook.vb] を右クリックし、続いて View Code をクリックします。
- 次のコードを ThisWorkbook_Startup に追加します。
With Globals.Sheet2.List1
.AutoSetDataBoundColumnHeaders = False
.DataBoundFormat = Excel.XlRangeAutoFormat.xlRangeAutoFormatNone
.SetDataBinding(profileControl.Connector, _
"FK_LoanData_NewCustomers")
End With
上記のコードにより、Sheet2 上の ListObject を、アクション ペイン内の CustomerProfile コントロールが使用しているものと同じ BindingSource に連結しますが、ListObject の書式設定は変更されません。
チェックポイント
-
[File] メニューで [Save All] をクリックします。
-
[Debug] メニューで [Start] をクリックし、プロジェクトをビルドして、実行します。「Debt Consolidation」というタイトルのワークブックが Excel で開かれます。
- このとき、図 11 に示すように、アクション ペイン内のデータが CallSheet ワークシートに表示されます。
-
ProposedRate を変更し、変更内容がワークシート上の InterestRate 名前付き範囲内に反映されることを確認してください。
-
DataGridView の Include 列のチェック ボックスをオンかオフにして、変更内容がワークシート上の ListObject コントロールに反映されることを確認してください。
- 変更を保存せずにワークブックを閉じて、Excel を終了します。
図 11. ワークシートとアクション ペインにデータが表示されたところ (クリックすると拡大表示されます)
まとめ
全演習を終了し、Microsoft Visual Studio 2005 Tools for the Microsoft Office System Beta 2 および Microsoft Office Excel 2003 を使用して、資産分配アプリケーションと負債整理アプリケーションを作成する方法を学習しました。また、Windows Forms コントロール、ホスト コントロール、アクション ペイン、データ連結についても学習しました。
追加資料
追加情報として、以下の資料を参照してください。