なんとなく自己解決できてしまったのですが、
1.何が原因であったのか
2.対処は正しかったのか
識者の方ご教示お願いいたします。
まずは現象から
VBAを組んで97-2003形式(.xls)で保存した2つのブックがあります。元はXP端末でExcel2007で作成・保存したものです。
片方は、メニューというかランチャー的なもので、フォームで作ったボタンを押下するとボタン表記に応じた別のブックをオープン/ランするものです。
片方は、オープンされると、別のcsvファイルを読み込んで加工してまた別のエクセルブックに書き出し自分でクローズするバッチのようなブックです。
両方のブックは、ここ半年くらい月初に起動し運用してきました。主にXPでExcel2007端末でです。
4月も月初(日付は不明)に起動し、特に問題はなかったようです。
5月はGWもあって5月15日に起動したのですが、メニューのブックは読み込み・VBA起動には問題なかったのですが、
フォームのボタンを押下してバッチのブックをオープンしたところ表題のメッセージが表示され、もとのメニューブックの
Application.Run "バッチのブック!ブックの関数名"で止まってしまいました。
正確なメッセージは
------------------------
実行時エラー '1004'
マクロ'バッチ.xls!Macro1'を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。
------------------------
です。もちろん、メニューの方もバッチの方もVBAのソースは読めます。
さて、対処ですが
まずは端末の問題かと思い、XP-Excel2010端末で起動したところ無事処理が終了しました。
しかし別の(私の)XP-Excel2007端末ではやはり上記メッセージが表示されデバッグモードに入ります。
これは5月のパッチで.xls形式に何かあったのかも?と想像し、.xlsm形式で保存し直そうとしたところ、フォームを使ったメニューブックの方は素直に「名前を変えて保存」できたのに、バッチブックの方は次のメッセージが表示され保存できませんでした。
「保存中にエラーが検出されました。幾つかの機能を削除または修復することにより、ファイルを保存できる場合があります。」
これについてつらつら調べていたところ、某掲示板に次の4月のパッチが影響していると記載があったので
[MS12-027] MSCOMCTL.OCX の脆弱性により、リモートでコードが実行される (2012 年 4 月 10 日)
http://support.microsoft.com/kb/2664258/
記事の通り.exdファイルを私のXP-Excel2007端末で検索し、全て削除してみると、無事バッチブックも.xlsm形式で保存できました。
マクロ上のオープンするブック名も.xlsmに書き換え起動してみると、無事問題なく動きました。
さて、ここからが首をひねるところなのですが、なんとなく上記MS12-027の表記が臭かったので、私の、.exdファイルを削除したXP-Excel2007端末で、元々の.xls形式のメニューブックから.xls形式のバッチブックをrunさせてみたところ、なんの問題もなく起動してしまいました。
と言うことは、状況から見てもともと.exdファイルを削除してやれば問題は解決した?
果たしてこの対処で問題なかったのか、原因は4月のパッチにあったのか、識者の方よろしくお願いします。