2011年10月6日木曜日

Mac版Excel 2011 マクロで共有ライブラリ( dylib )関数を利用する

Mac版Excel 2008では VBA が使えなくなったようですが、現時点で最新版のExcel 2011 では利用できます。Windows 版との互換性もありそうです。

マクロの互換性の問題になりそうなのは、Windows版で WIN32 API やDLLに含まれる関数を利用しているケースです。WIN32 API は Mac では利用できないため、代替となる機能を Mac 環境で見つけなければ解決できません。 DLL 関数を利用しているのであれば、DLL を共有ライブラリ dylib に書き換えることで解決できるかもしれません。

Webで dylib をExcelから利用する方法を検索してみましたが、これだというものは見つかりませんでした。同じように dylib を呼び出す方法についての質問で、"マイクロソフトではできると言っている" という部分がありました。そこで、試しに Windows版DLLとまったく同じように呼び出してみたところ、確かに、呼び出すことができました。


dylib 内の エクスポートされている 関数の呼び出し方法:

1. Window版のDLL関数とまったく同じように dylib関数を declare 文で宣言

  Declare Function 関数名 Lib "dylibパス" (引数) As 戻り値型
 
  Declare Function myfunc lib "/usr/local/lib/libsample.dylib" () As Integer


2. 宣言した関数をマクロで利用 ( 宣言された関数 mfunc はマクロで利用できるようになっています )

Excel で利用する前に、C/C++プログラムからdylib 関数 を間違えなく呼び出せることを確認しておく方がいいかもしれません。