Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Hacer consulta a una base datos Access y pasar el resultado obtenido a la celda.

publicado

Buenos días;

-Tengo creado una  macro Excel y una  base de datos Access.

Lo que me gustaría conseguir si es posible es lo siguiente:

 Hacer una consulta a una tabla Access según el valor de una celda Excel y que el resultado obtenido me lo aloje en otra celda adyacente.

Adjunto macro de ejemplo.

Saludos y buenas tardes o días a todos.

MConsulta.zip

Featured Replies

publicado

Hola Benito,

Pega este codigo en en el modulo de la hoja.

Private Sub Worksheet_Change(ByVal Target As Range)
   Application.EnableEvents = False
   If Target.Address = "$B$2" Then [B3] = "": [B3] = BuscaNombre(CLng(Target))
   Application.EnableEvents = True
End Sub

Function BuscaNombre(ID As Long) As String
   On Error GoTo Ctrl_Err
   Dim miConexion As New ADODB.Connection
   Dim RS As New ADODB.Recordset
   Dim CadenaSql As String
   With miConexion
      If .State = 1 Then .Close
   ' access2010
      .Provider = "Microsoft.ACE.OLEDB.12.0"
   'Ruta BBDD
      .ConnectionString = Application.ActiveWorkbook.path & "\BBDD.accdb"
      .Open
   End With
   CadenaSql = "SELECT tb_cliente.nombre FROM tb_cliente" & _
               " WHERE (((tb_cliente.Id_Cliente)=" & ID & "));"
   With RS
      If .State = 1 Then .Close
      .CursorLocation = 3
      .Open CadenaSql, miConexion, 3, 1
      BuscaNombre = !nombre
   End With
   RS.Close
salir:
   Set RS = Nothing
   miConexion.Close: Set miConexion = Nothing
   Exit Function
Ctrl_Err:
   If Err.Number = 3021 Then
      MsgBox "No existe este registro"
   Else
      MsgBox "Algo no ha funcionado"
   End If
   GoTo salir
End Function

Lo hago con un ADO. COn conexion a Access 2010 si tuvieras otro habrá que cambiar la cadena de conexión.

Ha considerar: tu tenias activada la Referencia Microsoft Active Data Object LIbrary 2.8, desactivala y activa una mayor, con ADO nunca se sabe. En mi caso con Excel 2010 : Microsoft Active Data Object LIbrary 6.1.

Ah se me olvidaba, He visto en la tabla de access que la indexacion está hecha con el Numero de cliente y no con el ID, yo le pondria el ID. Y he supuesto que buscas con el ID, sino tedrás que cambiar la cadena SQL.

Editado el por ikanni

publicado
  • Autor

Hola Ikani, primero encantado de interactuar contigo. 

He visto el código que me pasas y funciona correctamente. Lo único es que no puedo cambiar la llave primaria del campo "nºcliente" al campo "Id_Cliente" porque ese número corresponde al "ID" de otro programa y solamente paso algunos clientes y no todos. Sí es verdad que sería mejor.

Un saludo y muchas gracias por contestar. 

Un ? para ti.

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.