2,3,4次方程式の解を求める
Copyright 2009年、佐々木芳
はじめに
プログラミングが専門でない技術者にとってもWindowsアプリケーション(マイクロソフトExcelなど)に実装されているOLEオートメーションやVBA(Visual Basic for
Applications)は仕事の効率や信頼性を向上させる上で重要な機能です。特に繰り返し行う定型作業の自動化には有効です。 プログラマにとってはOffice系アプリケーションであろうと技術系のアプリケーション(例えばCAD/CAMなど)であろうとそれらに搭載されているオートメーション機能、VBAはなじみやすいかもしれませんが、プログラミングが専門でない技術者にとってOffice系のアプリケーションでオートメーションやVBAの技術になじむのはなかなか大変だと思います。オートメーションをうまく利用するためには2つの側面を理解する必要があります。1つ目は、オートメーションに対応したVisualBasicなどの言語仕様を理解することです。これはどの用途のアプリケーションでも共通です。2つ目は、各アプリケーションの機能を公開するオブジェクトモデルを理解することです。これはアプリケーションごとにまったく違います。今のところ私の経験したCADアプリケーションではオートメーションを利用するためのドキュメントはあまり充実していませんでした。それらに比べるとマイクロソフトのExcelなどは日本語のドキュメントが付属してそれなりに理解しやすくはなっていますが、Execlを直接使わない場合にはこの膨大な機能のドキュメントをオートメーションの入門書とするのはあまりいい方法ではないでしょう。そこで、技術系向けのオートメーションプログラミングの入門的な例を作ってみようと思い立ち、まず2,3,4次方程式の解を求める電卓風のアプリケーション「Arithmetika」を作りました。今後、このアプリにオートメーションの機能を追加して、オートメーションプログラミングの入門書にしてみようと思います(うまくいけばいいのですが)。ただし、VisualBasicなどの各言語仕様についてはそれぞれの解説書を参考にしてください。(2009/01/10)
オートメーションサーバの機能を追加しました。今までOfficeやCADアプリでオートメーションの機能を使いそれなりの効果が期待できることは経験していましたが、自分の作成したアプリケーションにオートメーション機能を実装したことはありませんでした。そこで今回はVC6+MFCアプリケーションに後からどのようにオートメーション機能を実装したらよいかの実証実験だと思い進めてきました。(2009/04/21)
参考文献
[1] マイクロソフト MSDN ライブラリ 2001 年 10 月リリース
[2] OLEオートメーション プログラマーズ リファレンス(アスキー出版)
[3]ATLインターナル(アスキー出版)
[4]ATL COM プログラミング(翔泳社)
ここから、LZH形式の圧縮ファイルをダウンロードしてください。適当なフォルダに解凍すると以下の2つのファイルができます。
l Setup_Arithmetika.msi
l MSVCP60.DLL
Windows XP以降のOSへのインストールはSetup_Arithmetika.msiを実行するだけです。XP以前のOS(例えばWindows
2000 Professionalなど)へインストールする場合は、最初にMSVCP60.DLLをシステムフォルダにコピーしてからSetup_Arithmetika.msiを実行してください。MSVCP60.DLLはマイクロソフトの再頒布可能ファイルです。
MSVCP60.DLLはマイクロソフトサポートオンライン(http://support.microsoft.com/kb/259403/ja)から取得できます。
インストールが完了すると、スタートメニュとデスクトップへショートカットが作成されます。
スタートメニュまたはデスクトップのショートカットからArithmetikaを起動すると以下のウインドウが現れます。
操作方法の詳細は解説書をご覧ください。
オートメーションサーバの機能を追加しました。これにより他のアプリケーションからArithmetikaの機能が使用できるようになります。特にVisualBasic、VBScript、JScript、VBA(Visual Basic for Applications)の言語を使用すると簡単にArithmetikaを操作できます。Arithmetikaは32ビットアプリケーションですが、COMローカルサーバーなので64ビットアプリケーションからも利用できます。
サンプルプログラムは以下からダウンロード出来ます。
VisualBasic2008ExpressEditionのサンプル1、サンプル2
Excel2000VBAのサンプル
VBScriptのサンプル
Arithmetikaは、64ビット版Windowsでも使えますが、上記サンプルについては説明が必要です。
VisualBasic2008ExpressEditionは、32ビット版Window上では32ビットアプリケーション、64ビットWindows上では64ビットアプリケーションをつくります。上記サンプル1では、フォーム上に32ビット版ActiveXコントロール(*.ocx)を使っているので、64ビット版Windowsではビルドは出来ますが、実行できません。サンプル2は64ビット版Windowsでも動作します。
Excelのサンプルでも32ビット版ActiveXコントロール(*.ocx)を使っているので、32ビット版Excel2010であれば64ビット版Windows上でも動きますが、64ビット版Excel2010上では動作しません。
まずArithmetikaの公開するオブジェクトモデルを説明します。これらのオブジェクトのインタフェースを定義するにあたって『OLEオートメーション プログラマーズ リファレンス(アスキー出版)』の「標準とガイドライン」を参考にしました。以下にArithmetikaの公開するオブジェクトの階層構造を示します。
オブジェクトモデルの詳細は解説書をご覧ください。
V1.0.2 2009,1,10 最初の公開
V1.1.2 2009,4,20 オートメーション機能の追加(ヘルプを追加)
3次方程式の解を求める時にハングしていたのを修正
V1.1.3 2009,5,24 UserEventオブジェクトを追加。