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
  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      189
    • Comentarios
      99
    • Revisiones
      29

  • Crear macros Excel

  • Mensajes

    • Hola Buenas Noches, Me podrán ayudar a resolver un problema con una planilla que tengo, les comento brevemente. Tengo un archivo que cuenta con 2 hojas, la primera se llama "Movimientos" que básicamente muestra los productos con quiebres que se presentan y la hoja "Producción" que como su nombre lo dice son las producciones de cada producto según fecha de creación. Lo que necesito es lo siguiente: Cada vez que agregue una producción en la hoja "producción", debo ingresar el código creado su cantidad y lote respetivamente, además de la fecha en que se realiza la producción, en caso que sea mayor a las 12:00 se considera PM sino AM. Lo complejo es acá en la otra hoja llamada Movimientos: Esta hoja contiene una columna que se llama "Saldo", que básicamente es la diferencia de lo producido vs el quiebre en esa fecha. Una columna llamada "Cumple", que significa que ese pedido lleva si o no el producto con quiebre. Y una columna "Se preparo", que es si el pedido se preparo o no. Lo complicado viene acá es que si la fecha de la producción que ingrese en la hoja "Produccion", se hace después de la fecha de la hoja movimientos no me debe contar esa producción para efecto de la columna Saldos, si la fecha es igual o menor si se considera y ese saldo que queda disponible se puede ocupar para futuros ingresos de pedidos. Otra conducción es que las producciones siempre se deben asignar al pedido más antiguo de ese código salvo que la fecha de entrega ya haya pasado. La columna "Cumple" es básicamente para poder generar un KPI donde me indique cuales producciones se cumplieron con el plazo y cuales No. Espero me puedan ayudar ya que tengo la siguiente formula pero no sirve ya que me toma las unidades totales y no cumple con la restricción del horario. =SUMAR.SI(Produccion!A:A; $A2; Produccion!C:C) - SUMAR.SI.CONJUNTO($E$2:$E2; $A$2:$A2; A2)) Muchas gracias. Ejemplo..xlsx
    • Hola a ambos, Prueba con: =BYROW(G5:G6;LAMBDA(x;UNIRCADENAS(" - ";1;FILTRAR(E5:E10;B5:B10=x)))) Saludos,
    • Si tienes office 365 puedes usar algo como FILTER ó TEXTJOIN y si no tienes, entonces se puede jugar con las formulas, pero no te recomiendo mucho si son muchos datos, de todas maneras te dejo una fórmula y en vba, ya tu decides cual ocupar, vale Saludos BUSCAR.xlsm
    • Buenos días mis estimados Familia ayudaexcel,  Favor quisiera solicitar su gentil soporte con lo siguiente: Necesito una formula que al buscar encuentre el valor inicial de busqueda y dea todo los resultados encontrado en una celda como ejemplo. si este producto tienes 4 cantidades esta al hacer una formula de busqueda me dea el resultado de las 4 en una celda, dejo el adjunto a espera de su gran soporte.   BUSCAR.xlsx
    • Saludos Sr @Israel Cassales espero este bien quise verificar bien su solución y que las modificaciones que hice funcionarán adecuadamente y al respecto debo decir que su aporte es excelente ya que no solo me ayudo a resolver lo que necesitada sino que también me ayudo a solventar dos cosas más por lo cual estoy muy agradecido 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.