Upload
hermis-ramos-espinal
View
217
Download
0
Embed Size (px)
Citation preview
7/29/2019 10-MacrosVBAExcelAvanzado-EAA
1/7
Excel Avanzado con VBA 10
Ing. Enrique Alfaro
7/29/2019 10-MacrosVBAExcelAvanzado-EAA
2/7
Conexin con ADO (ActiveX Data Object)
17/02/2013Ing. Enrique Alfaro
Permite acceder a datos de formatos diferentes aExcel. Veremos un ejemplo con una fuente de datosde Microsoft Access 2007
7/29/2019 10-MacrosVBAExcelAvanzado-EAA
3/7
Agregar la LibreraMicrosoft ActiveX Data Objects 2.1
17/02/2013Ing. Enrique Alfaro
7/29/2019 10-MacrosVBAExcelAvanzado-EAA
4/7
Solucin (1/3)
Sub articulosADO()'Dimensionar variables
Dim conexion AsADODB.Connection
Dim recordset AsADODB.recordset
Dim rutabd, Proveedor, consultasql,cadenaconexion As String'definir la ruta de windows a la base de datos de access
rutabd = ThisWorkbook.Path & "\Tienda.accdb'definir el proveedor de OLE DB para MS Access 2007
Proveedor ="Provider=Microsoft.ACE.OLEDB.12.0;Data
Source="
17/02/2013Ing. Enrique Alfaro
7/29/2019 10-MacrosVBAExcelAvanzado-EAA
5/7
Solucin (2/3)
'definir la cadena de conexin cadenaconexion = Proveedor & rutabd'Establecer la variable objeto de conexin
Set conexion = NewADODB.Connection
'Abrir la conexin conexion.OpenConnectionString:=cadenaconexion'Establecer un juego de registros
Set recordset = New ADODB.recordset'Establecer la consulta sql
consultasql = "SELECT * FROM ARTICULOS'Abrir en memoria los registros
recordset.OpenSource:=consultasql,ActiveConnection:=conexion
17/02/2013Ing. Enrique Alfaro
7/29/2019 10-MacrosVBAExcelAvanzado-EAA
6/7
Solucin (3/3)
Enviar los nombres de campos a partir de la celda A1Fori = 0 To recordset.Fields.Count - 1 Range("A1").Offset(0, i).Value = recordset.Fields(i).NameNext
Copiar los registros a partir de la celda A2 Range("A1").Offset(1, 0).CopyFromRecordset
recordset.DataSourceEnd Sub__________________________________Sub limpiar() ActiveSheet.Range("A1:E13").Clear
End Sub
17/02/2013Ing. Enrique Alfaro
7/29/2019 10-MacrosVBAExcelAvanzado-EAA
7/7
Resultado
17/02/2013Ing. Enrique Alfaro