マクロを消す

マクロを削除しなければならないことがどうやらあるらしい。
たとえば、内部では仕様書のメンテにマクロを使い、外部へはそのマクロを削除して提出する場合などが考えられる。
とりあえず、ほかの人が作ったらしいが、自分なりに調べてみた。(勉強のために)

Private Sub del_macro_Click()
    Dim wb As Workbook
    Set wb = Workbooks.Open(xlsfile.Text)
    
    Dim VBC As Object
    With Workbooks(wb.name).VBProject
       For Each VBC In .VBComponents
          Select Case VBC.Type
             Case 1, 2, 3
                .VBComponents.Remove VBC
             Case 100
                With VBC.CodeModule
                    .Deletelines 1, .Countoflines
                End With
          End Select
       Next
    End With
    
    wb.Save
    wb.Close
End Sub

Private Sub ref_xlsfile_Click()
    Dim objExcelApp As Excel.Application
    Set objExcelApp = CreateObject("Excel.Application")
    objExcelApp.DefaultFilePath = "C:\"
    objExcelApp.Application.Quit
    Set objExcelApp = Nothing
    
    Set objExcelApp = CreateObject("Excel.Application")
    Dim filename As String
    filename = objExcelApp.Application.GetOpenFilename(FileFilter:="EXCELファイル,*.xls", Title:="マクロを削除するXLSファイル指定")
    If "False" <> filename Then
        xlsfile.Text = filename
    End If

    objExcelApp.Application.Quit
    Set objExcelApp = Nothing

End Sub

ぶっちゃけ、よくわからんがこのコードに適当なフォームにテキストボックスとボタン二つを貼り付ければ、うごくっぽい。
ちなみに、2003だと変なオプションがついてるから、それを入れないといけないらしい。
ってか、エラーメッセージでわかるようにしておけっていうだ。

参考: