COPIAR UNA HOJA SIN QUE SE COPIEN SUS MACROS

11 envíos / 0 nuevos
Último envío
fjlruiz
Imagen de fjlruiz
Offline
última acción: Hace 7 años 8 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 11/01/2010 - 10:59
Puntos: 817
COPIAR UNA HOJA SIN QUE SE COPIEN SUS MACROS

Hola:

Tengo una macro que me hace una copia de una hoja en un libro nuevo. El codigo es:

archivooriginal = ThisWorkbook.Name
Sheets("DATOS").Select
Sheets("DATOS").Copy
archivocopia = ActiveWorkbook.FullName

El problema, es que ademas de copiarse los datos de la hoja, se copian las macros que existen en la misma. Hay alguna forma de evitar que esto ocurra?.

 

Un saludo

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 2 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
o eliminarlo, o copiar las celdas en vez de la hoja entera

al copiar la hoja se copia también el código, a fin de cuentas también es algo que pertenece a la hoja ¿no?

Puedes eliminarlo una vez copiado, por ejemplo con algo así, como esto que he encontrado en mr excel:

With ActiveSheet
With .Parent.VBProject.VBComponents(.CodeName)
.CodeModule.DeleteLines 1, .CodeModule.CountOfLines
End With
End With

La otra posibilidad que he visto aquí en ozgrid y que me ha gustado bastante consistiría en crear una hoja nueva y luego copiar y pegar el contenido de la hoja original. Además esto permitiría por ejemplo pegar sólo los valores eliminando fórmulas y referencias, que puede ser bastante útil si lo único que se necesita es una copia de seguridad.

Sub MakeCodeLessCopy()
Dim wbCode As Workbook, wbNoCode As Workbook
Dim wSheet As Worksheet

    Set wbCode = ActiveWorkbook
    Set wbNoCode = Workbooks.Add
   
    On Error Resume Next
    Application.DisplayAlerts = False
   
        For Each wSheet In wbCode.Worksheets
            wbNoCode.Worksheets(wSheet.Name).Delete
            wbNoCode.Sheets.Add().Name = wSheet.Name
            wSheet.UsedRange.Copy _
             Destination:=wbNoCode.Worksheets(wSheet.Name).Cells(1, 1)
        Next wSheet
       
    Application.DisplayAlerts = True
    On Error GoTo 0
End Sub

 

 

 

------
Ya sé Excel, pero necesito más

 

------
Ya sé Excel, pero necesito más.

juanmanuel
Imagen de juanmanuel
Offline
última acción: Hace 9 años 6 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 15/05/2007 - 19:25
Puntos: 694
guardar como xlsX

yo en alguna ocasión hice algo parecido, y como no necesitaba ninguna macro en el libro nuevo, lo guardaba como xlsx en vez de xlsm, así se perdían las macros y todo el código de las hojas.

----
Sólo sé que no sé nada. :)

---- Sólo sé que no sé nada. :)

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 2 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Re: o eliminarlo, o copiar las celdas en vez de la hoja entera

Como seria la macro para que cree un libro nuevo SOLAMENTE con la hoja que le indiquemos,

Ejemplo: tengo un libro de presupuestos y facturacion, despues del presupuesto creado, quiero pasarla a un libro nuevo solamente su contenido y creado solo con la hoja Presupuestos.

Mensiono la hoja Presupuestos, podria mensionar otra del mismo libro, seria algo como ActiveSheets.Select (creo) Hoja activa y que solo cree la hoja en nuevo libro con solamente contenido.

Gracias

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 2 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: o eliminarlo, o copiar las celdas en vez de la hoja entera

en el ejemplo de antes se pasan todas las hojas del libro, pero si sólo quieres una hoja, utiliza el método Copy sin especificar nada más, para que la copie a un nuevo libro.

por ejemplo:

ActiveSheet.Copy

o Sheets("presupuesto").Copy

Si no quieres fórmulas, sino sólo los valores, copia y pega valores

por ejemplo en la nueva hoja que has copiado, que es la activa (lo he grabado con el grabador de macros)

Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Application.CutCopyMode = False

------
Ya sé Excel, pero necesito más ahora en pdf

 

------
Ya sé Excel, pero necesito más.

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 2 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Re: o eliminarlo, o copiar las celdas en vez de la hoja entera

Solo veo Copy pero, creo que para que pegue la hoja copiada en un libro de una sola hoja, tiene que exitir el libro ¿no?

es que me enrollo todo con esto de macros

talves lo mio seria discucion para otro tema, tu me dirás.

Es que consegui un codigo para moduloen que copia una determinada hoja a un libro simple, es decir la hoja Activa en un libro de solo una hoja, pero el codigo me dá un error y mi capacidad no es para tanto.

Ademas a dicho codigo, habria que agregarle la opcion para borrarle las formulas de la hoja a copiar.

Si prefieres creo un tema y te dejaria el codigo ya dentro de un libro(plantilla) presupuesto, tu me dices

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 2 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: o eliminarlo, o copiar las celdas en vez de la hoja entera

El libro no tiene que exisitir, Excel crea uno nuevo y pone ahí la copia de la hoja.

Si quieres adjuntar el archivo con el error, mejor en un tema en el foro de macros
puedes crearlo mediante este enlace http://www.necesitomas.com/node/add/forum/2

------
Ya sé Excel, pero necesito más ahora en pdf

 

------
Ya sé Excel, pero necesito más.

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 2 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Re: o eliminarlo, o copiar las celdas en vez de la hoja entera

Voy entonces a crear el nuevo tema llamandolo Error en Macro copia hoja Activa en nuevo libro.

Te dejo un ejemplo del libro con la macro para que lo revises y detetes el error.

Te agradezco de verdad tu ayuda

Dario (no verificado)
Imagen de Dario
Solo la hoja?

Hola. ¿como seria para copiar la hoja activa dentro del mismo libro?

MiltonCordova
Imagen de MiltonCordova
Offline
última acción: Hace 1 año 4 semanas
alta: 09/06/2017 - 18:27
Puntos: 255
falta property

Saludos lo que deseo es que mediante una macro una hoja de un libro copiar y moverla a un nuevo libro, luego esta hoja quitandole las macros copiar toda y pegar solo valores, luego de lo cual puedo guardar o no este nuevo libro.
hasta aqui he avanzado,envio la macro que me da un error Error de compilacion se esperaba End Propety
Sub EXPORTARC()
Sheets("Ruta crítica").Select
Sheets("Ruta crítica").Copy
ActiveSheet.Unprotect "MC"
With ActiveSheet
With .Parent.VBProject.VBComponents(.CodeName)
.CodeModule.DeleteLines 1, .CodeModule.CountOfLines
End With
End With
ActiveSheet.Shapes.Range(Array("Picture 1", "Picture 2", "AutoShape 4", _
"AutoShape 5" _
, "Picture 6", "Picture 7")).Select
Selection.Delete
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
me es imposible subir el archivo ya que es de 97 g.
Gracias

Patricio Berrocal (no verificado)
Imagen de Dario
COPIAR HOJA SIN QUE SE COPIEN LAS MACROS

Muchas gracias, el código:

With ActiveSheet
With .Parent.VBProject.VBComponents(.CodeName)
.CodeModule.DeleteLines 1, .CodeModule.CountOfLines
End With
End With

Funcionó de maravilla. Simple y sencillo. Eres grande.