Como cargar datos de tabla access a listbox en excel

Necesito cargar los datos que tengo en una tabla de access, a una listbox de un formulario en excel . De que forma puedo hacerlo la verdad no tengo la menor idea por lo acudo a unos de ustedes los expertos para que me puedan orientar

Respuesta
1

. :)

Hola! Bernardo. Para que lo siguiente te funcione deberías tener:

- Un Access de nombre: miBD. Accdb,

- Ubicado en la misma carpeta que tu Excel,

- Y conteniendo una tabla de nombre: mi Tabla

Si tu Userform contiene un listbox de nombre: ListBox1, entonces puedes hacer:

Set Conn = CreateObject("adodb.Connection")
With Conn
  .Provider = "Microsoft.ACE.OLEDB.12.0"
  .Properties("Data Source") = ThisWorkbook.Path & "\miBD.accdb"
  .Open
End With
Set Rst = Conn.Execute("Select * From [mi Tabla]")
If Rst.EOF Then
  ListBox1.Clear
Else
  With ListBox1
    .ColumnCount = Rst.Fields.Count: DoEvents
    .Column = Rst.getRows
  End With
End If
Conn. Close

¿Te sirve la idea?...

. :)

Y prescindiendo -por completo- de variables puedes intentar:

With CreateObject("adodb.Connection")
  .Provider = "Microsoft.ACE.OLEDB.12.0"
  .Properties("Data Source") = ThisWorkbook.Path & "\miBD.accdb"
  .Open
  With .Execute("Select * From [mi Tabla]")
    If .EOF Then
      ListBox1.Clear
    Else
      ListBox1.ColumnCount = .Fields.Count
      DoEvents
      ListBox1.Column = .getRows
    End If
    .Close
  End With
End With

¿Te sirve?...

Mario. Muchas gracias por su oportuna respuesta, tengo una base de datos llamada bdprograma como access mdb. Y de esta forma tengo miconexion a ella desde el excel pero nose como mostrar los datos de la tabla acces a mi listbox para poder selecionar un dato segun el dato que coloque en un textbox

Esta es mi conexion

Public Mibase As String
Public Conex As ADODB.Connection
Public Cadena As String
Public Rscliente As ADODB.Recordset

___________________________________________________________
Sub Conectar_Base()
  Mibase = ThisWorkbook.Path & "\Bdprograma.mdb"
  Cadena = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Mibase & ";"
  If Len(Dir(Mibase)) = 0 Then
  MsgBox " La base de Datos a la que intenta conectarse no Existe !!!", vbInformation, "Aviso Sistema.."
  Exit Sub
  End If
  Set Conex = New ADODB.Connection
  With Conex
  .CursorLocation = adUseClient
  If .State = 1 Then .Close
  .Open (Cadena)
  End With
End Sub

.

Pero... Bernardo: ¡Ya te ayudé!... Digo más: te mostré dos formas de hacerlo.

Ahora: ¿Cuál de las dos utilizaste y en que punto te ofrece inconvenientes?...

1 respuesta más de otro experto

Respuesta
1

Estos ejemplos

https://youtu.be/D9t0VOeLVFQ

https://youtu.be/f7ae2oY8Hd4

Así llenas un listbox despues de una consulta SQL realizada a uan base datos Access

Private Sub Label18_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
ColListBox = 7
Dim cn As ADODB.Connection, rs As ADODB.Recordset

UserForm9.ListBox1.ColumnCount = 10

UserForm9.ListBox1 = Clear
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & "data source=" & ThisWorkbook.Path & "\DBPericias.accdb;"
sql = "SELECT Circunscripcion, FechaPericia , HoraPericia, DomicilioPericia, Aceptada, Nom, Secre, NPericia, NExpediente, Caratula, FechaNotifi FROM ConsultaExpte WHERE FechaNotifi >= #" & Format((CDate(primerDia)), "mm/dd/yyyy") & "# AND FechaNotifi <= #" & Format((CDate(ultimoDia)), "mm/dd/yyyy") & "# ORDER BY Circunscripcion ASC, FechaPericia ASC"
Set rs = cn.Execute(sql)
If rs.EOF = True Then
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Exit Sub
Else
UserForm9.ListBox1 = Clear

'Adiciona un item al listbox reservado para la cabecera
UserForm9.ListBox1.AddItem

rs.MoveFirst
Do While Not rs.EOF
UserForm9.ListBox1.AddItem rs.Fields(0).Value
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 1) = Format(rs. Fields(1).Value, "dddd dd/mm/yyyy")
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 2) = Format(CDate((rs. Fields(2). Value)), "hh:mm")
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 3) = rs. Fields(3).Value
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 4) = rs. Fields(4).Value
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 5) = rs. Fields(5).Value
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 6) = rs. Fields(6).Value
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 7) = rs. Fields(7).Value
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 8) = rs. Fields(8).Value
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 9) = rs. Fields(9).Value
rs. MoveNext
Loop
UserForm9.ListBox1.ColumnWidths = "70 pt; 90 pt; 30 pt; 150 pt; 20 pt; 18 pt; 18 pt; 25 pt; 40 pt; 180 pt"

UserForm9. ListBox1. AddItem
UserForm9. ListBox1. AddItem
UserForm9. ListBox1. AddItem
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 3) = "Total de registros"
UserForm9. ListBox1. List(UserForm9. ListBox1.ListCount - 1, 4) = UserForm9. ListBox1. ListCount - 4

'Carga los datos de la cabecera en listbox
For ii = 0 To rs.Fields.Count - 1
UserForm9.ListBox1.List(0, ii) = rs.Fields(ii).Name
Next ii

End If
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub

En breve se harán una serie de ejemplos conectando Excel con Access suscribe a https://youtube.com/programarexcel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas