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.
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]