Excel 2007以降、ブックがマクロを含まない場合は拡張子.xlsx、マクロを含む場合は
.xlsm、という具合に、マクロの有無によって拡張子を変えなければならなくなった。
その為、前述の(Workbookオブジェクトの)CloseメソッドやSaveAsメソッドで、マクロ
があるにも関わらず、.xlsx形式で保存しようとすると下記エラーが表示されてしまう :
このようなエラーを防ぐ為に、WorkbookオブジェクトのHasVBProjectプロパティを
用いてマクロの有無を判定する必要がある。HasVBProjectプロパティの書式は下記
の通り :
Boolean型変数 = Workbookオブジェクト.HasVBProject
HasVBProjectプロパティを用いて判定を行うコードのサンプルを以下に記す :
Sub SampleWorkbookHasVBProject()
Dim bk As Workbook
Set bk = Application.Workbooks.Open("D:\Sample.xlsm")
'
' <<ブックを更新する処理をここに記述>>
'
If bk.HasVBProject = True Then
bk.SaveAs Filename:="D:\Sample2.xlsm"
Else
bk.SaveAs Filename:="D:\Sample2.xlsx"
End If
End Sub
0 件のコメント:
コメントを投稿