モジュール削除
アクティブワークブックの標準モジュールを削除します。
以後の操作が出来なくなってしまうため、ツールバーとモジュール関連は削除しないよう指定します。
削除する前に必ずバックアップを取るように。(ワークブック、モジュール)
  1. 参照設定 で「Microsoft Scripting Runtime」にチェックを付けます。
  2. 削除しないモジュールはモジュール名の頭に A ( a ) を付けます。
    AToolBar.Bas
    AModuleExport.Bas
    AModuleImport.Bas
    AModuleRemove.Bas

モジュール削除
Option Explicit

Sub KMoRemove00()

''モジュール削除 Start     2002/5/22

    Dim mypZname As String          'Workbook Name
    Dim mypZMoname1 As String       '削除しないモジュール名の先頭文字
    Dim mypZMoname2 As String       '削除しないモジュール名の先頭文字

    mypZname = ActiveWorkbook.Name
    mypZMoname1 = "A"
    mypZMoname2 = "a"

    KMoRemove01 mypZname, mypZMoname1, mypZMoname2

End Sub
Sub KMoRemove01(mypBookName As String, mypZM1 As String, mypZM2 As String)

''モジュール削除      2002/5/22

    Dim mypVBAComp As Object
    Dim mypMoName As String            'モジュール名
    Dim mypMoType As Integer           'モジュール型  1:標準 2:Class 3:Form
    Dim mypMoCount As Integer          'モジュール数

    Dim mypBookA As Workbook
    Dim mypTitle As String
    Dim mypMsg1 As String
    Dim mypMsg2 As String
    Dim mypRetMsg As Integer

    Set mypBookA = Workbooks.Item(mypBookName)
    mypTitle = "モジュール削除"
    mypMsg1 = "削除 終了  "
    mypMsg2 = "削除しますか。?  "
    mypMsg1 = mypMsg1 & vbCrLf & vbCrLf & mypBookName & "  [ "
    mypMsg2 = mypMsg2 & vbCrLf & vbCrLf & mypBookName & "  [ "

''モジュール削除の確認
    For Each mypVBAComp In ActiveWorkbook.VBProject.VBComponents
        mypMoType = mypVBAComp.Type
        If mypMoType = 1 Then
            mypMoName = mypVBAComp.Name
            If Left(mypMoName, 1) = mypZM1 Or Left(mypMoName, 1) = mypZM2 Then
            Else
                mypMoCount = mypMoCount + 1
            End If
        End If
    Next
    Beep
    mypMsg2 = mypMsg2 & mypMoCount & " ]"
    mypRetMsg = MsgBox(mypMsg2, vbYesNo + vbQuestion, mypTitle)
    If mypRetMsg = vbNo Then
       End
    End If

''モジュール削除
    mypMoCount = 0
    For Each mypVBAComp In ActiveWorkbook.VBProject.VBComponents
        mypMoType = mypVBAComp.Type
        If mypMoType = 1 Then
            mypMoName = mypVBAComp.Name
            If Left(mypMoName, 1) = mypZM1 Or Left(mypMoName, 1) = mypZM2 Then
            Else
                mypMoCount = mypMoCount + 1

            ''マクロモジュール削除
            mypBookA.VBProject.VBComponents.Remove _
                    mypBookA.VBProject.VBComponents(mypMoName)
            End If

        End If
    Next
    mypMsg1 = mypMsg1 & mypMoCount & " ]"
    MsgBox mypMsg1, vbInformation, mypTitle

End Sub

top