Saltar al contenido

Ayuda con macro generar-sentencias-sql-insert-into-en-excel


edi

Recommended Posts

publicado

Saludos a todos soy nuevo en esto de las macro , requiero ayuda de la macro que esta puesta en el link

del señor : Sergio Alejandro Campos

la ayuda o quizas duda es que me sale en el ejemplo

asi :

INSERT INTO Tabla () VALUES ('Nombre1', 'Telefono1', 26,'Direccion1', 'Puesto1')

deberia ser asi

INSERT INTO myTabla VALUES ('Nombre1', 'Telefono1', 26,'Direccion1', 'Puesto1')

sin los parentises antes de values o no se usar disculpen

muchas gracias

EXCELeINFO – Excel vba e información - Generar sentencias SQL INSERT INTO en Excel

publicado

hola edi te comento es correcto lo de sergio

INSERT INTO Tabla ( nombre de los campos de la tabla aqui) VALUES ('Nombre1', 'Telefono1', 26,'Direccion1', 'Puesto1')[/CODE]

ejemplo

[CODE]
Public Function sqlGrabPersonas(Nom As String, DIR As String, EDAD As Integer, TFN As String, MPA_ID As Integer)
sqlGrabPersonas = _
"Insert Into MDP(MDP_NOM, MDP_DIR, MDP_EDAD, MDP_TFN, MDP_MPA_ID) VALUES " & _
"('" & Nom & "', '" & DIR & "', " & EDAD & ", '" & TFN & "', " & MPA_ID & ")"

End Function

[CODE]
saludos[/CODE]

publicado

gracias ahora tengo otro problema , esta macro solo maneja 5 columnas y nesecito 10 pero no entiendo eso de las comas me da miedo

publicado
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[/CODE]

publicado

hola ya me refiero a el tu codigo cual es tu duda en concreta? donde te marca error? ya tienes tu bd ? referencias?

cuales son los campos de tu tabla?

donde esta tu informacion a procesar?

saludos

publicado

sorry , mis campos son

 id    codigo    nombre    Clase    GrupoID    ImpuestoID    Impuesto2ID    Impuesto3ID    CostoCompra    Precio1
[/CODE]

cuando genero el isnsert solo llega al campo 5 , faltaria los demas campos creo que se debe or la parte de codigo solo dice 5

[CODE]strSQL = "INSERT INTO Tabla (" & Valor2 & ") " & _
"VALUES ('" & .Cells(RowCursor, 1) & "', " & _
"'" & .Cells(RowCursor, 2) & "', " & _
.Cells(RowCursor, 3) & "," & _
"'" & .Cells(RowCursor, 4) & "', " & _
"'" & .Cells(RowCursor, 5) & "')"[/CODE]

INSERT INTO Tabla (id, codigo, nombre, Clase, GrupoID, ImpuestoID, Impuesto2ID, Impuesto3ID, CostoCompra, Precio1) VALUES ('0000000001', '124644664441554', REGISTRO QUIMESTRAL 4C 40 ALUMNOS,'01', '0000000002')

publicado

disculpa que no te pueda ayudar pero aqui no se hacen trabajos

pero ay esta la macro solo genera el insert de ay copio y pego al administrador sql
solo se apoya sobre dudas en especifico, el foro sirve para retroalimentacion para las personas que apoya a solventar las dudas y para aprendizaje para las personas personas que llegamos a tener dudas sobre cuestiones en concreto.
publicado

Sip edi estamos para apoyarnos con dudas pero para eso necesitamos herramientas

me imagino que deseas ingresar todos lo datos que existen en una lista, cuales el rango?
una pregunta tu origen donde estan tus datos aprocesar se llama la hoja datos
 ActiveWorkbook.Sheets("Datos")[/CODE]

por que asi se llama la del codigo que copiaste cierto? y que tal si tu hoja se llama "Base" te pedi

para poderte ayudar debes subir un archivo
y no lo hiciste dime como te apoyamos, dudo en verdad que asi
pero ay esta la macro solo genera el insert de ay copio y pego al administrador sql
algun compañero o maestro del foro te pueda apoyar

disculpame pero no te dejas ayudar

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      29

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    2    1

  • Crear macros Excel

  • Mensajes

    • Buenos días,  espero se encuentren bien de salud compañeros, Favor me podrían ayuda con lo siguientes como se podría hacer cuando tengo una tabla dinámica que  amedida que se aumente las columnas fechas con data un formula que se coloco al final busque o analice siempre la ultima fila y columna de la fecha. Coloco un ejemplo
    • @JSDJSD Excelentes, GRACIAS POR TU SOPORTE , me ayudo demasiado es exactamente lo que quería. 5 ESTRELLAS
    • 'Opción 1 Sub FiltrarSKUPorFecha(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim diccionarioSKU As Object Dim listaEliminar As Object Dim fechaActual As String, fechaSiguiente As String Dim f As Variant With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Crear diccionarios para comparar SKU y almacenar filas a eliminar Set diccionarioSKU = CreateObject("Scripting.Dictionary") Set listaEliminar = CreateObject("Scripting.Dictionary") ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then diccionarioSKU.RemoveAll ' Limpiar el diccionario antes de llenarlo ' Guardar los SKU de la fecha siguiente (solo de la siguiente) For f = fila + 1 To ultimaFila If .Cells(f, 1).Value <> fechaSiguiente Then Exit For diccionarioSKU(.Cells(f, 2).Value) = 1 Next f ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Solo eliminar si el SKU no está en la fecha siguiente If Not diccionarioSKU.exists(.Cells(f, 2).Value) Then listaEliminar(f) = 1 ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar.keys .Rows(f).Delete Next End With MsgBox "Completado correctamente.", vbInformation End Sub 'Opción 2 Sub FiltrarSKUPorFecha1(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim listaEliminar As Collection Dim fechaActual As String, fechaSiguiente As String Dim f As Variant, i As Long Dim SKUExiste As Boolean With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Inicializar la colección para marcar las filas a eliminar Set listaEliminar = New Collection ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Comprobar si el SKU está en la fecha siguiente SKUExiste = False For i = fila + 1 To ultimaFila If .Cells(i, 1).Value <> fechaSiguiente Then Exit For If .Cells(i, 2).Value = .Cells(f, 2).Value Then SKUExiste = True Exit For End If Next i ' Si el SKU no se encuentra en la fecha siguiente, marcar para eliminar If Not SKUExiste Then listaEliminar.Add f ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar .Rows(f).Delete Next f End With MsgBox "Completado correctamente.", vbInformation End Sub   TABLA ELIMINAR.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.