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

Quisiera saber si se puede filtrar informacion de varios Libros de Excel, a un formulario aparte.

Por ejemplo:

a) Creo un formulario en un Libro de Excel.

b) Tengo varios "Libros de Excel con datos".

c) Filtrar datos de los libros de Excel con datos (b), y se muestren en el formulario (a).

Tengo una carpeta con varios Libros de Excel, y quisiera crear un nuevo Libro de Excel dentro de la carpeta mencionada, y en el libro nuevo crear un formulario donde me muestren datos de los "Libros de excel con datos"

¿Se puede filtrar datos de las otras hojas?

¿Cómo sería el código para ir a esos libros y copiar o filtrar algunos datos (ejemplo nombres)

PD: Los libros con datos deben estar cerrados, el único archivo abierto debe ser el cual contiene los Formularios donde se filtrarán los datos.

1 Respuesta

Respuesta
1

No te compliques el trabajo. Puedes abrir el libro, leer las hojas y los datos y puedes hacerlo con application. Screenupdating = false, con eso no se ve que abriste el libro.

Para leer un dato de un libro, solamente tienes que mencionarlo:

dato = workbooks("libro2.xlsx").sheets("Hoja3").range("B5")


Te anexo un ejemplo para leer un libro que está cerrado:

Sub leerlibrocerrado()
'Por.DAM
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ruta = "C:\trabajo\varios"
Hoja = "2013"
ref = "c:e"
Set h1 = ActiveSheet
'Set h2 = Sheets.Add
Dim Cnn As Object, Rec As Object
    ChDir ruta
    archi = Dir("*.xlsx")
    Do While archi <> ""
        archivo = Left(archi, Len(archi) - 5)
        Set Cnn = CreateObject("adodb.connection")
        Set Rec = CreateObject("adodb.recordset")
        Cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & _
                ruta & IIf(Right(ruta, 1) <> "\", "\", "") & archivo & _
                ";extended properties=""excel 8.0;hdr=no"""
        Rec.Open "select * from [" & Hoja & "$" & ref & "]", Cnn, 1, 1
        h1.Range("B5").CopyFromRecordset Rec
        Subtotal = Subtotal + h1.Range("B5")
        archi = Dir()
    Loop
Rec.Close: Set Rec = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Las siguientes instrucciones son las que te permiten leer un rango de una hoja de un libro cerrado

Set Cnn = CreateObject("adodb.connection")
Set Rec = CreateObject("adodb.recordset")
Cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & _
ruta & IIf(Right(ruta, 1) <> "\", "\", "") & archivo & _
";extended properties=""excel 8.0;hdr=no"""
Rec.Open "select * from [" & Hoja & "$" & ref & "]", Cnn, 1, 1


Busca en la red más ejemplos si quieres leer datos de un archivo cerrado.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas