Cómo conectar access con excel, dudas

Quería saber cómo conectar access con excel pues habitualmente leo que se hace a través de ADO que sirve para relacionar las aplicaciones de Office y que para ello es necesario la biblioteca ActiveX Data Objects (ADO), pero yo me he conectado sin ADO con estas instrucciones, abriendo excel y extrayendo los datos a access. ¿Por favor, qué diferencia hay entre una conexión y otra, porque parece que ADO es imprescindible pero a mí no me ha hecho falta:

Dim OpenDialog As Object
Dim xlApp As Excel.Application
Dim xlBk As Excel.Workbook
Dim xlSht As Excel.Worksheet
Set OpenDialog = Application.FileDialog(3)
OpenDialog.AllowMultiSelect = False
OpenDialog.Title = "Seleccione un document EXCEL..."
OpenDialog.Filters.Clear
OpenDialog.Filters.Add "EXCEL Files", "*.xlsm;*.xls;*.xlsx"
OpenDialog.Filters.Add "All Files", "*.*"
If OpenDialog.Show = True Then
Set xlApp = Excel.Application
Set xlBk = xlApp.Workbooks.Open(OpenDialog.SelectedItems(1))
Set xlSht = xlBk.Sheets(1)

'Aquí voy rellenando los campos en mi formulario según la celda que voy indicando:

xlSht.Range("C5").Select
Me.TITULO.Value = xlSht.Range("C5").Value 'Titulo

...

XlBk. Close

2 respuestas

Respuesta

No necesita hacer referencia a la biblioteca porque lo esra haciendo es desde Access a Excel, pero si fuera desde Excel a Access si es obligatorio utilizar ADO y ADODB

Gracias por su respuesta! Es que me estaba volviendo tarumba. Pues algunas páginas o no son muy claras o yo no las entiendo bien. Osea, para pasarme datos de excel a access, bastaría con abrir excel y hacerlo como he hecho, también entiendo que sirve para importar o vincular con vba no? 

Y ampliando un poco la duda y si no es mucha molestia, ¿cómo puedo actualizar datos de una tabla access con los datos de un fichero excel?

Si es para actualizar le recomiendo este video, lo explican muy bien.

(80) Importar datos de Excel a Access mediante código VBA - YouTube

Si es para importar por código a una tabla desde Excel estudie el método TransferSpreadsheet

Por ejemplo:

DoCmd. TransferSpreadsheet acImport, 10, "import_excel", FileName, True, "Listado!A1:C3"

En donde:

Import_excel ---> nombre de la tabla en Access

FileName --> nombre del archivo de Excel

True --> Indica que la primera fila de Excel son los nombres de campo

Listado! A1:C3 --> nombre de la hoja y el rango a importar.

Respuesta

Para obtener datos de Excel (primo de Access) no se necesita ADO, Ado comenzó sus pasos con la versión de Access 97 y básicamente es una capa de abstracción para acceder a bases de datos externas (Excel no es una base de datos).

Access puede vincular datos de Excel e interactuar con ellos como si fuesen tablas (normalmente de solo lectura, método sencillo de obtener datos).

No es el único método, de hecho el publicado probablemente sea más poderoso que la vinculación, pero no más sencillo (la vinculación esta en el ADN de Access).

Muchas gracias Enrique. ¿Pero me podría decir o pasarme alguna página de ejemplo donde pueda ver cómo actualizar una tabla que va recogiendo datos de excel? Porque lo único que se me ocurre es pasar un recordset a excel y otro a access para comparar y luego pasar un update. Además, lo malo es que no tengo un índice porque el campo digamos que hace las veces de clave tiene duplicados.. Pero al menos saber la rutina y luego ya bicheo,,

Cuando he necesitado actualizar una tabla con datos externos no me he complicado mucho.

Lo elemental es generar un índice sin repeticiones, puede ser compuesto por el mínimo e indispensable numero de campos.

Con el índice funcional, una consulta de inserción añade los registros que no existan (el índice impide la duplicación de datos) tras ello se sobrescriben los datos internos refrescando los campos que puedan ser diferentes (se supone que los nuevos son mas 'frescos' que los existentes y si son iguales no pasa nada), en el caso de que los nuevos fueran mas antiguos o un mezcla de antiguos y nuevos, esa cualidad (la fecha o el dato que delata la antigüedad) se podrá utilizar para seleccionar el que nos interese.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas