Excel - obtener varios excel de un excel

 
Vista:
sin imagen de perfil

obtener varios excel de un excel

Publicado por luis (8 intervenciones) el 03/10/2022 00:07:09
Buenas.A ver si a la segunda lo hago bien y adjunto el excel de prueba. Lo adjunto como rar, como excel no me deja. Voy a ver el video de las tablas dinamicas, a ver si aprendo algo.
Perdón por mi lenguaje si no me expreso adecuadamente. Tambien decir que no se si puede hacer con excel, pero me han dicho que se puede programar en visua basic, y no tengo ni idea de programar.
tengo un excel "madre" que obteng de otro programa con cientos de filas y unas pocas columnas. Necesito "obtener" en varias pestañas varios excel con menos filas, dependiendo de varios filtros de las columnas.
Adjunto un excel de prueba, el excel "madre", del que tengo que sacar varios excel divididos por pestanas, en el que cada pestaña la tengo que filtrar por la columna "tipo" y dependendiendo de "tipo", despues por "via".
Ademas que cada pestaña me ordene las filas por la columna "fecha de entrada", de tal modo que en la fila 1 esté el mas antiguo.
Otra cosa que no se si podría hacer es "dejar" la primera fila de cada pestaña fija con titulos.
Y en la ultima pestaña que hay que hacerse, que ponga los expedientes que no hayan sido filtrados en las pestañas anteriores.
No se si me he explicado bien. Necesito ayuda y no tengo ni idea de por donde empezar. Si alguien se anima y ne cesita culaquier aclaracion, que no dude en decirme.
Muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

obtener varios excel de un excel

Publicado por luis (8 intervenciones) el 03/10/2022 10:16:07
Buenas, y lo primero gracias por la respuesta.
Lo que necesito es que aparezcan los diferentes "tipos" en diferentes pestañas y ordenados por fecha de entrada, y que sea un proceso "automático", que cuando cargue el excel madre con cientos de filas, me lo saque ya hecho, sin hacer yo nada. Lo que no sé es si puede hacer como me dices o hay que hacer algo de programación. De nuevo, gracias por tu respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

obtener varios excel de un excel

Publicado por luis (8 intervenciones) el 03/10/2022 15:52:58
Muchas gracias por tu ayuda, pero mi intencion es que, si se puede, lo haga automatico, al abrir el excel "madre", no de uno en uno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

obtener varios excel de un excel

Publicado por Antoni Masana (2477 intervenciones) el 04/10/2022 17:44:13
A parte de las Tablas Dinámicas tienes el AutoFiltro.

En el libro de muestra me sales 25 hojas diferentes de Tipo + Vía

Puedo hacer una macro que genere estas hojas. La macro crea la hoja y pone

Otra cosa que no se si podría hacer es "dejar" la primera fila de cada pestaña fija con títulos.

Y ahora una pregunta ¿Que expedientes no se han filtrado?

Y en la ultima pestaña que hay que hacerse, que ponga los expedientes que no hayan sido filtrados en las pestañas anteriores.

Procedimiento de la macro.

La macro lo primero que hace es ordenar la hoja Madre por Tipo + Vía + Fecha
Recorre la filas desde la 1 hasta que encuentre una vacia. Generalmente valor de una columna que siempre que hay datos en la fila hay datos en esa columna.
Verifica si existe la hoja, la crea y pone los títulos y renombra la hoja como Tipo + Via, (por Ejemplo: UK-TR)
Copia los datos en esta hoja hasta un cambio de Tipo + Vía.

Ahora la macro.

He visto un problema y es que las fechas estan como texto y no como fechas, lo que quiere decir que el 01/02/2022 esta antes que el 02/01/2022.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
Option Explicit
 
Sub Actualizar()
    Call Paso_1
    Call Paso_2
    Call Paso_3
End Sub
 
' </> -------------------------------------------------------------------- </>
' </> ---&--- Arregla la presentación de la hoja Madre
' </> -------------------------------------------------------------------- </>
 
Private Sub Paso_1()
    Columns("A:F").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
 
    Range("A1:F1").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
 
    Selection.Font.Bold = True
    Columns("A:A").EntireColumn.AutoFit
    Columns("B:B").EntireColumn.AutoFit
    Range("A2").Select
 
    ' ---&--- Inmoviliza la fila 1
 
    With ActiveWindow
        .SplitColumn = 0
        .SplitRow = 1
    End With
    ActiveWindow.FreezePanes = True
End Sub
 
' </> -------------------------------------------------------------------- </>
' </> ---&--- Ordena la hoja Madre por Tipo + Via + Fecha
' </> -------------------------------------------------------------------- </>
 
Private Sub Paso_2()
    Dim Fila As Long
    Fila = 1
    While Cells(Fila, "A") <> Empty
        Fila = Fila + 1
    Wend
 
    Columns("A:F").Select
    ActiveWorkbook.Worksheets("madre").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("madre").Sort.SortFields.Add2 _
                                       Key:=Range("D2:D" & Fila), _
                                       SortOn:=xlSortOnValues, _
                                       Order:=xlAscending, _
                                       DataOption:=xlSortNormal
 
    ActiveWorkbook.Worksheets("madre").Sort.SortFields.Add2 _
                                       Key:=Range("E2:E" & Fila), _
                                       SortOn:=xlSortOnValues, _
                                       Order:=xlAscending, _
                                       DataOption:=xlSortNormal
 
    ActiveWorkbook.Worksheets("madre").Sort.SortFields.Add2 _
                                       Key:=Range("B2:B" & Fila), _
                                       SortOn:=xlSortOnValues, _
                                       Order:=xlAscending, _
                                       DataOption:=xlSortTextAsNumbers
 
    With ActiveWorkbook.Worksheets("madre").Sort
        .SetRange Range("A1:F" & Fila)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 
' </> -------------------------------------------------------------------- </>
' </> ---&--- Copia los datos de la hoja Madre a las hoja Tipo + Via
' </> -------------------------------------------------------------------- </>
 
Private Sub Paso_3()
    Dim Fila_Orig As Long, Antes As String, Hoja As String, Colu As String, _
        Fila_Dest As Long, A As Byte
 
    Fila_Orig = 2
    Antes = ""
    While Cells(Fila_Orig, "A") <> Empty
        Hoja = Cells(Fila_Orig, "D") & "-" & Cells(Fila_Orig, "E")
 
        ' ---&--- Creo una hoja nueva
 
        If Hoja <> Antes Then
            Sheets.Add After:=Sheets(Sheets.Count)
            Sheets(Sheets.Count).Name = Hoja
 
            For A = 1 To 6
                Colu = Mid("ABCDEFG", A, 1) & ":" & Mid("ABCDEFG", A, 1)
                Sheets(Hoja).Cells(1, A) = Sheets("Madre").Cells(1, A)
                Sheets(Hoja).Columns(Colu).ColumnWidth = Sheets("Madre").Columns(Colu).ColumnWidth
            Next
 
            Sheets(Hoja).Select: Call Paso_1
            Sheets("Madre").Select
 
            Fila_Dest = 2
            Antes = Hoja
        End If
 
        ' ---&--- Copia los datos de la hoja madre a la hoja Tipo + Via
 
        For A = 1 To 6
            Sheets(Hoja).Cells(Fila_Dest, A) = Sheets("Madre").Cells(Fila_Orig, A)
        Next
 
        Fila_Orig = Fila_Orig + 1
        Fila_Dest = Fila_Dest + 1
    Wend
End Sub

Para cualquier cosa nos hablamos.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

obtener varios excel de un excel

Publicado por luis (8 intervenciones) el 04/10/2022 23:19:23
Toma ya!!! Muchas gracias!!!!

Pero.... ahora como hgao para llevar la macro a mi excel???

Sobre la pregunta mia, de que pasa con los expedientes que no se han filtrado, viendo esto, me acabo de dar cuenta que haciendolo así, no va a haber ningun expediente sin filtrar. pregunta contestada.

Sobre lo de cambiar el formato de las fechas, lo deberia cambiar antes de la macro??? o lo hace la macro???

Y ahora, preguntas mias. Se podria hacer la macro en un excel madre con mas columnas??? y por supuesto con cientos de filas??? Por desconocimiento de como funciona esto de las macros, como habria que hacer??? una vez tenga mi excel madre, le doy a algun boton, y lo hace solo??? De ser asi, creo que ya lo tendria, estoy flipando. muchas gracias por todo ese trabajo.

Gracias de nuevo por todo y por perder el tiempo con mi tema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

obtener varios excel de un excel

Publicado por Antoni Masana (2477 intervenciones) el 05/10/2022 14:18:02
Respuesta:

Toma ya!!! Muchas gracias!!!!

Pero.... ahora como hgao para llevar la macro a mi excel??? Hay varias formas de hacerlo. Te cuento la más sencilla para ti:
Ves al menu pestaña Vista i a Macros.
Pon un nombre de la macro, por ejemplo AA
Pulsa el botón Crear, borra las tres lineas que salen, copia el código y cierra la ventana con la X


Sobre la pregunta mia, de que pasa con los expedientes que no se han filtrado, viendo esto, me acabo de dar cuenta que haciendolo así, no va a haber ningun expediente sin filtrar. pregunta contestada.

Sobre lo de cambiar el formato de las fechas, lo deberia cambiar antes de la macro??? o lo hace la macro??? La macro puede hacer la conversión

Y ahora, preguntas mias. Se podria hacer la macro en un excel madre con mas columnas??? Si se podría, hay que hacer algún cambio y por supuesto con cientos de filas??? Por las filas el limite esta en la hoja Por desconocimiento de como funciona esto de las macros, como habria que hacer??? una vez tenga mi excel madre, le doy a algun boton, y lo hace solo??? Tienes que ir al menú pestaña Vista i a Macros y ejecutar la macro ACTUALIZAR De ser así, creo que ya lo tendria, estoy flipando. muchas gracias por todo ese trabajo.

Gracias de nuevo por todo y por perder el tiempo con mi tema.

P.D.: Para el tema de mas columnas se puede hacer para un número fijo de columnas, la macro actual esta para 6 columnas de datos, o para un número indeterminado. En el primer caso hay que modificar las líneas de código: 14, 27, 110, 111, 125. En el segundo caso se modifican las mismas líneas pero la macro ha de buscar cuantas columnas de datos hay.

NOTA: La macro solo se puede ejecutar una vez, si añades más lineas a la hoja madre y quieres volver a ejecutar la macro para añadirlas hay que hacer alguna modificación para que funcione y no de error.


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

obtener varios excel de un excel

Publicado por luis (8 intervenciones) el 05/10/2022 20:05:57
Buenas y gracias por la respuesta,

Siento decirte pero me ha dado error de compliación, error de sintaxis, te adjunto pantallazo. He hecho como me has dicho, y al darle a la macro, acutalizar, ha salido ese error. Que pena, con las ganas que tenia.
Mi archivo "madre" realmente es mas grande, por eso te decia de si se puede hacer la macro con mas filas y mas columnas. Queria probar primero con archivo pequeño y si se podia hacer lo que quiero, luego extrapolarlo a un archivo mas grande.

Gracias por tu respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

obtener varios excel de un excel

Publicado por Antoni Masana (2477 intervenciones) el 05/10/2022 20:53:54
Al importar el código se han insertado líneas donde no debe.
Borra el modulo e importa el que te adjunto y un documento Word explicando brevemente como adjuntar el codigo
Abre el Visual Basic y sigue las instrucciones del documento.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

obtener varios excel de un excel

Publicado por luis (8 intervenciones) el 05/10/2022 23:08:00
Ha funcionado!!!!! muchas gracias!!!!
He seguido las instrucciones y ha funcionado perfectamente. Al haber pocas filas, aparecen pocas filas en cada pestaña, pero ha dado el resultado.
Y ahora que ya veo que se puede hacer con un excel pequeño, (no se si es pedirte demasiado), adjunto el excel que realmente obtengo de mi programa. He escrito en él algun detalle que necesitaria y alguna pregunta más. Ya siento ser tan pesado, pero es lo que tiene el no saber.
De nuevo muchas gracias por todo, por tu tiempo y por tu trabajo.

P.D.: En caso de obtener otro excel madre de diferente formato; mas columnas,,,, filtrar de otra manera..... habria que hacer otra macro??? entiendo que si, pero lo desconozco.
Hay algun manual, no muy complicado, para poder seguir cacharreando y no molestar más por aqui, o lo ves dificil para un novato???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

obtener varios excel de un excel

Publicado por Antoni Masana (2477 intervenciones) el 07/10/2022 17:20:20
Empezare por el final.

La solución más simple es tener un libro con la macro y un botón o lo que sea necesario, que se llame por ejemplo "Macro_Madre.xlsm"
Se abre el libro de la macro.
Se abre el libro con los datos y desde la hoja madre se ejecuta la macro.

Se puede hacer mas seguro haciendo que la macro solicite el nombre del libro o abra el explorador para buscarlo y una vez abierto verifique que es el libro correcto mirando el nombre de la hoja y los datos de la cabecera se correspondan a la hoja madre:
- ID Expediente
- Fecha de entrada
- Fase: Código
- Tipo de permiso: Código
- Vía de Acceso: Código
- Estado: Código


El número de filas que puede tratar la macro es hasta 1.048.576.

Convertir el código de la columna A de esto: 10020220001286 a esto: 01XX2022XXXXXXX
significa que debe quedar asi 010020220001286

Es decir ¿añadir un CERO a la izquierda? Se arregla con un cambio de formato que puede hacer la macro.

Cuando decias de copiar más columnas ¿A que te refieres?

La MACRO puede eliminar los textos ": Código" de los tÍtulos de la Fila 1

Antes:
- ID Expediente
- Fecha de entrada
- Fase: Código
- Tipo de permiso: Código
- Vía de Acceso: Código
- Estado: Código

Después

- ID Expediente
- Fecha de entrada
- Fase
- Tipo de permiso
- Vía de Acceso
- Estado

Desde la MACRO Se puede convertir los datos de la columna B de texto a fecha.


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

obtener varios excel de un excel

Publicado por luis (8 intervenciones) el 07/10/2022 22:23:43
Buenas, y muchas gracias de nuevo.
Gracias por las respuestas a mis dudas. Creo que se resuelven casi todas.
No te molesto más. Voy a ver si consigo hacer algún cambio y transformar la macro sin fastidiar nada.
Gracias de nuevo por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar