Macro para llenar diferentes archivos con valores de celdas.

Espero explicarme:

Tengo 2 archivos:

-----------------------------------------------------------------------------------

El primero llamado "todo_1.xls", este contiene 6 columnas y cada una con los siguientes datos:

* Artista: ---------

* No. De Catálogo: ID del álbum

* QQ: ID de la canción

* Cantidad recibida: ########

* Unidades: #######

Canción: --------------

Por ejemplo:

Artista No. Catálogo QQ C. R. Units Canción

A 0789 978 5 400 @

A 0789 977 36 400 @!#

A 0789 976 60 400 @!#$%

B 1080 100 50 200 F1

B 1080 101 70 200 F2

B 1080 102 55 200 F3

C 4000 500 40 1000 Gi

Este archivo solo se crea una vez

-----------------------------------------------------------------------------------

El segundo tiene los mismos datos que el primero; este no tiene un nombre fijo, el archivo se llamara dependiendo del artista:

Artista: ************ QQ: *************

No. Catalogo: *************

Canción Cantidad Unidades

### #### ###

La diferencia del segundo es que aquí separa a cada artista con su respectiva información.

-----------------------------------------------------------------------------------

Tengo todos estos datos, para cada artista tiene su archivo.

Como puedo hacer una macro para que los datos del artista A se copien solamente en el archivo "A.xls", los del B en "B.xls" y así sucesivamente. Cabe mencionar que el total de canciones varia con cada artista como puede incrementar o decrementar, nunca hay una cantidad determinada de celdas con canciones, esta varia de 1 hasta 25 o más.

1 Respuesta

Respuesta
1

Están muy bien los datos que pusiste, pero no me quedó muy claro lo que necesitas.

¿Quieres pasar el archivo "todo_1.xls" a varios archivos uno por cada artista?

Y qué datos quieres en los archivos destino, ¿las mismas 6 columnas?

¿El nombre del archivo se va a llamar con el nombre del artista?

Saludos. Dam

1. Si quiero pasar los datos "todo_1.xls" a varios archivos, todo depende del artista.

2. Se tienen que pasar todos los datos, pero se filtran, solo se tienen que pasar los que son del artista A al "A.xls"; los del artista B al "B.xls" y así sucesivamente.

2. Los archivos que se generan es uno completo que vienen todos los datos y los demás son los archivos con los nombres de los artistas.

Sigue las Instrucciones para un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro / Selecciona: copiaartistas
9. Aceptar.
10. Para ejecutarla dale click a la imagen.

Sub copiaartistas()
'por.dam
Application.ScreenUpdating = False
ruta = "C:\Documents and Settings\mis canciones\"
Set h1 = Workbooks("todo_1.xls")
h1.Activate
    Columns("A:A").Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Columns("A:A").Select
    ufila = Range("A" & Rows.Count).End(xlUp).Row
    Range("A1:A" & ufila).AdvancedFilter Action:=xlFilterCopy, _
    CopyToRange:=Range("B1"), Unique:=True
Set h2 = Workbooks(ActiveWorkbook.Name).Sheets(ActiveSheet.Name)
h1.Activate
    Columns("A:F").Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
Application.DisplayAlerts = False
For i = 2 To h2.Range("B" & Rows.Count).End(xlUp).Row
Application.StatusBar = "Copiando artista: " & h2.Cells(i, "B")
    h1.Activate
    ActiveSheet.AutoFilterMode = False
    Columns("A:F").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:=h2.Cells(i, "B")
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Application.CutCopyMode = False
    arch = h2.Cells(i, "B")
    ActiveWorkbook.SaveAs Filename:=ruta & arch & ".xls", _
    ActiveWorkbook.Close
Next
Application.ScreenUpdating = False
ActiveSheet.AutoFilterMode = False
Application.StatusBar = False
    h2.Activate
        ActiveWorkbook.Close
    Application.DisplayAlerts = True
MsgBox "Proceso de copiar artistas Terminado", vbInformation, "ARTISTAS"
End Sub

Realiza tus pruebas y me comentas

Saludos. Dam

Si es lo que necesitas.

Hola, lo estoy revisando, le estoy tratando de entender, crees que me puedas decir que hace cada linea de código...

Para ver como hace la copia de datos en su archivo.

Gracias.

Saludos

Con gusto te explico cada línea, pero antes me puedes decir si te funcionó la macro

Saludos. Dam

Si, poco a poco le voy entendiendo

Gracias

Podrías finalizar la pregunta y crear una nueva con las dudas que tengas del código, ahora que explicar línea por línea lo que significada cada una sería un tanto complicado, son más de 40 líneas!, pero podría decirte conceptualmente lo que hace cada una.

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas