dポイントプレゼントキャンペーン実施中!

以前は良かったExcel2003で作成したマクロプログラムを1部修正して実行時に1回オートメーションエラーがでたら、修正部を元に戻してもオートメーションエラーがでるようになってしまいました。
このプログラムをExcel2007の他のPCで実行してもエラーはでません。
どのようにしたら、オートメーションエラーはでないようにできるでしょうか。

A 回答 (2件)

>単純に何で元に戻してもだめなのか、又、何でこのファイルを他のPCにコピーしてやれば、実行できるのでしょうか?



上位バージョンで使ったものは、下位バージョンに回しても、そのままの使えないことがあります。ふつうは、下位バージョンでも、外部のライブラリなどを更新していたりするのですが、必ずしもしていないことがあります。もちろん、外部ライブラリが壊れているということもあります。

解決のためにいくつかの方法をするしかないわけで、同じ経験がある人がピタリと当たることがありますが、こちらは、今のところ、何が問題なのか、それを特定する情報は出ていません。オートメーション・オブジェクトを生成するのは、1つだけではありません。本当に数多くあります。

可能性のある方法いくつか試してみていただくしかないのであって、結果オーライだと思います。

オートメーション・エラーというなら、Active Xやいくつかの外部タイプライブラリのはずです。

どこかの行で黄色く反転して、マクロが止まっているなら分かりやすいです。しかし、ランタイムエラーの場合は、プロシージャを直接触れるなら、それらを適当な行で、[ブレイクポイント]などを付けて、どこでエラーが発生するか、検証して行けば、通常、発生しているか見つかるはずです。仮に、数万行でも、上記のようなデバッグのテクニックを使えばそんなに大変なことではありません。

ただし、プロテクトされているなら、製作者にリクエストして、PCのメインテナンスを含めてみてもらわないといけないかもしれません。さっぱり分からないというなら、ベテランの人に頼むしかありません。

もともと、Excel 2003で動いていたというなら、VBAの内容を完全な最初の段階に戻せば動くはずだ、と考えるのは自然ではないでしょうか。前回、そういうことを書いたつもりなのですが……。それに対する反応はされませんでしたね。この考え方は間違っているとお思いでしょうか?

他にも、Office を修復してみるとか。Excelの場合は、ヘルプからアプリケーションの修復をしてみるとか。

いくつか実施してみてください。ただ、ピタリと当ててほしいというなら、私のほうからはもう回答できませんが、他の回答者のためにも、もう少し情報を出さないと難しいと思います。

ただ、外部ライブラリが壊れている場合は、VBAだけの知識では解決は不可能です。
    • good
    • 1

コードなしで、その原因を探すというと、かなり回答としては大雑把な範囲になると思います。

かといって、細かなコードから判断するのも難しいですが。

まず基本的には、VBAプロジェクト自体は、上位互換はあっても、下位互換は期待しないほうがよいです。その場合は、今までのものは使えませんから、一端、マクロを削除して、マクロなしで保存して終了し、次にテキストベースでインポートするとか、貼り付けるなどして、やり直さないといけません。

オートメーション・エラーは、外部オブジェクト、つまり、dll などを利用している、ということですから、そのままでは解決しないこともあります。外部オブジェクトの中に不可逆のものがありますから、中にはOSの再インスール以外戻らないものもあります。

外部オブジェクトが壊れているとなると、その使っているプログラムを探し、Dependency Walker というプログラムを使って、元のエラーを出しているところを探さなくてはならないこともあります。このようなことになっていないことを望みます。

この回答への補足

早速の回答ありがとうございます。
確かにご指摘のように、コードを全部しめさなければ分からないのかもしれませんが、たいへんですし、単純に何で元に戻してもだめなのか、又、何でこのファイルを他のPCにコピーしてやれば、実行できるのでしょうか?
初心者ですので、教えて下さい。

補足日時:2010/12/19 21:05
    • good
    • 1

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