Intercambiar datos entre Excel y Access 2010 (ADO) con macros VBA


ActiveX Data Objects (ADO) es uno de los mecanismos que usan los programas de computadoras para comunicarse con las bases de datos, darles órdenes y obtener resultados de ellas.
Con ADO, un programa puede leer, insertar, editar, o borrar, la información contenida en diferentes áreas de almacenamiento dentro de la base de datos llamadas tablas. Además, se puede manipular la propia base de datos para crear nuevas áreas para el almacenamiento de información (tablas), como también alterar o eliminar las ya existentes, entre otras cosas.
Fue desarrollado por Microsoft y es usado en ambientes Windows por lenguajes de programación como Visual Basic, C++, Delphi entre otros, como también en la Web mediante el uso de Active Server Pages (ASP) y el lenguaje VBScript.
Un ejemplo muy simple de como intercambiar datos entre Excel y Access 2010 usando una conexión ADO y macros VBA.
El primer trozo de código escribe o transfiere datos desde Excel 2010 hacia Access 2010, desde las celdas “A1″ (para el nombre) y “B1″ (para el apellido) hacia la base de datos que lleva el nombre de “datos.accdb” con una sola tabla “tabla1″ y dos campos “nombre” y “apellido”, que se encuentran en la misma carpeta que nuestro archivo en Excel 2010.

Sub escribiraccess()

Dim cs As String
Dim sPath As String
Dim sql As String
Dim cn As ADODB.Connection

sPath = ThisWorkbook.Path & “\datos.accdb”
cs = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & sPath & “;Persist Security Info=False;”

Set cn = New ADODB.Connection
cn.Open cs

sql = “insert into tabla1 (nombre, apellido) values(‘” & Cells(1, 1).Value & “‘, ‘” & Cells(1, 2).Value & “‘)”

cn.Execute sql

cn.Close

Set cn = Nothing

End Sub

El segundo trozo de código transfiere datos desde Access 2010 hacia Excel 2010 previamente escritos con el código anterior y lo enviará a la celda “C1″.

Sub escribirexcel()

Dim cs As String
Dim sPath As String
Dim sql As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

sPath = ThisWorkbook.Path & “\datos.accdb”
cs = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & sPath & “;Persist Security Info=False;”

Set cn = New ADODB.Connection
cn.Open cs

Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
End With

sql = “select * from tabla1”

rs.Open sql, cn

Range(“C1”).CopyFromRecordset rs

rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

End Sub

Descargar ejemplo sobre Excel y Access 2010
Escrito por M. Vizcarra el 12/01/2012. Clasificado como Access, Excel
http://www.combito.com/?p=464

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s