Conectar listbox vba excel con tabla ACCESS. Accdb
Tengo un form en excel vba, que a su vez tiene un listbox... Lo que pretendo es cargar el listbox en el evento initialize() del form, con una tabla access llamada AGOS_2018..

Hernán: Si alguien te contesta más experto que yo en Excel, mejor, pero si no fuera así, prueba éste código, que yo he puesto en el evento Click del User Form. Tu lo pones donde creas más oportuno
Private Sub UserForm_Click() Dim RutaBD As String Dim cnn As New ADODB.Connection Dim RecSet As New ADODB.Recordset Dim StrDB, StrSQL As String Dim StrTabla As String Dim LngCampos As Long Dim I As Long Dim BBien As Boolean Dim TiempoCero As Double, TiempoFin As Double, TiempoProceso As Double 'On Error GoTo ControlError TiempoCero = 0 TiempoFin = 0 TiempoProceso = 0 'Antes de comenzar tomo la lectura del Timer TiempoCero = Timer BBien = True 'CONECTAMOS CON LA BASE DE DATOS DE ACCESS Y ABRIMOS CONSULTA RutaBD = "C:\Desarrollos\Ejemplos\AccessOtrasOffice\ConexExcelAccess\BDJTJ.accdb" cnn.Provider = "Microsoft.ACE.OLEDB.12.0" cnn.Properties("Data Source") = RutaBD cnn.Properties("Jet OLEDB:Database Password") = "" cnn.Open StrTabla = "TblMunicipios" StrSQL = "SELECT * FROM " & StrTabla & " " RecSet.Open StrSQL, cnn '****JTJ Do Until TiempoProceso < 30 TiempoFin = Timer TiempoProceso = CInt(TiempoFin - TiempoCero) If cnn.State = adStateOpen Then 'No hacemos nada y seguimos el Proceso 'MsgBox "La Conexion esta Abierta" Else MsgBox "No se ha podido establecer Conexion", vbCritical, "SALIDA DE PROCEDIMIENTO" Exit Sub End If DoEvents Loop '***** '--------JTJ >> Prueba de llenar ListBox RecSet.MoveFirst Do Until RecSet.EOF ListBox1.AddItem RecSet.Fields(3) RecSet.MoveNext Loop End Sub
Lógicamente tendrás que cambiar los Nombres de la Base de Datos, el de la Ruta, el de la Tabla etc.
He puesto el Fields(3), que es el cuarto campo porque ahí es donde tengo el Nombre del Municipio. En tu caso parece ser que es el .Fields(0)
Con ese código he obtenido >>
Un saludo >> Jacinto

Hernán: Lo que yo veo en principio es que la ruta de la Base de datos >>RutaBD está incompleta, aunque supongo que será un error de copia simplemente.
En la parte de abajo has añadido un .Value en .Fields(0), elimínalo y me comentas. Un saludo >> Jacinto

Hernán: La esencia de éstas ayudas está en que las lea el máximo número de personas y se puedan beneficiar de las respuestas.
Si enmedio de un Post se cambia el contenido de pregunta original, por ampliación y/o modificación, pierde esa esencia que te comentaba, porque el lector no profundizará, por tanto es conveniente generar una nueva pregunta. No obstante y en ésta ocasión ya te contesto esa ampliación aunque realmente Excel no es mi fuerte.
Sustituye el Código que hay debajo de mi etiqueta y después del primer Loop, por éste otro.
Interpreto que en Total son 5 Columnas, si fueran 4 has de ajustar el código.
'--------JTJ >> Prueba de llenar TextBox ListBox1.ColumnCount = 5 ListBox1.ColumnHeads = False ListBox1.ColumnWidths = "20;80;30;250;150" 'Así regulas el ancho de cada columna Dim N As Integer RecSet.MoveFirst Do Until RecSet.EOF ListBox1.AddItem ListBox1.List(N, 0) = RecSet.Fields(0) ListBox1.List(N, 1) = RecSet.Fields(1) ListBox1.List(N, 2) = RecSet.Fields(2) ListBox1.List(N, 3) = RecSet.Fields(3) ListBox1.List(N, 4) = RecSet.Fields(4) N = N + 1 RecSet.MoveNext Loop
Los anchos de las Columnas debes irlos ajustando a lo que estés mostrando.
En la prueba que he cho, se muestran así:
Mis saludos >> Jacinto

¡Gracias! jacinto ya quedo...me alegro de tener una persona que este dispuesta a ayudar..saludos desde de santiago de chile

Hola jacinto experto.. ha funcionado muy bien el código que me enviaste, ahora quiero ir un poco más allá, necesito unir varias bases de datos en una sola... una especie de consolidado donde almacene la toda la información. ¿
Se pueden unir todas en una te adjunto una figura de las bases que quiero unir.. tienen todas el mismo formato pero son de distintos meses.. espero me puedas ayudar.. desde ya te lo agradezco
- Compartir respuesta
