2015年4月1日水曜日

マクロを含むブックか否かを判定する

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 件のコメント:

コメントを投稿