Exportar hoja de calculo sin botones y con macro incrustada... Pregunta para experto Luis Mondelo

Hola a todos, quisiera pedirles un consejo. Tengo una hoja de cálculo (en el archivo original hay varias hojas de cálculo) donde hay dos botones: "Ir a" e "Ir a observaciones"
Lo que quisiera hacer es una macro que me exporte solo esta hoja de calculo con el nombre "Celda I4" + "Celda I6", pero que ese archivo de excel que se va a generar, no aparezca
el botón "Ir a", sólo que aparezca el botón "Ir a Observaciones", y que sólo la macro de este último botón se conserve en el archivo generado. La macro del botón "Ir a observaciones" es simplemente :


" Range("B49").Select "

el código que he tratado de hacer es el siguiente

ActiveSheet.Copy
ActiveWorkbook.SaveAs
ThisWorkbook.Path + "\GRAFICORENDIMIENTO\" +
Range("I4").Value + "-" + Range("I6").Value +
".xls", FileFormat:=xlNormal _
, Password:="",
WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
ActiveWorkbook.Close

Pero sólo he llegado a eso, quisiera como te digo que se exporte sin el botón "Ir a", y que conserve el botón "Ir a Observaciones" así como la macro de esta última en el archivo generado

.
Ojala me puedas ayudar. Gracias nuevamente por todo

1 respuesta

Respuesta
1

Lo primero que necesitas es utilizar botones activex y no botones de formulario, ya que con botones activex podemos tener una macro dentro del objeto hoja y no en un módulo

Esta sería ma macro que copiaría la hoja eliminando un botón y dejando el otro en uso.

De todas formas te lo he mandado por mail

Sub copiarhoja()
milibro = ActiveWorkbook.Name
Workbooks.Add
otro = ActiveWorkbook.Name
Workbooks(milibro).Activate
Sheets("GRARENVOL").Copy before:=Workbooks(otro).Sheets(1)
ActiveSheet.Shapes("CommandButton2").Delete
nombre1 = Sheets(1).Range("i4").Value
nombre2 = Sheets(1).Range("i6").Value
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\GRAFICORENDIMIENTO\" & nombre1 & nombre2, FileFormat:=xlOpenXMLWorkbookMacroEnabled
ActiveWorkbook.Close False
End Sub

Y esta sería la macro que está dentro del objeto hoja llamada GRARENVOL ya que de esta manera cuando la copiemos se llevará su propia macro.

Private Sub CommandButton1_Click()
Range("B49").Select
End Sub

Excelente amigo, como siempre me ayudaste tremendamente, disculpa que me haya demorado en responder tuve un problema el finde semana.

Millones de gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas