|
今回は,ほかのプログラムの機能を使うためのCOMオブジェクトを利用して,Microsoft Excelにアクセスするプログラムを作ってみましょう。COMについては,後ほど説明します。
Excelにデータをコピーする「Excelへコピーしよう!」
今回作成するサンプル・プログラムは,StringGridに入力した数値をMicrosoft Excel(以下Excel)のワークシートにコピーする「Excelへコピーしよう!」です。以下のような四つの機能を備えています。
- 任意のExcelワークブックを開く
- 新規でExcelワークブックを作成する
- StringGridコンポーネントに記述した数値をExcelワークシートにコピーする
- Excelだけを終了する
今回のプログラムはExcelがインストールされているパソコンで試してみてください。データのコピーは,Excelのアクティブシート(手前に表示されているワークシート)に実行します。既存のデータがある場合は上書きしてしまいますので注意してください。なお,コピーするのは数値のデータだけです。文字列は0に変換します。
ではさっそく,プログラムを作っていきましょう。手順は覚えていただけましたか? まず画面を作り,次にコードを書くのでしたね。先に画面を完成させることがポイントです。
まずTurbo Delphiを起動します。デスクトップにTurbo Delphiのアイコンがあれば,それをダブルクリックします。なければWindowsのスタートメニューから「すべてのプログラム」-「Borland Developer Studio 2006」-「Turbo Delphi」の順に選択します。
Turbo Delphiの画面が表示されたら,「画面を作る」からはじめます。起動してすぐの状態では画面中央に「ホームページ」が表示されています。画面の右下にある「ツールパレット」のカテゴリから「Delphiプロジェクト」を探して,「+」ボタンで展開しましょう。すると,プログラムの種類を一覧表示します。その中から「VCLフォームアプリケーション」をダブルクリックします。
最初に画面を作る
「Excelへコピーしよう!」の画面は,右と左の二つの部分に分かれています。右側にボタンを並べて機能を実装します。左側は,TStringGridコンポーネントを置いてユーザーの入力を受け付けます。
今回利用するコンポーネントは以下の通りです。
- コンポーネント配置の土台になる「TPanel」コンポーネント
- 入力を受け付ける「TStrigGrid」コンポーネント
- Excelとのやり取りをするための「TExcelApplication」「TExcelWorkbook」「TExcelWorksheet」
- TPanelの上に置く「TButton」コンポーネント(五つ)
これらのコンポーネントは画面右下にある「ツールパレット」から選びます。TPanelとTButtonは「Standard」カテゴリに,TStringGridは「Additional」カテゴリに,TExcelApplication,TExcelWorkbook,TExcelWorksheetは「Servers」カテゴリにそれぞれあります。
すぐに見つからない場合は,「ツールパレット」と書かれた部分をクリックして,キーボードで,コンポーネントの始めの2文字程度を続けて入力してください。すると,その二文字で始まるコンポーネントだけが表示されます。解除する(元の状態に戻す)には,ツールパレット上部にある「ろうと」のようなアイコンが付いたボタンをクリックします。
では,TPanelとTStrigGridコンポーネントを配置しましょう。ツールパレットから「TPanel」を選択して,フォームの右側に配置します。次に,フォームのツールパレットから「TStringGrid」を選択し,そのままフォームの左側をクリックします。
配置すると,コンポーネントの種類名に連番が付いた名前になります。この説明の中では「Panel1」「StringGrid1」など1から順に呼びますが,実際の作業では「Panel2」や,「StringGrid3」となることもありますので,読み替えて作業を進めてください。
これから載せていくコンポーネントを置きやすくするために,プロパティの一部を先に設定しておきます。プロパティは画面左下のオブジェクトインスペクタにある「プロパティ」ページで設定します。
ここで設定するのは「Align」プロパティです。Panel1を選択して,「レイアウト」か「表示」カテゴリにある「Align」を探します。右にある設定欄で「alRight」を選択します。これでPanel1がフォームの右側にピタッとくっつきます。次に,StringGrid1を選択して「Align」プロパティで「alClient」を選択します。StringGrid1が,フォームの残りの部分いっぱいに広がります(図1)。
|
|
図1●TPanelとTStrigGridコンポーネントを配置し,プロパティを設定した後の様子 |
ついでにPanel1の「Caption」プロパティの内容も削除しておきましょう。Panel1を選択して「表示」カテゴリなどにある「Caption」プロパティを選択して,中に記述されている文字を削除します。これらの設定を一度まとめておきます。
コンポーネント名 | カテゴリ名 | プロパティ名 | 設定する値,または操作 |
Panel1 | レイアウト | Align | alRight |
Panel1 | 表示 | Caption | 内容を削除します |
StringGrid1 | レイアウト | Align | alClient |
このままでは小さくて操作しづらいので,フォームやコンポーネントを広げます。パネルはボタンを縦一列に配置するのでボタンが置ける幅にしてください。
サイズを調整したらTButtonコンポーネントを五つ配置します。ツールパレットから「TButton」を選択して,Panel1の上に縦に五つ並べます。次に,Excel関係のコンポーネント「TExcelApplication」「TExcelWorkbook」「TExcelWorkSheet」を配置します。ツールパレットから選択して,適当な場所に配置します。これらはすべて非ビジュアルコンポーネントなので,実行するときには見えません。どこに配置してもいいのですが,操作しやすい場所に置きましょう。
続いて,プロパティを表1のように設定します。コンポーネントを選択しにくい場合は,画面左上の構造ペインからコンポーネント名をクリックすると便利です。ボタンのプロパティは名前にかかわらず,上から順に設定します。
表1●プロパティ設定の一覧コンポーネント名 | カテゴリ名 | プロパティ名 | 設定する値,または操作 |
Form1 | その他 | Name | 「frmExMain」 |
Form1 | 表示 | Caption | 「Excelへコピー」 |
StringGrid1 | その他 | Name | 「strgData」 |
StringGrid1 | その他 | Options | goDrawFocusSelected |
StringGrid1 | その他 | Options | goEditing |
StringGrid1 | その他 | RowCount | 「20」 |
Button1 | その他 | Name | 「btnNew」 |
Button1 | 表示 | Caption | 「新規Excel(&N)」 |
Button1 | 表示 | Width | 「90」 |
Button2 | その他 | Name | 「btnCopy」 |
Button2 | 表示 | Caption | 「Excelへコピー(&C)」 |
Button2 | 表示 | Width | 「90」 |
Button3 | その他 | Name | 「btnsCopy」 |
Button3 | 表示 | Caption | 「選択コピー(&S)」 |
Button3 | 表示 | Width | 「90」 |
Button4 | その他 | Name | 「btnExcelExit」 |
Button4 | 表示 | Caption | 「Excel終了(&E)」 |
Button4 | 表示 | Width | 「90」 |
Button5 | その他 | Name | 「btnExit」 |
Button5 | 表示 | Caption | 「終了(&X)」 |
Button5 | 表示 | Width | 「90」 |
図2のようにコンポーネントを配置できたでしょうか。ここまでできたら,保存しておきましょう。保存はツールバーの「すべて保存」ボタンをクリックします。ユニットは「FormExcelCopy」,プロジェクトは「ExcelCopy」で保存します。
|
|
図2●コンポーネントの配置が終わった状態 |