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
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.
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. :)
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
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.
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
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.
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
Hola. ¿como seria para copiar la hoja activa dentro del mismo libro?
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
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.