作成日 2008/10/26
最終更新日 2008/10/26

自作のエクセルVBA関数をAppleScriptやC言語から呼ぶ

 自作のエクセルVBA関数をAppleScriptやC言語から呼び出す方法を紹介します。
 これを使うと、AppleScriptやC言語側(Carbon Application)で何かイベントが発生したときに、自作のエクセルVBA関数を実行させるといったことができるような気がします。

1.自作のVBA関数をAppleScriptから呼ぶ
2.自作のVBAの関数をC言語(Carbon Application)から呼ぶ
3.サンプルをダウンロードする
4.参考文献


1.自作のVBA関数をAppleScriptから呼ぶ

 参考文献の1と2番に書かれている。
 Subも呼び出せるようだが、ここでは自作のFunctionについて実際にやってみた。

■やり方:
 自作のFunctionやSubが入っているエクセルブック(ファイル)を開いている状態にする(マクロは有効の状態としてください)。
 AppleScriptを実行する。

■実際にやってみた:
自作のVBAモジュール
図1 自作のFunction

VBAの自作Functionを呼び出すサンプル1
図2 戻り値を返せるか確認

VBAの自作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である必要があると思います。クラスモジュールとかは無理。

■わからなかったこと:
  1. メソッドの引数で値を返す(ByRefにしてOut引数にする)方法。
    ⇒もしかしたら出来ないかもしれない。
     どこかのセルに値を入れて渡した方が確実かもしれない。
  2. 引数の型を配列にできるか?
    ⇒出来ないかもしれない。AppleScriptのリスト({2,4}のような形式)を入れてみたけど駄目だった。
     どこかのセルに値を入れて渡した方が確実かもしれない。
  3. 例外処理(VBA内でError関数やErr.Raiseを呼び出せるか?)
    ⇒出来なかった。戻り値で返すか(Microsoftのページではこの方法が紹介されている)か、どこかのセルに値を入れるなりして対応するのが確実かもしれない。
このページのトップへ

2.自作のVBAの関数をC言語(Carbon Application)から呼ぶ

 C言語からAppleScriptを使用できるので、それを経由して行うことが出来る。

■やり方:
 自作のFunctionやSubが入っているエクセルブック(ファイル)を開いている状態にする。
 C言語のプログラム(Carbon Application)を実行する。

■実際にやってみた:

自作のVBAモジュール
図4 自作のFunction
(クリックすると拡大して表示します)


CarbonApplicationからVBAFunctionを呼ぶ
図5 CarbonApplicationで戻り値を返せるか確認
(クリックすると拡大して表示します)
ソース全文を見たい方はダウンロードして見てください


CarbonApplicationからVBAFunctionを呼ぶ
図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のときと同じです。
このページのトップへ

3.サンプルをダウンロードする

 実際に試して見たい人、CarbonApplicationのサンプルの全文を見たい人は以下からダウンロードできます。

 CallVBAFunctionSample.zip(158kB)
このページのトップへ

4.参考文献

 このページを作成するのに参考にしたページです。

番号

リンク先の名称

リンク先の説明

リンクした日

1 MacXL: VBA Procedures AppleScript から実行する方法 AppleScriptから自作のVBA関数(Function、Sub)を呼ぶ方法とエラー処理について説明しています。
英語のページを機械翻訳したページなので読みにくい。
2008/10/26
2 MacXL: How to Run VBA Procedures from AppleScript 上記のページの元ページ(英語のページです) 2008/10/26
3 Technical Q&A QA1026: Calling AppleScript from an Application  C言語ソースからAppleScriptを呼び出す方法について説明しています(英語のページです) 2008/10/26


Prev Up Next  Top
このページのトップへ


このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X 、AppleScript、CarbonLib は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。