¡Ayuda de los expertos! Programación, borrado de macros excel4.0
Opción explícita
Sub RmvMacros()
Atenuar wbk como libro de trabajo
Atenuar strFilename como cadena
Este libro de trabajo .SaveCopyAs "D:\Save as backup.xls"
strFilename = ThisWorkbook.Path amp "\Save as backup.xls" 'El nombre del archivo para eliminar la macro
Aplicación .EnableEvents = False 'Deshabilitar eventos de activación al abrir
Establecer wbk = Workbooks.Open(strFilename)
RemoveAllMacros wbk 'Llame a RemoveAllMacros para eliminar el código de macro
wbk .Cerrar savechanges :=True
Application.EnableEvents = True
End Sub
Sub RemoveAllMacros(wbk As Workbook) 'El parámetro wbk es el libro a eliminar macros p>
Atenuar i mientras
Atenuar vbc como VBComponent
Para cada vbc en wbk.VBProject.VBComponents 'Recorre cada módulo del libro de trabajo de wbk
If vbc.Type = vbext_ct_Document Then 'Si es un módulo de un objeto de Excel, borre el código que contiene; de lo contrario, elimine todo el módulo
vbc.CodeModule.DeleteLines 1, vbc.CodeModule .CountOfLines
Else
wbk.VBProject.VBComponents.Remove vbc
Finalizar si
Siguiente vbc
End Sub
Sub ListAllCodeModule()
Dim strVBCmpType As String
Dim vbc As VBComponent
Debug.Print "Número de líneas de código para tipo de nombre"
Para cada vbc en ThisWorkbook.VBProject.VBComponents
Con vbc
Seleccione Caso .Tipo
Caso vbext_ct_Document
strVBCmpType = "Objeto de Excel"
Caso vbext_ct_S
tdModule
strVBCmpType = "Módulo"
Caso vbext_ct_MSForm
strVBCmpType = "Formulario"
Caso vbext_ct_ClassModule
strVBCmpType = "Módulo de clase"
Selección final
Debug.Print .Name & Space(20 - Len(.Name)), strVBCmpType, .CodeModule.CountOfLines
Terminar con
Siguiente vbc
Fin Sub