Macros en excel y bd en sql developer

Hola santiago
Necesito saber si puedes hacerme el favor de ayudarme con una macro en excel tiene en la hoja 12 tengo el resultado de muchos procedimientos organizados en forma de una tabla de bases de datos necesito subir todos esos registros (resultados) a una base de datos en sql developer pero no he podido agradezco que puedas colaborarme
cod_periodo pit producto can_ rom cant_gtis btu ash
201001 s 185 3256 8724 12.87 04.38
... N
Esa es la tabla en excel
Y es la misma tabla en la base de datos que tengo sql developer con los mismos campos
agradezco tu colaboración prestada
{"lat":1.40610883543516,"lng":-71.7890667915344}
1

1 respuesta

1
Respuesta de
Entiendo que se trata de una base de datos en SQL Server que accedes a ella a través del SQL Developer. ¿Es así?
De todas formas no debería haber mucha diferencia siempre que la base de datos la tengas accesible a través de ODBC.
Supongamos que el acceso ODBC de tu base de datos es "MI_SQL_SERVER" y quieres grabar el contenido de la "Hoja12" en la tabla "dbo.datosHoja12".
Si la línea 1 contiene la cabecera y los datos están entre las columnas A y G, la macro podría ser algo así:
Option Explicit
Sub enviarDatosHoja12AlSqlServer()
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim sh As New Worksheet
    Dim nLin As Long
    Set sh = Sheets("Hoja12")
    cn.Open "MI_SQL_SERVER", "usuario", "clave"
    ' Si queremos borrar el contenido anterior de la tabla ponemos la siguiente línea (sino se puede borrar o comentar)
    cn.Execute "delete from dbo.datosHoja12"
    ' Abrimos la tabla para añadirle los registros
    rs.Open "dbo.datosHoja12", cn, adOpenDynamic, adLockOptimistic
    For nLin = 2 To sh.Cells.SpecialCells(xlCellTypeLastCell).Row
        If sh.Cells(nLin, 1) <> "" Or sh.Cells(nLin, 2) <> "" Or _
           sh.Cells(nLin, 3) <> "" Or sh.Cells(nLin, 4) <> "" Or _
           sh.Cells(nLin, 5) <> "" Or sh.Cells(nLin, 6) <> "" Or _
           sh.Cells(nLin, 7) <> "" Then ' Hay algún dato. Grabamos el registro
            rs.AddNew
            rs!cod_periodo = sh.Cells(nLin, 1)
            rs!pit = sh.Cells(nLin, 2)
            rs!producto = sh.Cells(nLin, 3)
            rs!can_rom = sh.Cells(nLin, 4)
            rs!cant_gtis = sh.Cells(nLin, 5)
            rs!btu = sh.Cells(nLin, 6)
            rs!ash = sh.Cells(nLin, 7)
            rs.Update
        End If
    Next nLin
    ' Cerramos
    rs.Close
    cn.Close
    Set rs = Nothing
    Set cn = Nothing
End Sub
NOTA: Para que funcione hay que agregar una referencia (dentro del menú de herramientas del Visual Basic) a la librería: "Microsoft ActiveX Data Objects 2.xx library" (coger la última versión)
Espero que funcione porque no lo he podido probar.
Un saludo
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Microsoft Excel o hacer tu propia pregunta: