- ベストアンサー
アクセス マクロはVBAより動作が遅くなりやすい?
お世話になります。 現在マクロを中心に開発してきました。 処理速度を向上させるため、VBAにしたほうがいいのでは?という意見が社内より出ましたが根拠が不明な為、お伺いします。 1.マクロで開発すると実行速度が遅くなりやすいというようなことはありますでしょうか?単純に比較はできないかもしれませんが。。 2.マクロで開発したものをVBAに変換したら、処理速度が向上するケースがあるとすれば、どのようなケースでしょうか?目安となる判断基準やご経験でも構いませんので、ご存知でしたら教えてください。 以上、宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >参考にされたWebサイトを教えていただけませんか? たぶん、ご存知です。 Access クラブ http://www.accessclub.jp/ ここのクイズなんかに、マクロのコンパイルの話を読んだことがあります。 そちらの住人さんは、また、別のことをおっしゃるかもしれませんが。 コンパイル型(バイナリ)は速いというのは当たり前なのですが、ところが、VBA自体は、一見されていないようでいて、コンパイルはされている、ということで、以下の文章に行き当たりました。 もうひとつは、おそろしく分かりにくい文章です。 MS サポート http://support.microsoft.com/kb/209176/ja 以下の人が、上の文章をリライトしています。 http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips13.htm もうひとつは、これは、古い書籍で、Office のプログラマーズガイドに出てくる、「VBAのオプティマイズ(最適化)」というルールが出てきます。 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/modcore/html/deconOptimizingVBACode.asp この項目を読んでいると、VBAを速くするために、いろいろ工夫しなければならないことが分かります。そして、インターフェイスを通して、アプリケーションを動かすようにそのつど翻訳している、ということが分かります。コーディングにも依存しているということが分かりますね。 私は、あまり断定的にはいえませんが、私個人の実感としては、やはり、VBAは、遅いような気がしているのです。それは、VBEのモジュールというのは、本体とは違う、別のオブジェクトなのです。(つまり、VBE自体の使い方というのも工夫が必要になることがあります。)そこから、また、インターフェイスを通しているというので、このような手間は遅いのではないだろうか、という印象を持っているのです。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 はっきりと実証があるわけではなくて、今は、単に、今まで読んだ本やWebサイトから考えた理屈だけです。 >マクロで開発すると実行速度が遅くなりやすいというようなことはありますでしょうか?単純に比較はできないかもしれませんが。 現行では、マクロのほうが、速いはずです。VBAは、テキストコードを一旦、インターフェイスで、読み込んで、p-code という特殊なバイナリファイルにしていますが、マクロのほうは、実行する前に、すでにバイナリに変換しています。少なくとも、その分だけ違うはずです。 しかし、また実際に、VBAでなくては出来ないものもあるはずです。 そこらは使い分けていくしかないのですが、VBAというのは、呼び出して使う分で、また、ロスが生じているように思っています。
お礼
早速のご回答ありがとうございます!! てっきりVBAの方が早いのかと思いました。難しいほうが高性能というか、そういう先入観でおりましたので。 ちなみに可能であれば、参考にされたWebサイトを教えていただけませんか? 宜しくお願い致します。
お礼
丁寧なご回答ありがとうございます! 頂いた情報参考に改良していきたいとおもいます! また機会があれば宜しくお願い致します。