Hebikuzure's Tech Memo

2014年12月11日

12月の Office 更新プログラムインストール後、VBA でエラーが発生する

Filed under: Microsoft Office — hebikuzure @ 5:02 PM

2014年12月にリリースされた Office の更新プログラム MS14-082 をインストールした後、例えばマクロが有効な Excel ブックを開いた時に「Microsoft Visual Basic」の実行時エラーダイアログが表示され、シート上に挿入されているコントロールが操作できない状態になる場合があります。

手元ではエラーが発生しなかったので、どのようなエラー ダイアログが出るのか確認したい方は「山市良のえぬなんとかわーるど」の記事を参照してください

この現象は、次のようなシナリオで発生します。

  1. シートにフォームのコントロールを挿入した Excel ブックを作成します
  2. フォームのコントロールが挿入されると、コントロールのモジュール (MSForms、プログラム名としては fm20.dll) が呼び出されます
  3. 次回の挿入に備えてコントロールのモジュールのキャッシュが作成されます。このキャッシュは %temp%\Excel8.0 フォルダーに、拡張子 .exd で作成されます
  4. 更新プログラム MS14-082 をインストールすると、MSForms (fm20.dll) が更新されます。しかし作成済みのフォームのキャッシュは削除も更新もされません
  5. MSForms のコントロールを操作する VBA が呼び出されると、実際のコントロール (更新済み) とキャッシュ (未更新) の間でバージョン不整合となり、エラーが発生します

回避策

コントロールのキャッシュは手動で安全に削除する事ができるので、フォームを利用できる Office アプリケーションをすべて終了してから .exd ファイルを削除すれば、問題は回避できます。以下の手順で削除してください。また更新プログラムのインストール前に事前にこの手順を行っておくことで、エラーの発生を予防できます。

  1. フォームを利用できる Office アプリケーションをすべて終了します。またはコンピューターを一度再起動します
  2. [Win キー] + R で [ファイル名を指定して実行] を呼び出します
  3. [名前] ボックスに %temp% と入力して [OK] をクリックします
  4. %USERPROFILE%\AppData\Local\Temp\ フォルダーが開くので、Excel8.0 フォルダーを探します
  5. 見つかったら Excel8.0 フォルダーを開き、その中のファイルをすべて削除します (Excel8.0 フォルダーごと削除しても問題ありません)

参考

広告

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com Blog.

%d人のブロガーが「いいね」をつけました。