tengo un libro que mando por correo (outlook) de entre las hojas que tiene el archivo original solo se copian dos las dos tienen macros. Actualmente ya hace una copia de las hojas y crea un archivo nuevo pero cuando lo abro la hoja 1 y dos conservan las macros y lo peor vinculadas al archivo original.
si abro el segundo archivo necesito que la primer hoja "piezas" no tenga macros, (eso lo solvento eliminando el boton), pero la segunda hoja "probar " si debe conservar la macro y se debe ejecutar pero no debe estar vinculada al archivo original, es para un formulario en excel que cuando lo distribuya, quien lo abra no le marque error de vinculos.
pregunta concreta: ¿ como copio una hoja con macro y la otra sin macro y esta segunda no este vinculada al archivo original?
nota: las macros trabajan con datos locales de la hoja, no necesitarian conectarse al archivo base.
supongo que va por aqui
" Sheets(Array("piezas", "Probar")).Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs -NombreArchivo-"
ya intente con :
For Each Hoja In Worksheets
Hoja.UsedRange.Value = Hoja.UsedRange.Value
Next
Selection.PasteSpecial Paste:=xlPasteValues
o almenos no pude incrustarlo en el archivo.
alguien que me pueda ayudar.
Adjunto | Tamaño |
---|---|
![]() | 25.38 KB |
Cuando dices que están vinculadas al libro antiguo, imagino que te refieres a que la macro asociada a los botones de la hoja llaman a la macro del libro antiguo.
Para eliminar el código de la macro de la hoja, mira este otro envío del foro http://www.necesitomas.com/copiar-hoja-que-se-copien-sus-macros
Para cambiar la macro asociada al botón, entonces deberás editar la propiedad .OnAction del botón (el botón en tu caso está en la colección de formas shapes)
como sólo tienes un botón
Sheets("Piezas").Shapes(1).OnAction
podrías también utilizar el nombre del botón
Sheets("Piezas").Shapes("Botón 1").OnAction
al hacer la copia del libro, esta propiedad tiene este valor:
mostar.xlsm!Hoja1.Botón1_Haga_clic_en
edítalo y quítale la primera parte que hace referencia al nombre, por ejemplo:
Sheets("Piezas").Shapes(1).OnAction = "Hoja1.Botón1_Haga_clic_en"
------
Ya sé Excel, pero necesito más.