Excel 2016 Llenar ComboBox ActiveX con datos que se encuentran en otro Libro sin necesidad de abrirlo

Necesito que el Combobox1 del libro "Facturacion" Hoja "FACTURACION" se cargue con los datos que se encuentran en el libro "Clientes" Hoja "CLIENTES" Rango "A6:A500" y que este último libro no se abra. No sé si es posible realmente o que se abra oculto y se cierre al seleccionar el dato. El dato seleccionado se debe colocar en la celda "L14". He intentado de varias maneras pero no lo logro. No puedo colocar la hoja en el mismo libro porque necesito que también funcione en otro libro, o sea, el libro "Clientes" debe funcionar con el libro "Facturacion" y el libro "Notas" recibiendo ambos la misma información que está en "Clientes".

Intenté colocar en ambos libros la hoja "CLIENTES" pero no pude conectarlas para que si hay algún cambio en una se refleje en la otra automáticamente y ambos libros reciban la misma información sin que falte nada. Si existe otra manera de hacer lo que requiero agradezco mucho sus sugerencias.

1 Respuesta

Respuesta
1

[Hola

No es conveniente tener varios archivos para un mismo trabajo, pero bueno eso es decisión tuya.

Sobre tu dilema, si quieres que el Combobox se llene sin necesidad de abrir el otro libro, debes usar ADO.

En el editor de VBA activa las referencia a "Microsoft ActiveX Data Object x.x Library" en donde x.x es el número de la versión superior que veas. Luego pega esto en un módulo estándar:

Sub llenarCombo()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= D:\Ejemplos\Excel\ComboboxDependientes.xlsm;Extended Properties=""Excel 12.0 Xml;HDR=YES;"""
Set rst = New ADODB.Recordset
With rst
    .CursorLocation = adUseClient
    .CursorType = adOpenStatic
    .LockType = adLockOptimistic
    .Open "SELECT Departamento FROM [Hoja1$A1:A1868]", cnn, , , adCmdText
End With
Rst. MoveFirst
Do
    Hoja1.ComboBox1.AddItem rst.Fields!Departamento
    rst.MoveNext
Loop Until rst.EOF
cnn.Close
Set rst = Nothing
Set cnn = Nothing
End Sub

 Evidentemente ajusta los nombres y ruta del archivo de datos, así como el nombre de hoja y rango de donde se obtienen los datos y por supuesto el nombre de la hoja y combobox que reciben los datos.

Comentas

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas