|
|
||||
Tips > |
|||||
OLE で C++Builder からエクセルにデータ入力 |
更新 : 2009/04/04 |
||||
|
|
||
解説: C++Builder で作成したアプリケーションから Excel や Word を操作したい時があります。 C++Builder の新しいバージョンではそれなりにコンポーネントが用意されているようですが、 今回は、OLE オートメーションを利用して、Excel にデータを入力してみます(C++Builderでエクセルファイルのデータを取得する方法も参考にしてください)。 C++Builder から Excel を操作するには、OlePropertySet, OlePropertyGet, OleFunction を使って、Exec 関数を呼び出します。 Exec 関数を使うことで、プロシージャ、関数、またはプロパティ、Get や Set メソッドを実行できます。これら使用できるプロパティやメソッドは、Excel で詳細を調べてください。 使用例: 今回は、C++Builder から Excel の Book1.xls のセルに数値を代入してみます。 コンポーネントは、 Button を適当に置くだけです。 コーディングは、Button1 の OnClick イベントで、Excel を開いてデータを代入しています。 手順としては、Excel を開き、各コレクションを取得して、Book1.xls や Sheet1 にアクセスして希望の操作を行います。 Excel のプロパティやメソッドを使えば、より複雑な操作も出来ます。挑戦してみてください。 //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { //OLE オートメーションオブジェクトを保持するため Variant で宣言 Variant application, workbooks, workbook, worksheets, worksheet, range; //CreateObject で Excel2000 のオブジェクトを作成 application = Variant::CreateObject("Excel.Application.9"); //Excel を表示 application.OlePropertySet("Visible", (Variant)true); //ワークブックコレクションを取得 workbooks = application.OlePropertyGet("Workbooks"); //Book1.xls を開く workbook = workbooks.OleFunction("Open", (Variant)"D:\\Temp\\Book1.xls"); //ワークシートコレクションを取得 worksheets = workbook.OlePropertyGet("WorkSheets"); //Sheet1 を取得 worksheet = worksheets.OlePropertyGet("Item", (Variant)"Sheet1"); //Range("A1") を取得 range = worksheet.OlePropertyGet("Range", (Variant)"A1"); //Range に 500 を代入する range.OlePropertySet("Value", (Variant)500); } //------------------------------------------------------------------- |