Excel VBA ツールバーからのマクロ呼び出しで異常終了。まさかファイル名が原因だったなんて!!
Excel for Mac 2011(14.7.3) の Excel VBA を組んでいたところ、ツールバーからのマクロ呼び出しで原因不明の異常終了に見舞われました。
ツールバーのコマンドボタンをクリックしても、マクロが1行たりとも実行されることはなく、何故かExcel Book が開かれようとした末に、Excelアプリケーションが異常終了してしまうという現象でした。
まさかこれがExcel Book のファイル名が原因だなんて・・・。わからんよそんなん!!
目次
こんな風に異常終了に至ります。
ツールバーの実装方法については別の機会に説明しようと思います。ツールバーを作る場合、ツールバーのボタンアクションに呼び出したいマクロ名を記載して、マクロに紐付いたボタンを用意するというのが一般的な実装です。
今回、写真アイコンのボタンを1つもつツールバーを作り、とあるマクロを呼び出そうと試みたわけですが・・・
ツールバーのコマンドボタンを押すと、マクロが1行も呼び出されるそぶりもなく、なぜか Excel Book をもう一度開こうとしてくるのでした。
なぜ開こうとするのか訳が分かりませんが、聞かれてしまうなら仕方ない、ひとまず「マクロを有効にする」を選択してみることにしました。
すると、Excel Application がクラッシュしてしまうのでした。
ツールバーのコマンドボタンとしてはOnActionにマクロ名を記載しているだけ。そしてマクロの先頭にブレークポイントを設定しても止まること無く異常終了・・・。
これには原因不明のまま、数時間を費やしました。
切り分けの為にファイルをコピーして増やした。これが功を奏した。
全くもって原因不明なこの異常終了・・・。
問題切り分けの為に、「ツールバーで無くてメニューからマクロを実行したらどうなるのか?」「他の関数を全て削除してツールバーとツールバーから呼ぶ空のマクロのみを用意したらどうなるのか?」何パターンか試してみることにしました。
異常終了するExcel Book をコピーして増やし、適当な名前をつけて確認を始めた結果・・・。「あれ?まだコピーしただけでコードはいじってないのに動いた!?」
狐につままれた感じですが、危うい様子もなくすんなり動いたのです。
ファイル名に使ってはいけない文字がある!!
まだ何も手を加えていないコピーしただけのExcel Bookが数個・・・。でもツールバーからマクロを動かすと異常終了するものと、正常に終了するものがあるのです。
違いはファイル名のみ・・・。
異常終了してしまうファイルは「Excel画像コピペアシスト.xlsm」や「Excel画像コピペアシスト のコピー.xlsm」などです。一方で動くファイルは「テスト.xlsm」や「検証中.xlsm」などでした。
なんか Subversion で問題になる UTF-8-mac 問題に似ている・・・
「もしや濁音とか半濁音とか(つまり「コピペ」の部分)がいけないのでは!?」と極端なファイル名で試してみることにしました。
動くファイルは「ヒ.xlsm」、異常終了してしまうファイルは「ビ.xlsm」や「ピ.xlsm」・・・。これはもう確定ですね。
ファイル名に濁音や半濁音をつけなければ、問題なくツールバーからマクロ実行が可能であることがわかりました。
これは Excel for Mac 2011 固有の問題なのか!?
今や時代は Excel 2016 for Mac の時代。Excel for Mac 2011 固有のバグで、Excel 2016では既に解消している可能性もあります。
それなら気にする必要はないのでしょうか?いえいえ・・・。
Excel 2016 for Mac で解消しているのかも分かりませんし、まだまだ私の様に Excel for Mac 2011 の様な古いExcelを使っている人も多いと思います。
せっかく作ったマクロを「なんだ・・・動かないじゃん」と言わせない為にもExcel Bookのファイル名には濁音や半濁音は含めない様にしておきましょう。
まさか、ファイル名のせいでツールバーからマクロが呼べなかったとは・・・。盲点でした。