diumenge, 7 de febrer de 2010

Crear una taula en Access des de Excel amb Vb

L'objectiu és crear, a partir d'un full excel, una taula en Access fent servir Visual Basic

La pàgina que millor ho explica és

http://www.davidsuarez.es/2008/10/importar-excel-a-tabla-de-access-con-visual-basic/

però ho fa una mica complicat pels que no som experts...

En l'exemple, partirem d'un full excel ubicat en C:\BackupAdecucion\Backup.xls que presenta aquest trist aspecte:

Fixem-nos que està en castella i per tant, el full es diu HOJA1

La base Access on el volem carregar es troba en C:\ProcesosCAD\Procesables.mdb i no té res.

Volem que el excel es carregui en una taula anomenada TblBackup

Primer una imatge en colorins del codi i tot seguit el codi pla. Espero que a algú li pugui servir...

Els meus comentaris comencen per kezdonetblog, els de -imagino- David Suárez amb ###



i ara el codi:

Option Explicit
Private Sub Form_Load()
'kezdonetblog: Si no ho carreguem al load, poc farem....
ImportadelExcel
End Sub
'###Private Sub ImportadelExcel(sfichero As String, ds As String, stabladestino As String)
'kezdonetblog: aquesta línia, així no em funcionava. La vaig "partir"
Private Sub ImportadelExcel()
Dim sfichero, ds, stabladestino As String
'###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
'kezdonetblog: això em va costar bastant: no tenia clar on indicarli a les 3 variables quina era les seves adreces
sfichero = "C:\BackupAdecucion\Backup.xls"
ds = "C:\ProcesosCAD\Procesables.mdb"
stabladestino = "TblBackup"

Dim sTablaOrigen As String
Dim sConnect As String, sSQL As String
Dim cnnActiva As ADODB.Connection
'###Establezco la conexión con la base de datos de Access,la cual será la base de datos "Activa"
'kezdonetblog: sovint pot fallar aquí.
'kezdonetblog: Cal tenir la Microsoft Activex Data Object 2.6 Library en Proyecto/referencias
Set cnnActiva = New ADODB.Connection
cnnActiva.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ds & ";"
'### Rango que quiero importar dela hoja Sheet1
sTablaOrigen = "[Hoja1$A1:C1500]"
'### Importo la tabla a la base de datos "Activa"
sConnect = "'" & sfichero & "' 'Excel 8.0;HDR=Yes;'"
sSQL = "SELECT * INTO " & stabladestino & " FROM " & sTablaOrigen & " IN " & sConnect
cnnActiva.Execute sSQL
'### Cierro la conexión
cnnActiva.Close
End Sub

Cap comentari:

Publica un comentari a l'entrada