410 410 VBAでマクロの有無を調べて保存するには | 初心者のためのOffice講座-SupportingBlog2 Yoshiko Hamamoto

VBAでマクロの有無を調べて保存するには

Excel2007から通常のブックとマクロを含むブックは、異なる拡張子で保存するようになっています。
通常のExcelブックは、「.xlsx」 マクロを含む場合は 「.xlsm」 です。
マクロ有効ブックのアイコンは、下のようになります。


Excel2003までは、そのままマクロを含めて保存できたのですけどね。

Excel2007から HasVBProjectプロパティが追加されました。

アクティブブックがマクロを含んでいるかどうか確認して、マクロを含む場合は「Excelマクロ有効ブック」、含まない場合は「Excelブック」として保存するように「名前を付けて保存」ダイアログボックスを表示したいときは、↓のようにします。

Sub ダイアログボックスを表示して保存()

With Application.FileDialog(msoFileDialogSaveAs)
If ActiveWorkbook.HasVBProject Then
.FilterIndex = 2
Else
.FilterIndex = 1
End If
If .Show = -1 Then .Execute
End With
End Sub


FilterIndexの番号は、名前を付けて保存」ダイアログボックスの「ファイルの種類」の一覧の上から順に1、2、3となります。