対象製品
・Excel 2013 (15.0.4927.1000)
・Excel 2016 Insider Fast version 1705 (Build 8117.1000)
こんにちは、Office 開発 サポート チームの多田です。
今回は 2017 年 5 月 2 日にリリースされた Excel 2013 の更新プログラムを適用した環境において、特定の条件下で Excel 2013 を起動する際に VBA のコンパイルエラーを示すダイアログが表示される件について紹介します。
現象
今回の現象は以下の手順にて Excel および VBA を作成した際に発生します。
現象再現手順
^^^^^^^^^^
- Excel 2013 SP1 に以下の KB 3191877 を適用します。
タイトル : May 2, 2017, update for Excel 2013 (KB3191877)
アドレス ; http://support.microsoft.com/kb/3191877
- Excel で新規ブックを作成します。
- [挿入] – [図] – [図形] で任意の図形を挿入します。
- 上記手順 3 で挿入した図形を右クリックし、[マクロの登録] をクリックします。
- [新規作成] をクリックします。
- 表示された VBA にて、以下のようなコードを追加します
(ここでは例として “正方形長方形” を追加したとします)
— 追加前 —
Sub 正方形長方形1_Click()
End Sub
—————-
— 追加後 —
Sub 正方形長方形1_Click()
End Sub
Sub hoge(Optional ByVal sr As String = vbNullString)
End Sub
—————-
- VBA を保存します。
- Excel のファイルを Excel 97 – 2003 ブック (*.xls) として保存して、ファイルを閉じます。
- 保存したファイルを開きます。セキュリティの警告のバーが表示されますので、[コンテンツの有効化] をクリックし、ファイルを閉じます。
- 保存したファイルを再度開きます。コンパイルエラーのダイアログが表示されることを確認します。
※ また、上記手順 6 にて以下のようなコードを記述した場合でも現象が発生します。基本的には、図形のクリックイベントと同じモジュール内において、内部的に定義されているオブジェクトを参照した場合に発生いたしますが、発生パターンは様々です。
— 他の現象発生パターン —
Dim hoge As Workbook
Sub 正方形長方形1_Click()
End Sub
——————————-
原因
KB 3191877 では、特定の条件下においてマクロを含むファイルを開く際に Excel がハングアップする問題に対して、明示的にコンパイルエラーを検出しハングアップを回避する修正を実施しております。今回の現象は、コード上は問題ないですが、本来回避されるはずのコンパイルエラーが検出され、結果としてダイアログが表示される動作になっております。
回避策
問題が発生するファイルについて、Office 2010 以降の形式である、Excel マクロ有効ブック (*.xlsm) にて保存しなおすことで現象を回避することができます。
今回の投稿は以上です。
本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。