VBA ActiveXコントロールが使えない オブジェクトを挿入できません を解決する方法
VBAでActiveコントロールが使えなかったり、挿入した時に「オブジェクトを挿入できません」と出る場合の解決方法です。
ある日、Excelファイルを開き「マクロ実行のボタン」を押したところ、何も反応せず・・・というか押せない。
むむむ???
おかしいな、こないだまで使えていたのに・・。他のActiveXコントロール系のオブジェクトもまったく反応せず・・・。
仕方なく、再挿入しようと試みると、今度は「オブジェクトを挿入できません」のエラーが!
これはこまった。
というわけで、ここでは VBAでActiveコントロールが使えなかったり、挿入した時に「オブジェクトを挿入できません」と出る場合の解決方法 を紹介します。
ActiveXコントロールの種類
ActiveXコントロールには、これだけの種類があります。
- コマンドボタン
- コンボボックス
- チェックボックス
- リストボックス
- テキストボックス
- スクロールバー
- スピンボタン
- オプションボタン
- ラベル
- イメージ
- トグルボタン
これが全部使えない(削除して再挿入もできない)となると、実に困った!・・・と思って調べていると、どうも 2014/12/10 に実施した Windows Update によるものだとわかりました。マイクロソフトによると ActiveXコントロールの脆弱性により、リモートでコードが実行される ということで今回のパッチが適用されたようです。
Excelバージョン | 更新プログラム |
---|---|
Excel2007 | KB2596927 |
Excel2010 | KB2553154 |
Excel2013 | KB2726958 |
対策方法
まずは Windows Update によってセキュリティ更新プログラムを削除してみましたが、後日の Windows Update で再びこの削除したファイルがインストールされてしまいました。そのため、一時的な対策にしかならないので、この方法はおすすめできません。
マイクロソフトが正式な手順を公開しましたのでそちらを実施しましょう。
・http://support2.microsoft.com/kb/3025036/ja
その方法は、Temp から 「MSForms.exd」 というファイルを消すというものです。
こちらの環境は Windows7, Office2010 です。
「C:/ユーザー/{ログインユーザーID}/AppData/Local/Temp」へ移動します。Cドライブに Windows をインストールした場合です。
ちなみに、エクスプローラーのアドレスバーに「%Temp%」と入力すると Temp フォルダーへ一気に移動します。
次に、アドレスバー右の検索ボックスに「MSForms.exd」と入力します。
すると、結果が出てきますので、このファイル選択して右クリックでを削除します。
この「MSForms.exd」は、VBA を使用するときに、新しいコントロールを使うと自動的に再作成されるものです。なので、消したからといって Office の動作には影響しませんのでご安心を。
では、押せなかったボタンを押してみましょう!
やった!反応しました!!
これでもダメな方は、以下のアドレスでも「MSForms.exd」を検索してみてください。
- %appdata%microsoftforms
- %temp%excel8.0
- %temp%word8.0
- %temp%PPT11.0
- %temp%vbe
参考サイト
おつかれさまでした。