Copiar una hoja de excel pero sin los botones de mando

Necesito un código copiar una hoja en el mismo libro pero sin los botones de mando que tiene la original.

Respuesta
3

Para eliminar los objetos de una hoja (controles Formulario, ActiveX u imágenes) podés llamar a la siguiente subrutina luego de crear la hoja y estando ya en la nueva hoja (activa):

Sub quitaObjetos()
'x Elsamatilde
For Each obje In ActiveSheet.Shapes
    obje.Delete
Next
End Sub

Solo tenés que tener presente que un gráfico también es un objeto. 

Y si necesitás conservar algún objeto deberás omitirlo. Por ejemplo en la siguiente macro omito el gráfico 3 y todas las imágenes de este modo:

Sub quitaObjetos()
'x Elsamatilde
For Each obje In ActiveSheet.Shapes
    If obje.Name <> "3 Chart" And Left(obje.Name, 7) <> "Picture" Then
        obje.Delete
    End If
Next
End Sub

Para Dante: tu macro es correcta... pero qué pasa si mi hoja tiene logos de empresa o gráficos y esos sí los quisiera mantener...¿hay modo de colocar en tus instrucciones algún criterio para mantenerlos? me parece que no... salvo mejor opinión.

Sdos!

¡Gracias! Excelente ¿¡ Podrías por favor explicarme cada uno de los elementos de esta instrucción? Muy agradecido

 Left(obje.Name, 7)

Si. Cuando neesitamos hacer referencia a un tipo de objetos (obje) buscamos solo la parte del nombre (name) que será común a todos.

Por ejemplo, si quiero omitir todas las imágenes (Picture) digo que busque si los primeros (Left) 7 caracteres del nombre del objeto es = Picture

Así quedarán incluídos Picture 1, Picture 20, etc.

Sdos!

1 respuesta más de otro experto

Respuesta
4

Si no quieres copiar ningún botón, puede ser:

Sub Copiar_Hoja()
    Application.CopyObjectsWithCells = False
    Sheets("hoja3").Copy after:=Sheets(Sheets.Count)
    Application.CopyObjectsWithCells = True
End Sub

Desactivamos la copia de objetos, se copia la hoja y después se vuelve a activar la copia de objetos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas