はじめに
以前の記事「高性能な伝票入力フォームを持った.NETアプリケーションを作る」では、MultiRow for Windows Forms 5.0Jを使って、簡単な明細書を作成するアプリケーションを作ってみました。
今回作成するのは、同じような形式の明細書を作成するアプリケーションですが、新たに印刷機能とExcelのブックに入力データを保存する機能を加えたアプリケーションです。また、MultiRow for Windows Forms 5.0Jが6.0Jにバージョンアップされたことで、ヘッダ・フッタセクションへのデータ入力機能が可能になったので、この機能を使ってサマリ型セルを使ったセル値の自動集計機能も加えてみました。
対象読者
Visual Basic/Visual C# 2005・2008を使ってプログラムを作ったことのある人。
必要な環境
Visual Basic 2005・2008、Visual Studio 2005・2008、Excel VBAでプログラムが作れる環境。なお、Visual StudioのExpress Editonでは、MultiRowのデザイナは使用できません。本プログラムはWindows Vista(SP2)上で動作するVisual Studio 2008を使用して作成し、動作確認を行っています。
また、Excelのオブジェクトおよびそのメンバメソッド・プロパティを使用するので、今回はVisual Basicでの作成のみになります。コードでVBAの構文を利用するとなると、どうしてもC#では使い勝手がかなり悪くなるので、C#でのアプリケーション作成は行いません。ご了承ください。
プログラム実行時の注意事項
MultiRow for Windows Forms 6.0Jを使って作成したアプリケーションを配布する場合、MultiRow for Windows Forms 6.0Jのアセンブリファイルを添付する必要があります。これは、Common Language RuntimeのDLLをアプリケーションと一緒に配布するのと同じです。
本記事のサンプルアプリケーションを正常に動作させるためには、次のファイルをインストールする必要があります。
ファイル名 | 説明 |
---|---|
GrapeCity.Framework.MultiRow.v21.dll | 共通フレームワーク |
GrapeCity.Win.MultiRow.v60.dll | グリッド コンポーネント |
.\ja\GrapeCity.Framework.MultiRow.v21.resources.dll | 日本語リソース |
.\ja\GrapeCity.Win.MultiRow.v60.resources.dll | 日本語リソース |
これらのファイルを、プログラムを実行するフォルダへ、フォルダ構成を変えずに格納します。.NET Framework 2.0から追加されたクラスやメンバを使用しているので、バージョン2.0以降の.NET Frameworkがインストールされていることが必須条件です。
Excel(バージョン2003以降)がインストールされていないコンピュータでは、プログラムを実行させることができないので注意してください。
コンポーネントのインストール
はじめてMultiRow for Windows Forms 6.0Jを使用する方は、Visual Studio、Visual Basic、Visual C#の開発環境にMultiRow for Windows Forms 6.0Jをインストールする必要があります。
インストーラは、グレープシティのWebページからダウンロードできます。「トライアル版お申し込みフォーム」に必要事項を入力して登録すると、添付トライアルライセンスキーファイルとダウンロードサイトを記載したE-Mailが送られてくるので、ここからダウンロードします。制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。
コントロールの追加
MultiRow for Windows Forms 6.0Jをインストールしたら、ツールボックスに専用のタブを作成し、使用するコンポーネントを追加します。追加するコンポーネントは、「.NET Frameworkコントロール」の名前空間が「GrapeCity.Win.MultiRow」で、アセンブリ名が「GrapeCity.Win.MultiRow.v60(6.0.yyyy.mmdd)」で始まるコンポーネント「GcMultiRow」です。
なお、既に同じ名前空間とアセンブリ名のコンポーネントにチェックが付いていますが、これらのコントロールはMultiRowコンポーネントのデザイナで使用するコントロールなので、チェックは外さないでください。