Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Importar datos de Excel a Access

689 views
Skip to first unread message

MECZE

unread,
Oct 7, 2009, 1:16:12 PM10/7/09
to
Hola:

Estoy tratando de automatizar mediante macros el proceso que lleva a cabo
Access para importar datos de un archivo de Excel y guardar esos registros en
la B.D., primero se me ocurrió intentar grabar una macro como se hace en
Excel para ver la manera en que guardaba los datos, pero no encontré como
grabar macros en Access; posteriormente estuve buscando info. y encontré un
código, que es el siguinete:

Function exportar()
Call ImportadelExcel("C:\agosto 08.xls", "C:\2009.mdb", "Partidas")
End Function

Sub ImportadelExcel(sFichero As String, DS As String, sTablaDestino As String)

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"
Set cnnActiva = New ADODB.Connection
cnnActiva.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & DS & ";"

'Rango que quiero importar dela hoja Sheet1
sTablaOrigen = "[Sheet2$A1:R5]"

' 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

Lleva a cabo casi todo, pero cuando llega a la parte de querer ejecutar la
sentencia sSQL me marca el sig error: The Microsoft Jet database engine could
not find the objet "[Sheet2$A1:R5]". Make sure the object exists and that you
spell its name and the path name correctly.

Quería ver si me pueden auxiliar ya sea diciendome si se pueden grabar
macros como en excel, o de que manera se deben recibir los parametros de la
hoja de excel para hacer la inserción de registros.

De antemano gracias.

José Mª Fueyo

unread,
Oct 7, 2009, 3:04:31 PM10/7/09
to
Hola
No nos comentas que versión de Access tienes
De entrada no, Access no tiene la posibilidad de grabar macros. Lo más
cercano es que puedes crear una macro y convertirla a código de VBA.
Tus hojas ¿son listas de datos, sín ninguna cosa rara (filas o columas en
blanco, etc...)? sí es así, mira en la ayuda el método TransferSpreedSheet
del objeto DoCmd
Respecto al error que nos comentas, "[Sheet2$A1:R5]" es el nombre de la hoja
(Sheet2) y el rango de datos a importar (A1:R5). Quizas te interese pasar
ese valor como parámetro de tu función

Sub ImportadelExcel(sFichero As String, DS As String, sTablaDestino As

String, sRango)

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"
Set cnnActiva = New ADODB.Connection
cnnActiva.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & DS & ";"

'Rango que quiero importar dela hoja Sheet1

sTablaOrigen = "[" & sRango & "]"

' 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

sRango es el nombre de tu hoja y el rango a importar.

Salu2
--
José Mª Fueyo
[MS MVP Access]

0 new messages