VBA代替プログラム
Microsoftは、Excelのマクロ開発言語であるVisual Basic for Applications(VBA)の使用を非推奨とする予定であることから、近いうちにVBAを使用したExcelファイルは使用できなくなるものと思われます。そうなった時のためにVBAに替わるソフトを作成してみましたので、その概要をご紹介させていただきます。
VBAに代わるExcelソフトの一例として、自動車騒音のパワーレベルを計算するプログラム「自動車騒音パワーレベル」を作成してみました。
試みたのはVBAの機能と互換性が高いプログラムで、OLEオートメーションと呼ばれる方法を使用し、Visual C++で開発したもので、実行ファイル「PowerLevel.exe」と計算のための入出力データを記録するExcelファイル「自動車騒音パワーレベル.xlsx」の2つのファイルで構成されます。
ダウンロード
プログラムを試されたい方は、下記から圧縮ファイルをダウンロードし、解凍してください。
使用方法
使用方法は、次のように簡単です。
①「PowerLebel.exe」を起動すると、ファイル選択ダイアログが表示されるので、Excelファイル「自動車騒音パワーレベル」を選択します。
② Excelファイルが開かれるので、「計算実行」シートを選択します。
③ シートの上半分にある黄色のセルに計算条件を入力した後、「計算実行」ボタンをクリックすると、シートの下半分に自動車騒音のパワーレベルが出力されます。
④ Excelを終了させると、PowerLevel.exeも自動的に終了します。
プログラムの概要
Visual C++によるプログラムの概要ですが、Excelのバージョンが異なっても機能するように、Excelの読み込みや書き込み等のプログラムは、OLEオートメーションで作成しています。
さらに、ExcelのSheetChange イベントやBeforeCloseイベント、Worksheet上に張り付けたCommand ButtonなどのActiveX(OLEObjects)から発生するClickイベントを補足するため、IConnectionPoint Component Object Model(COM)を用いたAppEventListenerクラスおよびActiveXEventListenerクラスを作成しました。
参考資料
プログラムの詳細につきましては、長くなりますのでここでは説明いたしかねます。ご興味のある方は、下記の参考資料をご覧ください。
本プログラムの作成に使用させていただいたコードがそのまま載っています。
① OLE オートメーション
「MFC または#importを使用せずに C++ から Excel を自動化する方法」(Microsoft)
② IConnectionPoint Component Object Model
「HOW TO: Handle Events for Excel byUsing Visual C++ .NET (309301)」(Microsoft)