Modificar registros de Base de Access desde Excel usando SQL Query, VBA y ADO

Alta, Baja, Update, Búsqueda y Reportes en Tabla de Access desde Excel con VBA

Tip

 Ver curso completo Conectar Excel a Access usando VBA y ADO

Esta es la última parte de nuestro tutorial donde Conectamos Excel a Access. En este tutorial veremos cómo aplicar un UPDATE de SQL para actualizar registros de una Tabla de Access desde Excel usando VBA (Visual Basic para Aplicaciones). Nos conectamos mediante ADODB y ejecutaremos un Query o una Consulta SQL. Este es quinto video de la serie:

  1. Insertar registros en tabla de Access desde Excel usando VBA y ADO.

  2. Buscar registros en tabla de Access desde Excel usando SQL Query, VBA y ADO.

  3. Generar Reportes de Base de Access desde Excel usando SQL Query, VBA y ADO.

  4. Eliminar registros de Base de Access desde Excel usando SQL Query, VBA y ADO.

Microsoft ActiveX Data Objects (ADO)

ADO es uno de los mecanismos que habilita a las aplicaciones cliente para conectarse a distintos orígenes de datos y acceder y manipular la información o los datos. La conexión de las aplicaciones hacia los orígenes de de datos se hace mediante proveedores OLEDB, que para nuestro tutorial usaremos un proveedor para conectarnos a una Base de datos de Access.

Ver video Actualizar registros de tabla de Access

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Activar Referencia en el IDE de Visual Basic para aplicaciones

Antes de escribir cualquier código para conectarnos a una base de datos mediante ADO es importante activar la referencia a la librería de ADO.

  • Abrimos el IDE de VBA usando Alt + F11.

  • Abrimos el menú Herramientas > Referencias.

  • Marcamos Microsoft ActiveX Data Objects 6.1 Library.

Activamos la referencia a Microsoft ActiveX Data Objects 6.1 Library (ADO).

Figura 1. Activamos la referencia a Microsoft ActiveX Data Objects 6.1 Library (ADO).

Base de datos Access y tabla Ventas

Para este tutorial usaremos la misma base de datos MiBase.accdb y la tabla MiTabla. En dicha tabla daremos de alta registros, los consultaremos y tendremos la opción de eliminarlos.

Base de datos y Tabla de Access.

Figura 2. Base de datos y Tabla de Access.

Formulario de Consulta y Actualización

En el formulario de Consulta le añadiremos un botón nuevo que se llamará Modificar seleccionado que nos servirá para actualizar o aplicar un UPDATE a nuestra Tabla MiTabla en base a los valores que ingresemos en un Formulario de Actualización.

  • Primero Buscamos registros en base a un criterio.
  • Al dar clic en el botón Modificar se validará que hayamos elegido un elemento y que el elemento no sea el encabezado.
  • Si el elemento no es el encabezado, se mostrará un Formulario de modificación.

Usamos el Formulario de Actualización para modificar valores de la Tabla de Access.

Figura 3. Usamos el Formulario de Actualización para modificar valores de la Tabla de Access.

Código VBA de la macro

El siguiente código se ejecutará al momento de dar clic en el botón Modificar seleccionado y se validará que hayamos elegimos un elemento y que no sea el encabezado.

Nota: Es importante que la base de datos de Access se encuentre en la misma ruta de este archivo para que funcione esta macro. La base de datos tiene como nombre MiBase.accdb.

Private Sub CommandButton4_Click()
Dim i, j, Cuenta, Numero

'Recorrer el listbox y detectar el item elegido
'''''''''''''''''''''''''''''''
Cuenta = Me.ListBox1.ListCount

'Validamos que haya un elemento seleccionado
For i = 0 To Cuenta - 1
    If Me.ListBox1.Selected(i) = True Then
        Numero = Numero + 1
    End If
Next i

If Numero = 0 Then MsgBox "Debes elegir un elemento", vbExclamation, "EXCELeINFO": Exit Sub

For j = 0 To Cuenta - 1
    If Me.ListBox1.Selected(j) = True Then
        If Me.ListBox1.ListIndex = 0 Then MsgBox "Encabezado!", vbCritical, "EXCELeINFO": Exit Sub
        'ValorElegido = Me.ListBox1.List(j)
        'MsgBox ValorElegido
    End If
Next j

UserForm4.Show

'Buscar
Call CommandButton1_Click

End Sub

El siguiente código se ejecutará en el evento Initialize del Formulario de Actualización y pasará los valores del elemento seleccionado a los TextBoxes del Formulario.

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

'Al iniciar el formulario
Private Sub UserForm_Initialize()
Dim Cuenta As Integer
Dim i As Integer
Dim Nombre, Ventas, Comentarios

Cuenta = UserForm2.ListBox1.ListCount

For i = 0 To Cuenta - 1
    If UserForm2.ListBox1.Selected(i) = True Then
        valorID = UserForm2.ListBox1.List(i)
            Me.lblID.Caption = valorID
        Nombre = UserForm2.ListBox1.List(i, 2)
            Me.txtNombre.Value = Nombre
        Ventas = UserForm2.ListBox1.List(i, 3)
            Me.txtVentas.Value = Ventas
        Comentarios = UserForm2.ListBox1.List(i, 4)
            Me.txtComentarios.Value = Comentarios
    End If
Next i

End Sub

El siguiente código se ejecutará al presionar el botón Actualizar del formulario de Actualización.

Public valorID
Option Explicit

Private Sub CommandButton1_Click()
Dim Conn As ADODB.Connection
Dim MiConexion
Dim Rs As ADODB.Recordset
Dim MiBase As String
Dim Query As String
Dim i, j
Dim Cuenta As Integer
Dim Numero As Integer
Dim Nombre, Ventas, Comentarios

MiBase = "MiBase.accdb"

Set Conn = New ADODB.Connection
MiConexion = Application.ThisWorkbook.Path & Application.PathSeparator & MiBase

With Conn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .Open MiConexion
End With

Nombre = Me.txtNombre.Value
Ventas = Me.txtVentas.Value
Comentarios = Me.txtComentarios.Value

'UPDATE MiTabla SET Nombre = 'valor', Ventas = 'valor', Comentarios = 'valor' WHERE Id = valorID
Query = "UPDATE MiTabla SET Nombre = '" & Nombre & "', Ventas = '" & Ventas & "', Comentarios = '" & Comentarios & "' WHERE Id = " & valorID

Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseServer
Rs.Open Source:=Query, _
ActiveConnection:=Conn

'Cerrar la conexión
'Rs.Close
Conn.Close
Set Rs = Nothing
Set Conn = Nothing

MsgBox "Registro actualizado", vbInformation, "EXCELeINFO"
Unload Me

End Sub

Descarga el archivo de ejemplo

Alta, Baja, Update, Búsqueda y Reportes en Tabla de Access desde Excel con VBA.zip

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

You may also like...