Una simple rutina que sirve para importar un rango de filas y columnas de un fichero de Excel a una tabla en una base de datos de Access.

Había probado de multitud de maneras encontradas por internet, ejecutando una macro desde Excel y llamándola desde Visual, intentando crear una macro en access para llamarla desde visual y otros casos mas extraños aún.

La solución era mucho mas sencilla de lo que me esperaba, mediante la biblioteca de ADO.

Visual Basic:
  1. Call ImportadelExcel(fichero, App.Path & "\midb.mdb", "ImpExcel")

En el siguiente procedimiento las variables que necesita:

  • sFichero es el fichero Excel que quiero importar
  • DS es el DataSource o ruta a la base de datos que va a importar
  • sTablaDestino el nombre de la tabla que se creará con los datos del Excel
Visual Basic:
  1. Sub ImportadelExcel(sFichero As String, DS As String, sTablaDestino As String)
  2.  
  3. Dim sTablaOrigen As String
  4. Dim sConnect As String, sSQL As String
  5. Dim cnnActiva As ADODB.Connection
  6.  
  7. ' Establezco la conexión con la base de datos de Access,
  8. ' la cual será la base de datos "Activa"
  9. Set cnnActiva = New ADODB.Connection
  10. cnnActiva.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  11. "Data Source=" & DS & ";"
  12.  
  13. 'Rango que quiero importar dela hoja Sheet1
  14. sTablaOrigen = "[Sheet1$A1:C1500]"
  15.  
  16. ' Importo la tabla a la base de datos "Activa"
  17. sConnect = "'" & sFichero & "' 'Excel 8.0;HDR=Yes;'"
  18.  
  19. sSQL = "SELECT * INTO " & sTablaDestino & " FROM " & sTablaOrigen & " IN " & sConnect
  20. cnnActiva.Execute sSQL
  21.  
  22. ' Cierro la conexión
  23. cnnActiva.Close
  24. End Sub


Posts anterior y posterior:


Posts Relacionados: