Macro para crear una hoja nueva en Excel con nombre y además copiar datos de una hoja preexistente

El contexto de mi problema es el siguiente:

En una hoja cree una base de datos de artículos “X” con códigos, descripciones y categorías, en una hoja diferente cree un formulario en el que se ingresan códigos existentes en la base de datos y un número de piezas, información que posteriormente se envía a una tabla en una tercer hoja, esto con el fin de organizar mejor mis pedidos, hasta aquí no hay ningún problema, sin embargo, quisiera saber si hay alguna forma de asignar un macro para que cada vez que se ejecute, cree una hoja nueva con el nombre de una celda asignada (en este caso la celda k3 de mi hoja de pedido) y además de esto, pueda realizar una copia de algunos datos a esta hoja nueva (digamos E6:G200).

Esto debido a que comúnmente realizo varios pedidos de personas diferentes de una sola vez, y quisiera poder organizarlos de forma más ágil en hojas nuevas de Excel.

Espero haber descrito bien mi situación y de antemano ¡Muchas gracias!

Nota adicional: no necesito que se copie ninguna fórmula, únicamente los datos.

Respuesta

Prueba con esta macro

Sub copia()
Set hp = Worksheets("pedidos")
nombre = hp.Range("k3")
atras:
On Error Resume Next
    Sheets(nombre).Select
    If Err.Number > 0 Then
        Sheets.Add: ActiveSheet.Name = nombre
        GoTo atras
    End If
    Set hd = Worksheets(nombre).Range("e6:g200")
    hd.Value = hp.Range("e6:g200").Value
On Error GoTo 0
End Sub

Primero que nada muchas gracias por tu respuesta :)

Una vez que cambie los datos por los nombres de las hojas de mi libro y ejecute la macros, esta comenzó a crearme hojas sin parar, no se si esto haya sido ocasionado por que modifique alguno de los datos mal

2 respuestas más de otros expertos

Respuesta
1
Sub AddC()
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Hojax"
Set Celda = Worksheets("Tabla pedido").Range("k3")
Set Hoja = Worksheets("Hojax")
Set Rango = Worksheets("Tabla pedido").Range("c6:h200")
    Rango.Copy
    Sheets("Hojax").Select
    Range("b3").Select
    ActiveSheet.Paste
    Columns("C:F").ColumnWidth = 2.86
Hoja.Name = Celda
    Celda.ClearContents
    Rango.ClearContents
    Sheets("Tabla pedido").Select
End Sub

Este fue mi resultado final, si alguien puede darme su opinion estaria muy agradecido

Respuesta
1

No es precisamente lo que ocupaba sin embargo cumplió tu objetivo, me ayudo a encausarme. Gracias!

Soy realmente nuevo en esto de las macro y me gustaría tu opinión acerca de mi resultado final, dejo la macro que cree como comentario en esta misma pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas