たまにはプログラムネタを。
最近、Mac版のExcel(2011)でマクロ(VBA)を作っていたんですが、意外なことに、Windows版のVBAでもそのままプログラムが走ることが多いんですね。もっとWindows→Macで書き方がぜんぜん違うのか、と思っていたのですが、そんなこともなくてサクサクと動いてくれていたりするので面食らってしまうくらい。
とはいえ、Windows版では当たり前のようにできていてもMacだとできないこと、というのもあるにはあるんです。そんなのをいくつか紹介していきましょう。
WindowsでできてMacでできないこと、その1。
「ActiveX」は使えない。
「あんたバカかぁ?」とか言われそうですが。だってMacだもん。Windowsじゃないもん。ActiveXなんて使えるわけないじゃんよ。と。
そのとおり。そもそもActiveXはMicrosoftの開発したインターネット関連のコンポーネントなので、Macには(Officeを入れたのにもかかわらず!)入ってないんです。
で、これで何が困るのか、というと・・・。
データベースに繋げないんです。Windows版のマクロで他のデータベースソースに接続する場合、ADOという仕組みを使って接続するのがまぁ一般的というか、それで接続できちゃうんですが、このADO、正式名称が「ActiveX Data Object」、ActiveXを使ったデータベース接続の仕組みだったりするわけです。
それが使えない。データベースに繋げない。データを読めない書けない。困ります。
もちろん、解決策はあるんです。ODBCを使えばいいんです。ま、JDBCでもいいんですが。
どっちでもいいんですが、少なくともODBCのドライバ、Mac版は無償のがないんですよね・・・。もう一つの問題として、ドライバを入れる、という行為をしなくてはいけないんです。WindowsでADOを使えばODBCを使わなくてもデータベースにアクセスできるのにね。
それを言っちゃうと、「FileMakerを使えばいいじゃない」とか言われそうですが(マリー・アントワネットかよ)、Mac版のExcelだけのためにサーバ側のDBとしてFileMakerを選ぶ、というのはあまりにも短絡的すぎます。だったらクライアント側も(MacだけでなくWindowsも)ExcelではなくFileMakerを使う方がどんだけ楽か。
ちなみに、Mac版のExcelの最新版(2016)では、ODBCドライバを入れることなく、MicrosoftのSQLServerと接続ができるようになったようですが、それ以外(OracleとかPostgresとか?)はやっぱりODBCが必要になります。あ、もちろんFileMakerも以前と同様使えますが(笑)