Foros del Web » Soporte técnico » Ofimática »

[SOLUCIONADO] insertar datos excel en sql

Estas en el tema de insertar datos excel en sql en el foro de Ofimática en Foros del Web. Hola a todos, me podrían decir cual sería el codigo de una macro para insertar la celda A1, B1 y C1 de un excel en ...
  #1 (permalink)  
Antiguo 03/09/2014, 00:51
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
insertar datos excel en sql

Hola a todos, me podrían decir cual sería el codigo de una macro para insertar la celda A1, B1 y C1 de un excel en una base de datos SQL2008.
La A1 en la columna NOMBRE, la B1 en APELLIDOS y la C1 en DNI

nombre de la Base de Datos: BD_PRUEBA
tabla: TB_PRUEBA
columnas: NOMBRE, APELLIDOS, DNI

Muchas gracias
  #2 (permalink)  
Antiguo 03/09/2014, 14:47
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: insertar datos excel en sql

Ya tienes la conexión a la base de datos?

Suponiendo que sí, en la misma hoja donde tienes la información agrega un botón de comando y, en el código VB (en la misma hoja, no en módulos) la siguiente rutina:

Código vb:
Ver original
  1. Sub insertaDatos()
  2.     Dim con As New ADODB.Connection
  3.     Dim com As New ADODB.Command
  4.     Dim rs As ADODB.Recordset ' Este se usa solo para lectura
  5.    Dim nombre as String, apellidos as String, dni as String
  6.  
  7.     Set con = New ADODB.Connection
  8.     con.Open "DSN=tu_conexion_a_SQL2008" ' Debe estar definida en fuentes de datos
  9.    If con.State = 1 Then
  10.         com.ActiveConnection = con
  11.         com.CommandType = adCmdText
  12.     Else
  13.         MsgBox "No se pudo conectar a base de datos"
  14.         End
  15.     End If
  16.     nombre = Cells(1, 1)
  17.     apellidos = Cells(1, 2)
  18.     dni = Cells(1, 3)
  19.     ' Supongo que la consulta sería en el mismo formato que en MySQL
  20.    com.CommandText = "INSERT INTO TB_PRUEBA SET NOMBRE = '" & nombre & "', " _
  21.         & "APELLIDOS = '" & apellidos & "', DNI = '" & dni & "'"
  22.     ' Ejecutas
  23.    com.Execute
  24.     ' Cierras la conexión
  25.    con.Close
  26. End Sub

Necesitas investigar cómo escapar los datos para evitar errores, por ejemplo, cuando se use un apellido como O'Brien, porque la comilla simple finalizaría la cadena.

También deberías validar que los campos no estén en blanco.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 04/09/2014, 00:48
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
Respuesta: insertar datos excel en sql

Hola Triby, Lo primero gracias por tu respuesta.

Todavía no lo he probado pero en cuanto lo pruebe te comento.
Tendré en cuenta lo de las comillas y lo de los campos que están en blanco

Gracias
  #4 (permalink)  
Antiguo 04/09/2014, 03:24
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
Respuesta: insertar datos excel en sql

Hola Triby

Al ejecutarlo me da el siguiente error en la primera línea de
Dim con as new ADODB.Connection

"Error de compilacion:
No se ha definido el tipo definido por el usuario

Última edición por tazzmania128; 04/09/2014 a las 04:46
  #5 (permalink)  
Antiguo 04/09/2014, 10:32
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: insertar datos excel en sql

Pásate por esta página; lee la segunda parte, para agregar la referencia a Microsoft ActiveX Data Objects.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 05/09/2014, 03:36
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
Respuesta: insertar datos excel en sql

Triby,

Muchas gracias por todo, FUNCIONA!!!!!!!!!!!!!

sólo tuve que adaptar la sentencia sql, pero el resto genial

"INSERT INTO Table_Visitas (TNombre, TApellidos, TDNI) values ('" & nombre & "', '" & apellidos & "', '" & dni & "')"

Muchas gracias

Etiquetas: columna, excel, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:55.