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

Respuesta
2

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

¡Gracias! FUNCIONA...! pero se cae y manda este error:

Hernán: Pulsa en Depurar y señala la línea del error por favor. Saludos >> Jacinto

Gracias por ayudarme jacinto..aquí va el error

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

Lo elime y ahora corre bien... lo ultimo que quiero pedirte es cargar 4 columnas más...

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

Hernán: Mi sugerencia es que generes una pregunta nueva con el fin de que otros usuarios puedan beneficiarse de las respuestas y tú también ya que es posible que recibas más de una con enfoques distintos y así adaptas el que más te convenga. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas