作成日 2004/7/17
最終更新日 2011/1/24

Microsoft Excel X for MacのVBAについて

 エクセルのマクロやアドインを作る過程で得た知識の紹介です。VBAを使ってプログラミングするとき(特にMacで)に参考にしてください。


1.はじめに
2.Windows版VBAとMac版VBAの相違点
3.バグ・不具合(?)関連の情報
4.VBAのバージョンが古い
5.オブジェクト指向関連(?)の情報
6.ファイル・フォルダ操作関連
7.その他の情報


1.はじめに

Macで動くマクロやアドインはなぜ少ないのか?(Windows用はたくさんあるのに。)
…Macで動くマクロやアドインが少ない理由って何なのでしょうか?

このコンテンツの開設理由
…なんとなく開設しました。この「なんとなく」は、重要だね。


2.Windows版VBAとMac版VBAの相違点

  1. モジュールのインポートとエクスポートが出来ない?
    …Mac版VBAだとモジュールのインポート・エクスポートのメニューがないのでできないと思ってしまうが・・・。実は出来るんです。

  2. ツールボックスの何もないところで右クリックしても何も起こらない。 [ツール]メニューに[その他のコントロール...]がない。
    …Windows版VBAで動作するプログラムをMac版VBAでも動作させたいときは非常に重要。設計段階から意識しないと移植ができなくなります。

  3. ファイルパスのフォルダの区切り記号が違う。
    …ちょっとしたことですが、これで動作しなくなることがあります。


3.バグ・不具合(?)関連の情報

  1. Mac OS Xで作ったテキストファイルを読込む時は注意が必要
    …MacOS9形式、ですか・・・。なぜ?

  2. 文字化けする
    …フォーム上の日本語文字列が文字化けする問題です。回避策も載せています。

  3. マウスダウンイベント等でバグがある
    …マウスダウンイベント等にてマウスの座標が正しく取得できないバグの情報です。

  4. Repaintメソッドが効かない
    …さ、再描画ができない・・・。回避策も載せていますが、多分使えません(動作が遅くなるから)。

  5. KeyDownイベントでShift引数が常に0?
    …KeyDownイベントのShift引数が常に0となるバグがあります。回避策も載せています。

  6. ユーザーフォームの[閉じる]ボタンが押せなくなる事がある
    …回避策を必ず実施してください。でないと画面が閉じられなくなります。

  7. ユーザーフォーム上ではエクセルとは、ショートカットキーや複数選択するときに使用するキーが異なる
    …一体なぜ・・・?使うボタンが違うだけで、動作はちゃんとするので、作成するソフトウェアのマニュアルにしっかり記載すればOKでしょう。

  8. ユーザフォームのImageにjpg画像を表示できない
    …VBAのバグと言うよりもヘルプのバグと言う気がするが・・・。回避策を載せているので参考にしてください。

  9. Shell関数の第一引数に実行プログラムのパスを指定してプログラムを起動できない
    …回避策を載せていますので、参考にしてください。


4.VBAのバージョンが古い

VBAのバージョンが古い
…Excel2002(Windows版)と比べると・・・。

  1. AddressOf演算子がない
    …VBAからCarbonLibを使用するときにおもいっきり制限がかかる・・・。

  2. Enumできない
    …あると便利なEnum。Macでは使えません・・・。まあ、そんなに問題にはならないかなぁ。

  3. クラスモジュールでイベント作れない
    …オブジェクト指向設計するとイベントが作れないのはつらい。

  4. Implementsできない
    …オブジェクト指向設計すると結構つらい。

  5. Split関数がない。(文字列操作関数が少ない。)
    …互換性を考えるなら自作するしかありません。VBA6で追加された関数をまとめてますので、参考にしてください。

  6. Friendが使えない
    …Friendって使ったことありませんが。使えないということで。

※VBA6.0の機能のうちVBA5.0から拡張した点が載っているページを見つけました。
(Microsoftのページです。クリックすると別ウィンドウで表示します。)


5.オブジェクト指向関連(?)の情報

  1. 引数にオブジェクト型を指定したときのByValとByRefについて
    …VBAでオブジェクト指向プログラミングをするときは必ず理解しておく必要があります。

  2. 動的配列と言えば、ReDim?それともCollection?
    …動的配列についてのノウハウ。Collectionはかなり便利です。

  3. フォーム上のコントロールにアクセスするとき、「Me」って使ってる?
    …これもVBAでオブジェクト指向プログラミングをするときは必ず理解しておく必要があります。。


6.ファイル・フォルダ操作関連

  1. フォルダ選択ダイアログボックスを表示するには
    …Windowsの場合はWin32APIを、Macの場合はAppleScriptを使ってフォルダ選択ダイアログボックスを表示します。

  2. フォルダウィンドウを開く方法
    …Windowsの場合はShell関数にてExplorerを起動、Macの場合はAppleScriptを使ってフォルダウィンドウを表示します。

  3. フォルダorファイルを選択状態にしてフォルダウィンドウを開く方法
    …Windowsの場合はShell関数にてExplorerを起動、Macの場合はAppleScriptを使って行います。

  4. ファイルを保存した場合、TypeとCreatorはどうなるのかを調べた
    …Windowsユーザは知らないと思いますが、MacにはTypeとCreatorというものがあるんです。

  5. ファイルのTypeとCreatorの取得と変更を行う
    …TypeとCreatorの変更方法の説明です。


7.その他の情報

  1. 現在時刻をミリ秒まで取得する
    …ミリ秒は処理時間を計測したいときやログを出力するときに重宝します。

  2. オブジェクトブラウザにメソッドの説明文を載せる
    …あると、便利。それくらい。

  3. エクセルのコマンドバーに[Microsoft 数式エディタ]ボタンを追加する
    …Wordではコマンドバーに[Microsoft 数式エディタ]ボタンを追加できますが、Excelでは出来ません。それを強引に行う方法を説明。

      [Excel2003]アドインを使用して数式を入力すると文字列が重なるときがある問題について
      …強引に行った結果、バグが・・・。そのバグと回避方法の説明です。

  4. 自作のエクセルVBA関数をAppleScriptやC言語から呼ぶ
    …AppleScriptユーザは必見かも。

  5. CSVファイルを読み込む方法
    …CSVといってもいろいろあり意外と難しいので、解析の行い方を説明しています。


Prev Up Next  Top

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

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

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