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..
1 respuesta
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 SubLó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

