Evitar que una hoja copiada herede una macro

22/12/2003 - 17:49 por Zapata | Informe spam
Hola:
Se que lo he visto en este foro pero por mas que busco ahora no doy con
ello
me gustaría saber como evito que al copiar una hoja y pegarla en el mismo o
en otro libro lleve consigo las macros que contiene.También me valdría
eliminar las macros después de duplicar la hoja.
Un saludo y gracias anticipadas
 

Leer las respuestas

#1 Héctor Miguel
23/12/2003 - 06:19 | Informe spam
hola, Ignacio !

... como evito que al copiar una hoja ... lleve consigo las macros que contiene.



'aunque' NO indicas si 'la copia' la hace el usuario o se hace por codigo :\\
1.- si [solamente] 'manejas' los eventos de 'la hoja', [creo yo que] la forma mas 'sencilla' seria...
['considerando' que los eventos de hoja estan tambien 'contenidos' en los eventos del libro]
'mover' los codigos DE los eventos de la hoja A los eventos ['de hojas'] EN el modulo del libro
[p.e.] si estas usando el evento '_SelectionChange' [en el modulo de 'la hoja']
______
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$1" Then MsgBox "La celda B1 ha sido seleccionada"
End Sub
==> 'muevelo' al modulo de codigo 'del libro [+/- como sigue]:
______
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Hoja1" Then
If Target.Address = "$B$1" Then MsgBox "La celda B1 ha sido seleccionada"
End If
End Sub
¨¨¨¨¨¨¨¨¨¨¨¨
Pros: los codigos NO 'se van' con la copia de la hoja [por codigo o por el usuario] :))
Cons: 'hay que detectar' el nombre [o 'posicion', o 'codename'] de la hoja, 'pero'... si 'se cambia'... :((
=> seria mas 'confiable' el 'codename' <
... me valdria eliminar las macros despues de duplicar la hoja



2.- si [tambien] 'manejas' eventos de objetos 'incrustados' [como botones de 'cuadro de controles']
entonces si 'seria necesario' ELIMINAR [por codigo] las lineas de codigo del modulo de la hoja 'copiada'
Requiere: establecer una referencia [en vba] a la libreria [Microsoft Visual Basic for Applications Extensibility]
Pros: ¿'confiable'???
Cons: la version de la libreria 'depende' de la version [de excel] donde se ha de utilizar [p.e.]
1) en excel 97 => NO DEBE 'tener' numero de version.
2) en excel 2K => debiera funcionar 'sin problemas'
3) en excel XP => REQUIERE [ademas] de un 'ajuste' [en caso de no 'tenerlo' ya] a las 'Fuentes de confianza'
el 'ajuste' en XP es en: herramientas / macros / seguridad / [pestaña] fuentes de confianza y ...
'poner' una marca en: 'confiar en el acceso a proyectos de visual basic'
[p.e.] la siguiente macro elimina TODOS los codigos del libro 'activo' <= OJO
_______
Sub Eliminar_todos_los_codigos()
Dim Modulo As VBIDE.VBComponent, Modulos As VBIDE.VBComponents
Set Modulos = ActiveWorkbook.VBProject.VBComponents
For Each Modulo In Modulos
Select Case Modulo.Type
Case VBExt_ct_StdModule, VBExt_ct_MSForm, VBExt_ct_ClassModule
Modulos.Remove Modulo
Case Else
With Modulo.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
Set Modulos = Nothing
End Sub
¨¨¨¨¨¨¨¨¨¨¨¨
saludos,
hector.

Preguntas similares