次の方法で共有

Excel2000で作成のマクロ

Anonymous
2013-05-12T03:22:32+00:00

10年ほど前に業者に作成してもらったエクセル2000のマクロで塾の成績管理をしています。

新たにPCを導入し、2013でもそのまま使用したいと思い、

セキュリティーセンターで全てのマクロを実行するようにしてから、

これをエクセル2013で実行するとエクセルがフリーズしてしまいます。

いろいろとVBAに関する変更点があるというのは、ネットで知りましたが、

VBAでコードの書き換えなどをせず、マクロを実行させる方法はないですか?

それとも、下位互換性は切り捨てられているのでしょうか?

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

  1. Anonymous
    2013-05-13T04:47:24+00:00

    提示されたコード自体は問題あるわけがありません。

    ですから複合要因ということでしょう。

    実際にクラッシュが再現できるようなコードが提示が可能であれば良いのですが、なかなか難しいでしょうね。

    で、一般論ですが、プロテクトされたシートが存在する状況でコードを実行するのは無用なトラブルを招きます。

    ですから、コードの入り口でプロテクトを解除し、終了直前にプロテクトをかけるようにするのが普通ではないかと思います。

    また、SelectとかActivateを多用されているようですが、このようなコードを書いてしまうと、実際どのような状況で動いているのかによって動きが変わりますのでトラブルの際解決が難しくなります。(このケースでは直接の関係はありません。またSelectとかActivateはほぼ100%なしでコードは書けます)

    で、互換性はあると申し上げましたが、バージョンが変わると、仕様が厳密になり今まで結果オーライで動いていたものがエラーになるとか、前と異なった動きをするようになるケースはままあります。

    ですから、細かく言うとOfficeのバージョン、OSの各バージョンで実際にうごかしてみるまで本当のところは分かりません。

    申し訳ないですが、実際に症状が再現できるようなサンプルコード(実物の長大なものではなく)が提示されないと余程良く知られている現象でないとそのものずばりの回答は出ないのではないかと思います。

    0 件のコメント コメントはありません

質問作成者が受け入れた回答

  1. Anonymous
    2013-05-13T02:22:49+00:00

    質問者ですが、コードの問題箇所がわかりました。    

     ・・・・・

        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

            Range("A1").Select

            ActiveCell.Next.Activate

       ・・・・

     ActiveCell.Next.Activate

    この行を ' を入れて停止させるとうまく動くようになりました。

    ただほかのマクロでも同じ行があり、そのマクロはうまく動いています。

    右隣のセルをアクティブにするだけなのに、

    エクセル2013自体がフリーズするのかよくわからないです。

    0 件のコメント コメントはありません

質問作成者が受け入れた回答

  1. Anonymous
    2013-05-12T16:09:53+00:00

    『2007以前 ⇒ 2010以降』で、

    API を使っているマクロならば、殆どの API で 定義部分の修正が必要になります。

    (修正していなければエラーになります)

    64bit 版のエクセルを使っている場合です。

    32bit 版ならば API の修正は不要です。

    0 件のコメント コメントはありません

4 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2013-05-12T11:24:24+00:00

    基本的には下位互換性があります。

    一般論ではありますが、Excel97以降で動いているものは基本的には大丈夫なはずです。

    問題があるようなコーディングかどうかはコードを拝見しないと何とも言えませんが、元々問題があるコードであったとか(たまたま結果オーライで動いていたなど)、単にブックがこわれているだけということもありえます。

    0 件のコメント コメントはありません
  2. 削除済み

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報