ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


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);
}
//-------------------------------------------------------------------



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.