重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。
現在マクロを中心に開発してきました。
処理速度を向上させるため、VBAにしたほうがいいのでは?という意見が社内より出ましたが根拠が不明な為、お伺いします。

1.マクロで開発すると実行速度が遅くなりやすいというようなことはありますでしょうか?単純に比較はできないかもしれませんが。。

2.マクロで開発したものをVBAに変換したら、処理速度が向上するケースがあるとすれば、どのようなケースでしょうか?目安となる判断基準やご経験でも構いませんので、ご存知でしたら教えてください。

以上、宜しくお願い致します。

A 回答 (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 …

この項目を読んでいると、VBAを速くするために、いろいろ工夫しなければならないことが分かります。そして、インターフェイスを通して、アプリケーションを動かすようにそのつど翻訳している、ということが分かります。コーディングにも依存しているということが分かりますね。

私は、あまり断定的にはいえませんが、私個人の実感としては、やはり、VBAは、遅いような気がしているのです。それは、VBEのモジュールというのは、本体とは違う、別のオブジェクトなのです。(つまり、VBE自体の使い方というのも工夫が必要になることがあります。)そこから、また、インターフェイスを通しているというので、このような手間は遅いのではないだろうか、という印象を持っているのです。
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございます!

頂いた情報参考に改良していきたいとおもいます!

また機会があれば宜しくお願い致します。

お礼日時:2007/06/06 10:24

こんばんは。



はっきりと実証があるわけではなくて、今は、単に、今まで読んだ本やWebサイトから考えた理屈だけです。

>マクロで開発すると実行速度が遅くなりやすいというようなことはありますでしょうか?単純に比較はできないかもしれませんが。

現行では、マクロのほうが、速いはずです。VBAは、テキストコードを一旦、インターフェイスで、読み込んで、p-code という特殊なバイナリファイルにしていますが、マクロのほうは、実行する前に、すでにバイナリに変換しています。少なくとも、その分だけ違うはずです。

しかし、また実際に、VBAでなくては出来ないものもあるはずです。
そこらは使い分けていくしかないのですが、VBAというのは、呼び出して使う分で、また、ロスが生じているように思っています。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます!!
てっきりVBAの方が早いのかと思いました。難しいほうが高性能というか、そういう先入観でおりましたので。
ちなみに可能であれば、参考にされたWebサイトを教えていただけませんか?
宜しくお願い致します。

お礼日時:2007/06/06 09:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!