Saltar al contenido

Recommended Posts

publicado

Hola:

He descubierto por error algo que desconocía.

Worksheets("Hoja1").Copy Worksheets("Hoja1")[/CODE]

Este código añade al libro una hoja con los datos de Hoja1 con el nombre "Hoja1 (2)"

Si le añadimos:

[CODE]ActiveSheet.Name = "Copia de Hoja1"[/CODE]

Tenemos una forma fácil de copiar una hoja con el nombre que queramos, es decir:

[CODE]Worksheets("Hoja1").Copy Worksheets("Hoja1")
ActiveSheet.Name = "Copia de Hoja1"[/CODE]

Seguramente muchos ya lo conociais, pero a mi me ha sorprendido que con el método Copy podamos añadir una hoja.

Saludos. Antoni.

publicado

Hola. Si deseas tambien puedes decirle en donde dejar esa nueva copia:

Al incio (izquierda):

Sheets("Hoja1").Copy Before:=Sheets(1)

Al final (derecha):

Sheets("Hoja1").Copy After:=Sheets(Sheets.Count)

ActiveSheet.Name = "Nuevo_Nombre"

Despues de la segunda hoja (o la que desees):

Sheets("Hoja1").Copy After:=Sheets(2)

ActiveSheet.Name = "Nuevo_Nombre"

Saludos

Abraham

publicado

Hola:

Antoni, algo que igual conoces, y que yo he aprendido del Máster Mjrofra sobre el método Copy, que es crear un libro nuevo de una hoja.

Ahí queda el código

Sub nuevolibro()
Dim ruta
ruta = ThisWorkbook.Path
Sheets("Hoja1").Copy
ActiveWorkbook.SaveAs Filename:=ruta & "\" & "Milibro.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
ActiveWorkbook.Close
End Sub[/CODE]

Saludos, Luis.

publicado

Hola Antoni

Pues me ha sorprendido que tu no conocias este metodo:), es decir tu que trabajas mucho con VBA [con esto se comprueba que cada dia aprendemos algo], y pues en realidad creo que no es añadir [añadir es insertar una hoja nueva limpia] sino que "copiar", la hoja activa, que por cierto para ubicar donde queramos la copia, podemos usar el miembro "Move" {expresión.Move(Before, After)} o algo asi Sheets("nombrehoja").Move After:=Sheets(1) o Sheets("nombrehoja").Move Before:=Sheets(1)

Saludos a todos!, desde Honduras:)

publicado

Hola Antoni, muy buena la idea,

Aqui van una variante de tu metodo tambien de un par de lineas para el monton:

Crea una copia de la hoja actual

    ActiveSheet.Copy Sheets(1)
ActiveSheet.Name = "1"[/CODE]

Y esta no tiene tiene nada que ver con el tema, pero he intentado usarla sin exito para hacer lo de arriba en una sola linea.

Crea una hoja nueva con un nombre especifico

[CODE] Sheets.Add.Name = "Pruebas"[/CODE]

Y ya para terminar, lo que habia intentado con un fracaso absoluto, es esto:

[CODE]ActiveSheet.Copy Sheets(Sheets.Add.Name = "Pruebas")[/CODE]

Un saludo a todos

publicado

Hola avalencia

Gracias por la aclaracion, no obstante esta linea que mezcla metodo y propiedad si que funciona:

    Sheets.Add.Name = "Pruebas"[/CODE]

La que me referia que no funcionaba es la siguiente:

[CODE]ActiveSheet.Copy Sheets(Sheets.Add.Name = "Pruebas")[/CODE]

A veces me encabezono haciendo mezclas hasta que una de esas combinaciones funciona, y si en este caso funciona la primera, entonces pudiera ser que la segunda no fuera del todo una locura jeje.

Un saludo

publicado

Hola nuevamente Verzulsan. Pues tienes razon, en ese caso mezclando metodo y propiedad si que funciona, y me disculpo por la correccion, mas aun sabiendo yo mismo que hay excepciones (pocas en realidad) a la regla (en el caso que muestras no lo sabia). Me hace recordar cuando en el MSDN, alla por el año 2003 o 2004, decia que no se podia autoaplicar Kill a un libro abierto de Excel, y un amigo con algunos agregados, pues, lo logro (Pavel - Mexico)

Sobre lo del Copy, pues siendo un parametro pues no puede permite un metodo en él (en este si no hay excepcion a la regla). Lo que podria hacerse es usar Move como ya sugirio nuestro amigo Gerson

Abraham

publicado

Hola solo para contribuir un poco

Sheets.Add.Name = "Pruebas"

El metodo sheets.add devuelve un objeto (en este caso una hoja) es por eso que se le puede modificar la propiedad Name o cualquiera que se desee.

Tomando de la ayuda de Excel

Valor devuelto

Valor de tipo Object que representa la hoja de cálculo, gráfico u hoja de macro

el metodo copy no devuelve nada ....

Comentarios

Si no se especifica Before o After, Microsoft Excel crea un nuevo libro que contiene la hoja copiada

.

Es decir los metodos no sin mas que funciones unos devuleven un resultado y otros no, en este caso sheets.add devuelve un objeto y por consiguiente podemos modificar sus propiedades o inclusive aplicarle otro metodo, mientras el metodo copy no devuelve nada.

saludos cordiales

publicado

Gracias Abraham, Luis, Gerson, Never y Santi por vuestro interés y vuestros comentarios.

Ahora ya se un poco mas sobre el tema.

De hecho, yo para añadir una hoja copiando de otra, siempre había usado:


Sheets("Antigua").Cells.Copy Sheets("Nueva").Cells[/CODE]

Y al olvidarme .Cells en ambos lados, me di cuenta del tema.

Saludos y besos para todos. Besos, de hermano, por supuesto,,,,jajaja

Antoni.

publicado
Es decir los metodos no sin mas que funciones unos devuleven un resultado y otros no, en este caso sheets.add devuelve un objeto y por consiguiente podemos modificar sus propiedades o inclusive aplicarle otro metodo, mientras el metodo copy no devuelve nada.

Como siempre muy claro master never... por lo que te damos las gracias

Saludos y abrazos para todos (los besos ya los mando Antoni jeje)

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.