Access - Llevar a access datos de excel

 
Vista:

Llevar a access datos de excel

Publicado por CyRuS (127 intervenciones) el 07/11/2006 17:24:43
quiero llevar la selección de excel a una tabla de access pero me da error

Dim db As DAO.Database, rs As DAO.Recordset

Dim sql as string, datos as string

Set db = CurrentDb


.Range(Cells(2, 1), Cells(x, y)).Select ‘ selecciono campos

datos = Selection.Copy ‘ los copio y le llamo a todo eso “datos”

sql = "INSERT INTO Tabla VALUES datos"

Set rs = db.OpenRecordset(sql)


Pero me da el error :
Error de sintaxis en la instrucción INSERT INTO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Código VBA para insertar datos desde Excel a una tabla

Publicado por Alejandro (4142 intervenciones) el 28/07/2023 16:12:13
El error de sintaxis en la instrucción INSERT INTO se debe a que estás intentando insertar los datos directamente desde la cadena "datos" en lugar de usar los valores reales. La función Selection.Copy solo copia los datos seleccionados en el portapapeles, pero no los convierte en una cadena que se pueda usar en una instrucción SQL.

Para resolver este problema, debes modificar tu código para que construya la instrucción SQL con los valores reales de los datos que deseas insertar en la tabla. Aquí tienes una forma de hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim db As DAO.Database, rs As DAO.Recordset
Dim rng As Range
Dim sql As String
 
Set db = CurrentDb
 
' Reemplaza "NombreTabla" con el nombre de la tabla donde deseas insertar los datos
sql = "INSERT INTO NombreTabla (Campo1, Campo2, Campo3) VALUES "
 
' Reemplaza "Sheet1" con el nombre de la hoja de Excel que contiene los datos
' y ajusta los rangos "x" e "y" con las filas y columnas que necesitas copiar
Set rng = ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 1), Cells(x, y))
 
For Each cell In rng.Rows
    sql = sql & "('" & cell.Cells(1, 1) & "', '" & cell.Cells(1, 2) & "', '" & cell.Cells(1, 3) & "'), "
Next
 
' Eliminamos la última coma de la cadena para que la instrucción SQL sea válida
sql = Left(sql, Len(sql) - 2)
 
' Ejecutamos la instrucción SQL para insertar los datos en la tabla
db.Execute sql
 
Set db = Nothing

En este código, se crea una cadena SQL que contiene una instrucción INSERT INTO con los valores de los campos "Campo1", "Campo2" y "Campo3" que se extraen de las celdas del rango seleccionado en Excel. Luego, se recorre cada fila del rango y se agrega cada conjunto de valores a la cadena SQL. Finalmente, se ejecuta la instrucción SQL para insertar los datos en la tabla de Access.

Recuerda reemplazar "NombreTabla" con el nombre real de la tabla donde deseas insertar los datos, y ajustar los rangos "x" e "y" según la ubicación de los datos en Excel. También asegúrate de que los tipos de datos de los campos en la tabla de Access coincidan con los valores que estás intentando insertar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar