Filtrar dos o más libros de Excel

Dante, buena noche

Tengo una duda muy similar a la de un tema que respondiste;

¿Se puede filtrar datos a un Formulario desde otros Libros de Excel?

Mi tema es el siguiente:

Filtrar dos o más libros de Excel

Lo que necesito me ayuden es con:

Tengo un libro de Excel llamado 2015, bajo la macro que me ayudo a reacondicionar un experto del portal. Esta mira las tablas dinámicas que hay en el libro 2015 y las filtra en unas celdas en específico; la macro filtra todas las dinámicas que hay en el libro. Hasta ahí vamos muy bien.

Ahora, si quiero hacer los libros 2010 a 2014 de la misma forma que se hizo el libro 2015, porque son las mismas variables y se llaman de la misma forma, los datos también son muy similares; para desde otro libro aparte que se llamara ejemplo, COMPILACIÓN, poder hacer un macro que haga lo mismo de la referencia a unas celdas en específico, F1, F2, F3... Etc... Pero que me filtre de 2010 a 2015... Y en el nuevo libro COMPILACIÓN poder hacer un histórico de la información porque ahí es donde se referenciaría las celdas F1, F2... Etc

La macro no sé cómo quedaría y necesito me ayuden por favor a ver cómo quedaría el código. Ahora, si esto se puede hacer, pues creería que sí, tengo que tener todos los libros, ¿2010 a 2015 en un misma carpeta en el PC o pueden estar en carpetas diferentes?

Como la nueva macro (la que me van a ayudar a realizar) buscaría los libros 2010 a 2015 y filtraría todas las dinámicas que hay en ellas, ¿es necesario darles nombres específicos a todas las dinámicas de cada libro?.

El insumo de la nueva macro creería es el mismo que me ayudo a realizar el experto, pero se ampliaría a los libros 2010 a 2015 a las dinámicas de cada libro, que tiene la mismas estructura, datos y nombre de columna y se haría en el nuevo libro, COMPILACIÓN, el nuevo filtro de todas las demás... No sé si es claro o necesito ser un poco más específico... Espero sus comentarios y valiosa ayuda... Gracias, feliz noche...

La macro que he utilizado es la siguiente, claro esta adaptándola a lo que requiero y espero me ayuden;

Private Sub Worksheet_Change(ByVal Target As Range)

 If Not Intersect(Target, Range("F1")) Is Nothing Then

    Dim hoja As Worksheet                  '(aquí no sé si irían las hojas de un solo libro o de todos)

    Dim td As PivotTable                  '(aquí no sé si irían las dinámicas de un solo libro o de todos)

'Recorrer todas las hojas del libro (aquí requiero recorra todos las libros de 2010 al 2015 o libro por libro, es lo que no se)

    For Each hoja In ThisWorkbook.Worksheets

                 'Recorrer las tablas dinámicas de la hoja

        For Each td In hoja.PivotTables

                         'En base al campo de la tabla dinámica:

            With td.PivotFields("Tiendas")

                             'Limpiar todos los filtros

                .ClearAllFilters

                                 'Filtrar por el valor de la celda F1

                On Error Resume Next

               .CurrentPage = Range("F1").Value

             End With

             Next td

Next

End If

Private Sub Worksheet_Change(ByVal Target As Range)

 If Not Intersect(Target, Range("F2")) Is Nothing Then

    Dim hoja As Worksheet                  '(aquí no sé si irían las hojas de un solo libro o de todos)

    Dim td As PivotTable                  '(aquí no sé si irían las dinámicas de un solo libro o de todos)

'Recorrer todas las hojas del libro (aquí requiero recorra todos las libros de 2010 al 2015 o libro por libro, es lo que no se)

    For Each hoja In ThisWorkbook.Worksheets

                 'Recorrer las tablas dinámicas de la hoja

        For Each td In hoja.PivotTables

                         'En base al campo de la tabla dinámica:

            With td.PivotFields("Vendedores")

                             'Limpiar todos los filtros

                .ClearAllFilters

                                 'Filtrar por el valor de la celda F2

                On Error Resume Next

               .CurrentPage = Range("F2").Value

             End With

             Next td

Next

End If

End sub

Añade tu respuesta

Haz clic para o