Red de conocimiento informático - Consumibles informáticos - ¡Ayuda de los expertos! Programación, borrado de macros excel4.0

¡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

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