ブックにマクロが含まれているか確認するには

ブックにマクロが含まれているかを確認するには、対象のブックのWorkbookオブジェクトのHasVBProjectプロパティを使用します。

マクロを含んでいればTrue、含んでいなければFalseが返されます。

Excel 2007以前はマクロの有無に関わらずブックの拡張子は「.xls」でしたが、Excel 2007からリボンが採用され、多数の機能が拡張されることになり、それに伴いマクロ無しの通常ブックが「.xlsx」、マクロ有りのブックが「.xlsm」と分かれました。HasVBProjectプロパティもそのときに追加された機能の1つです。そのため、Excel 2003以前のバージョンでは動作しません。

HasVBProjectプロパティの用途として、Excel2007以前の「.xls」で書かれたマクロが含まれているブックを、Excel 2007用の「.xlsm」に変換する際の判定に利用する方法があります。

その方法の詳細については「xls形式ファイルをxlsxとxlsm形式に一括変換する」をご参照ください。

構文

Property Workbook.HasVBProject As Boolean

親オブジェクト 親オブジェクトとして確認対象ブックのWorkbookオブジェクトを指定します。
戻り値 マクロを含んでいればTrue、含んでいなければFalseが返されます。

コード

以下はアクティブブックにマクロが含まれているかを確認するサンプルコードです。

マクロを含んでいればTrue、含んでいなければFalseがイミディエイトウィンドウに出力されます。