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
Las sentencias INSERT INTO
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