Ver Mensaje Individual
  #12 (permalink)  
Antiguo 02/04/2007, 13:19
Avatar de mrocf
mrocf
 
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
Sonrisa Excel VBA. ¿como hago para buscar datos de otro libro?

Hola Epa2 :
Creo que aún no has implementado la asignación: Workbooks("nombre_1er_archivo").Worksheets("formul ario") ...

De modo que -si estás de acuerdo- te adjunto un modelo de lo que quieres realizar. Por ejemplo:
Libro1.xls : contiene el UserForm1
Libro2.xls : contiene la base de datos con DNI y Apellido y Nombre
UserForm1 : contiene al TextBox1 (DNI), al TextBox2 (AyN) y al CommandButton1 (Buscar)

En un Módulo de Prueba1.xls tienes la siguiente macro:
Código:
Sub BuscaDNIyNOMBRE()
' UserForm1 cuenta con: TextBox1(=DNI), TextBox2(=AyN) y
'                       CommandButton1(=botón de búsqueda)
    UserForm1.Show
    UserForm1.Hide
    Unload UserForm1
End Sub
Mientras que como código del UserForm1 tienes:
Código:
Private Sub CommandButton1_Click()
    Dim RangeDNI As Object
    Dim DNI As String, AyN As String
    Dim Respuesta As Single
' En A1: DNI. En B1: AyN
    [A1:B1].ClearContents
    TextBox2.Value = ""
    
    DNI = TextBox1.Text
    Application.ScreenUpdating = False
    Workbooks.Open FileName:="C:\Aaa\Prueba2.xls"
    Set RangeDNI = Cells.Find(What:=DNI, LookIn:=xlValues, LookAt:=xlPart, _
        SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
    If RangeDNI Is Nothing Then
        Respuesta = MsgBox("DNI no hallado")
        GoTo Fin
    End If
' Tomo el valor de AyN (DNI no hace falta pues ya lo tengo)
    AyN = RangeDNI.Offset(0, 1).Value
' Asigno AyN al TextBox2
    TextBox2.Value = AyN
'Asigno DNI y AyN a las celda A1 y B1 respectivamente
    [Prueba1.xls!A1].Value = DNI
    [Prueba1.xls!B1].Value = AyN
Fin:
    ActiveWindow.Close SaveChanges:=False
    Application.ScreenUpdating = True
End Sub
Asigna la macro "Sub BuscaDNIyNOMBRE" a un botón de macro y verás que además de buscarse el valor de DNI que ingreses en el TextBox1 en "Prueba2.xls", se desplegará un mensaje de advertencia cuando el DNI entrado no se encuentre en la base de datos.

Creo que tienes para "entretenerte" un buen rato y de paso compara con tu código para encontrar por qué no se llega a ver en las celdas la información.

Suerte y luego cuentas como te fue...

Última edición por mrocf; 02/04/2007 a las 13:25