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)

ページのトップに戻る