2014年12月14日日曜日

Excel 2013:ActiveXコントロールが認識されなくなった件

今月のOfficeのセキュリティ更新後にActiveXコントロールが認識されなくなった件です。

本日実施した Windows Update 後から Excel 2010 の VBA が動作しなくなった - マイクロソフト コミュニティ

今のところ2010では直接確認していないのですが、2013・2007では同様のケースを確認できました。
下図は2013でシート上に配置したコマンドボタンです。


別のPCでこのシートを開いてコマンドボタンをクリックしたところ、2010(セキュリティ更新済み)では問題ありませんでした。一方、2013では下図のようになりました。デザインモードになっているわけではありません。


カーソルの形が変わるだけで押し下げすることはできません。CommandButton1_Clickプロシージャも実行されません。

下図は元のPC、別のPCそれぞれでデザインモードにしてみたところです。別のPCの方ではプロパティウィンドウにCommandButton1が表示されません。

シートを作成した元のPC
 
別のPC
当然ながらコードからCommandButton1を参照すればエラーになります。また、この状態から新たにActiveXコントロールを挿入しようとしてもエラーになりました。


なお図の通り元のPCは8.1、別のPCは7でした。Windowsのバージョンの違いが関係あるのかはわかりません。

この不具合を起こしているセキュリティ更新は特定されており、アンイストールすれば解決すると言われています。しかしセキュリティ更新なので削除はやめた方がいいように思います。
もう一つの回避策として冒頭のリンク先でも紹介されている、MSForms.exdを削除する方法を試してみました。


このファイルは、削除してもActiveXコントロールを含むシートを開けば自動的に再作成されます。

ところがこれだけでは解決しませんでした。それどころか2013で再作成されたMSForms.exdだと、同じPC上でなんともなかった2010でも同様の不具合が発生するようになりました。
うっかりしてたのですが、2013はWindows Updateとは別に更新が行われます。確認したところ元のPCも別のPCも最新のバージョンになっていませんでした。手動で更新を実行しました。


更新後、再度MSForms.exdを削除・再作成したところ不具合は起きなくなりました。
逆に、元のPCで不具合が発生するようになりました。こちらもMSForms.exdを削除・再作成したら直りました。要は更新前のバージョンで作成されたMSForms.exdが問題を起こすということでしょうか。

公式でもこの問題は認識されていて、対応中のようです。

Office 2010 ActiveX Disabled - December Update KB2553154 - TechNet Blogs

早く修正パッチが出るといいんですが。

2 件のコメント:

匿名 さんのコメント...

 私も2013でActiveXコントロールが認識されなくなりました。2003形式保存の元のファイルが残っていたので、そちらを起動してみたらちゃんと認識されていました。
 また、最初2003で組み、その後2013で何度もVBAを組み直したものは動作しているようです。全部試したわけではありませんが・・・。
 事情がやぅ分からなかったので、コントロールを一度消してまた作り関連づけをやり直してしまいました。

bardiel さんのコメント...

コメントありがとうございます。職場で起きた同様のケースはすべてMSForms.exdの削除で解決したのですが、ネットで見ているとそれでもダメだという方もいました。よくわからない部分がありますね。

コメントを投稿