Eliminación de macros desde una Macro

August 24

Gen pidió una manera de eliminar macros desde una macro. Él tiene una gran hoja de cálculo que utiliza macros para armar una orden de compra. Como último paso, la macro elimina los datos originales que ya no es necesario para el pedido final. Este cuaderno de trabajo minimalista y se guarda con un nuevo nombre. Gen necesita la macro, justo antes de guardar, borrar una macro que se almacena en controlador de eventos SelectionChange.

Hay un par de maneras en que esto podría ser manejado. Una forma es evitar tener que hacer el borrado todos juntos. En su lugar, haga que su macro crea un nuevo libro y luego traslado, a ese libro, una copia de los datos que necesita. A continuación, puede examinar minuciosamente los datos en el nuevo libro y guardarlo como su orden de compra. Las macros en el libro existente nunca se copian en el nuevo libro de trabajo durante el proceso, por lo que no tienen que preocuparse por borrarlas.

Copia de todas las hojas del libro actual a un nuevo libro es muy fácil de hacer. La macro siguiente muestra cómo se hace:

CopyThisWorkbook Sub ()
Dim CopiedWB As String

CopiedWB = "Copia de" & ActiveWorkbook.Name

Sheets.Copy
ActiveWorkbook.SaveAs Nombre: = CopiedWB, _
FileFormat: = xlNormal
End Sub

El método de copia, cuando se aplica a la colección Hojas, copia todas las hojas del libro activo a un nuevo libro de trabajo y hace que el nuevo libro activo. El último comando guarda el nuevo libro de trabajo con un nuevo nombre.

Por supuesto, si usted necesita un poco de sus macros para estar en el nuevo libro, pero no todos ellos (como el caso SelectionChange manejador), entonces usted está probablemente mejor para eliminar lo que no es necesario y simplemente guardar bajo un nuevo nombre. La siguiente macro de ejemplo muestra cómo eliminar el controlador de eventos SelectionChange del código hoja para Sheet1.

DeleteProcedure Sub ()
Dim VBCodeMod Como CodeModule
StartLine Dim como de largo
HowManyLines Dim As Long

Establecer VBCodeMod = ThisWorkbook.VBProject.VBComponents ("Sheet1"). CodeModule
Con VBCodeMod
StartLine = .ProcStartLine ("Worksheet_SelectionChange", _
vbext_pk_Proc)
HowManyLines = .ProcCountLines ("Worksheet_SelectionChange", _
vbext_pk_Proc)
.DeleteLines StartLine, HowManyLines
End With
End Sub

Una vez finalizada la macro, el libro podría ser salvado, y la macro deseada no estará en el archivo guardado. Esta macro es una adaptación de la información proporcionada en el sitio Web de Chip Pearson, que usted debe hacer referencia a si necesita información adicional sobre esta técnica:

http://www.cpearson.com/excel/vbe.aspx

ExcelTips es su fuente de capacitación rentable Microsoft Excel. Esta punta (3073) se aplica a Microsoft Excel 97, 2000, 2002, y 2003.