作成日 2008/10/26
最終更新日 2008/10/26
自作のエクセルVBA関数をAppleScriptやC言語から呼ぶ
自作のエクセルVBA関数をAppleScriptやC言語から呼び出す方法を紹介します。
これを使うと、AppleScriptやC言語側(Carbon
Application)で何かイベントが発生したときに、自作のエクセルVBA関数を実行させるといったことができるような気がします。
参考文献の1と2番に書かれている。
Subも呼び出せるようだが、ここでは自作のFunctionについて実際にやってみた。
■やり方:
自作のFunctionやSubが入っているエクセルブック(ファイル)を開いている状態にする(マクロは有効の状態としてください)。
AppleScriptを実行する。
■実際にやってみた:
図1 自作のFunction
図2 戻り値を返せるか確認
図3 引数を設定できるか確認
■確認環境:
OS:Mac
OS X Ver.10.3.9
Excel:Microsoft Excel X for mac
(Ver.10.1.9)
AppleScript:AppleScript 1.9.3
AppleScript開発環境:スクリプトエディタ2.0(V43.1)
■注意:
多分、標準モジュールに定義されたFunction、Subである必要があると思います。クラスモジュールとかは無理。
■わからなかったこと:
- メソッドの引数で値を返す(ByRefにしてOut引数にする)方法。
⇒もしかしたら出来ないかもしれない。
どこかのセルに値を入れて渡した方が確実かもしれない。
- 引数の型を配列にできるか?
⇒出来ないかもしれない。AppleScriptのリスト({2,4}のような形式)を入れてみたけど駄目だった。
どこかのセルに値を入れて渡した方が確実かもしれない。
- 例外処理(VBA内でError関数やErr.Raiseを呼び出せるか?)
⇒出来なかった。戻り値で返すか(Microsoftのページではこの方法が紹介されている)か、どこかのセルに値を入れるなりして対応するのが確実かもしれない。
C言語からAppleScriptを使用できるので、それを経由して行うことが出来る。
■やり方:
自作のFunctionやSubが入っているエクセルブック(ファイル)を開いている状態にする。
C言語のプログラム(Carbon
Application)を実行する。
■実際にやってみた:
図4 自作のFunction
(クリックすると拡大して表示します)
図5 CarbonApplicationで戻り値を返せるか確認
(クリックすると拡大して表示します)
ソース全文を見たい方はダウンロードして見てください
図6 CarbonApplicationで引数を設定できるか確認
(クリックすると拡大して表示します)
ソース全文を見たい方はダウンロードして見てください
■確認環境:
OS:Mac OS X
Ver.10.3.9
Excel:Microsoft Excel X for mac
(Ver.10.1.9)
AppleScript:AppleScript 1.9.3
Carbon Application開発環境:Xcode
1.1
■注意、わからなかったこと:
文字列(ファイル名や引数の値)に日本語をうまく扱うことが出来なかったです。文字コードの設定を正しくやれば出来そうな気がしますが、面倒なのでやってません。
それ以外はAppleScriptのときと同じです。
実際に試して見たい人、CarbonApplicationのサンプルの全文を見たい人は以下からダウンロードできます。
CallVBAFunctionSample.zip(158kB)
このページを作成するのに参考にしたページです。
このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方は
メールをお願いします。
Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft
Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS
X 、AppleScript、CarbonLib は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。
このホームページの作成者はこれらの会社とはいっさい関係がありません。