Generar sentencias SQL INSERT INTO en Excel

La semana pasada surgió la necesidad de cargar información desde Excel a SQL Server. Lo primero que propuse es usar ya un archivo que publiqué anteriormente en este artículo Conectar Excel a Access, MySql y SQL.

Al prinicio sirvió su cometido, pero al momento de cambiar de base de datos o de tabla, si no se tiene el tiempo suficiente para armar o modificar la macro en vba, entonces las cosas ya no van bien.

Es por esto que comparto una macro que nos ayuda a armar sentencias o queries de SQL o MySql sólo con armar una tabla de datos en Excel para después entrar al administrador de base de datos, pegar y ejecutar las sentencias.

La tabla

INSERT INTO

Las sentencias INSERT INTO

INSERT INTO2

Nota: si las sentencias se ejecutan en MySql, cada línea debe tener un punto y coma.

Código de la macro

Option Explicit
'---------------------------------------------------------------------------------------
' Module    : Módulo1
' Author    : MVP Sergio Alejandro Campos
' Date      : 23/06/2013
' Purpose   : Generar Query de SQL INSERT INTO
' Website   : http://blogs.itpro.es/exceleinfo
'---------------------------------------------------------------------------------------
'
Sub GenerarInsertInto()
'Definiendo variables
Dim Filas As Integer
Dim Cuenta As Integer
Dim Rango As String
Dim Celda As Range
Dim Valor, Valor1, Valor2 As String
Dim Largo As Integer
Dim RowCursor As Integer
Dim strSQL As String
Dim Mensaje As String
'
On Error GoTo Errores
Filas = Application.WorksheetFunction.CountA(Range("A:A"))
Cuenta = 1
Rango = Application.Transpose(ActiveCell.CurrentRegion.Resize(1).Select)
'
'Extrayendo encabezados
For Each Celda In Selection
    Valor = Celda.Value
    Valor1 = Valor1 & Valor & ", "
Next Celda
Largo = Len(Valor1)
Valor2 = Left(Valor1, Largo - 2)
'
'Generando Query
With ActiveWorkbook.Sheets("Datos")
    For RowCursor = 2 To Filas
        strSQL = "INSERT INTO Tabla (" & Valor2 & ") " & _
                 "VALUES ('" & .Cells(RowCursor, 1) & "', " & _
                 "'" & .Cells(RowCursor, 2) & "', " & _
                 .Cells(RowCursor, 3) & "," & _
                 "'" & .Cells(RowCursor, 4) & "', " & _
                 "'" & .Cells(RowCursor, 5) & "')"
        Sheets("Query INSERT INTO").Range("A" & Cuenta).Value = strSQL
        Cuenta = Cuenta + 1
    Next
End With
'
Mensaje = MsgBox("Query generada. Deseas ver el código generado?", vbQuestion + vbYesNo)
If Mensaje = vbYes Then Sheets("Query INSERT INTO").Activate
'
'Manejo de errores
Exit Sub
Errores:
MsgBox "Error: " & Err.Description, vbExclamation, "EXCELeINFO"
End Sub

:: Descarga el ejemplo EXCELeINFO – Generar Query SQL INSERT INTO.xlsm

You may also like...