KB 3191877 の適用後に VBA のコンパイルエラーが発生する


2017/12/12 Update
本現象を修正する Excel 2013 向け更新プログラムを公開しました。Excel 2016 向けの修正も追って公開予定です。

 

対象製品

Excel 2013 (15.0.4927.1000 ~ 15.0.4981.1000)

Excel 2016 Insider Fast version 1705 (Build 8117.1000)

 

こんにちは、Office 開発 サポート チームの多田です。

今回は 2017 5 2 日にリリースされた Excel の更新プログラムを適用した環境において、特定の条件下で Excel を起動する際に VBA のコンパイルエラーを示すダイアログが表示される件について紹介します。

 

excel

 

現象

今回の現象は以下の手順にて Excel ブックおよび VBA を作成して Excel 97-2003 形式 (.xls) で保存した際に発生します。

 

現象再現手順 (Excel 2013 の場合)

^^^^^^^^^^^^^^^^^^^^^^^^^^

  1. Excel 2013 SP1 に以下の KB 3191877 を適用します。

タイトル : May 2, 2017, update for Excel 2013 (KB3191877)

アドレス : http://support.microsoft.com/kb/3191877

 

  1. Excel で新規ブックを作成します。
  2. [挿入] - [] - [図形] で任意の図形を挿入します。
  3. 上記手順 3 で挿入した図形を右クリックし、[マクロの登録] をクリックします。
  4. [新規作成] をクリックします。
  5. 表示された VBA にて、以下のようなコードを追加します。(ここでは例として手順 3. で "正方形長方形" を追加したとします)

<追加前>

code>Sub 正方形長方形 1_Click()

End Sub

<追加後>

Sub 正方形長方形 1_Click()

End Sub

Sub hoge(Optional ByVal sr As String = vbNullString)

End Sub
  1. VBA を保存します。
  2. Excel のファイルを Excel 97 - 2003 ブック (*.xls) として保存して、ファイルを閉じます。
  3. 保存したファイルを開きます。セキュリティの警告のバーが表示されますので、[コンテンツの有効化] をクリックし、ファイルを閉じます。
  4. 保存したファイルを再度開きます。コンパイルエラーのダイアログが表示されることを確認します。

 

※ また、上記手順 6. にて以下のようなコードを記述した場合でも現象が発生します。基本的には、図形のクリックイベントと同じモジュール内において、内部的に定義されているオブジェクトを参照した場合に発生いたしますが、発生パターンは様々です。

 

<他の現象発生パターン>

Dim hoge As Workbook

Sub 正方形長方形1_Click()

End Sub

 

原因

KB 3191877 では、特定の条件下においてマクロを含むファイルを開く際に Excel がハングアップする問題に対して、明示的にコンパイルエラーを検出しハングアップを回避する修正を実施しております。今回の現象は、この修正の影響で VBA コード上は問題ないため本来検出不要なコンパイルエラーが検出され、結果としてエラーダイアログが表示される動作になっております。

 

2017/12/12 Update

解決方法

以下の更新プログラムで修正されましたので、本現象を解決するには、修正プログラムを適用してください。

文書番号 : KB4011597
タイトル : 2017 年 12 月 5日は、Excel 2013 (KB4011597) の更新します。
アドレス : https://support.microsoft.com/ja-jp/help/4011597

 

回避策

更新の適用が難しい場合は、問題が発生するファイルを Excel 2007 形式のファイル「Excel マクロ有効ブック (*.xlsm)」 形式で保存し直すと、この現象を回避することができます。

 

今回の投稿は以上です。

 

本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。

Skip to main content