publicado el 7 de noviembre15 años 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 el 7 de noviembre15 años 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 el 7 de noviembre15 años 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 el 7 de noviembre15 años 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 el 7 de noviembre15 años 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 el 8 de noviembre15 años Hola Verzulsan: Add, es un metodo, y Name es una propiedad, y obviamente los metodos no tienen propiedades, por eso no se puede lograr lo que mencionas Saludos Abraham
publicado el 8 de noviembre15 años 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 el 8 de noviembre15 años 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 el 8 de noviembre15 años 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 devueltoValor de tipo Object que representa la hoja de cálculo, gráfico u hoja de macro el metodo copy no devuelve nada .... ComentariosSi 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 el 8 de noviembre15 años Autor 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 el 8 de noviembre15 años y yo ya que ya me habia emocionado con los besos jejejejej Abraham
publicado el 8 de noviembre15 años 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)
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:
Tenemos una forma fácil de copiar una hoja con el nombre que queramos, es decir:
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.