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
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    3    1

  • Crear macros Excel

  • Mensajes

    • Saludos amigos espero estén bien  En la actualidad utilizo la siguiente macro para generar un código alfanumérico continuo que al guardar los datos se copia en la Celdas “B5” de las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) Private Sub CommandButton3_Click()     If Hoja58.Range("B5").Value < 9999 Then Hoja58.Range("B5").Value Hoja58.Range("B6").Value + 1     Else        Hoja58.Range("B5").Value = 1     End If If Hoja59.Range("B5").Value < 9999 Then Hoja59.Range("B5").Value = Hoja59.Range("B6").Value + 1 Else        Hoja59.Range("B5").Value = 1     End If End Sub El código se genera normalmente sin embargo no se copia inmediatamente en las Celdas “B5” sino que aparece en las Celdas “B6” mientras que las Celdas “B5” siempre permanecen en blanco, actualmente el código consta de tres letras y cuatro dígitos (RCI-0000) pero me interesa poderle concatenar el mes y año en formato mm-yy para que el código finalmente quede expresado de la siguiente forma RCI-0000-00-00 Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad cuando introduzco texto en los TextBox 5, 6 y 7 y dicho texto es mas largo que el ancho de los Texbox el texto se copia en una misma línea lo que dificulta verificar la redacción, así como visualizar cualquier error por lo cual necesito me ayuden con una macro que justifique el texto dentro de los Textbox, he probado usar la función Multiline sin obtener el resultado esperado. Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad utilizo los datos provenientes de los TextBox 5, 6 y 7 se guardan en las Columnas H, I y O de las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) sin embargo cuando el texto es abundante no se visualiza completamente en las celdas correspondientes de allí que necesito que cada fila se ajuste al tamaño de la celda que contenga mayor cantidad de texto para lo cual he probado con la siguiente macro: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.EntireRow.AutoFit End Sub Sin embargo, dicha macro coloca todas las filas del tamaño del texto que contengan y lo que en realidad necesito es que dicha macro solo se aplique desde la Fila 5 en adelante. Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad utilizo la siguiente macro para que la fecha aparezca en el Textbox2: Private Sub UserForm_activate() Me.TextBox2.Value = VBA.Date End Sub Sin embargo, una vez guardo los datos la fecha cambia de formato y se guarda en formato mm/dd/yyyy en vez de dd/mm/yyyy y este cambio de fecha me distorsiona los resultados de las fórmulas en las Columnas J en las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • ¡Hola! Después de un buen tiempo ausente...  @Gabriela hg ya que veo que tienes Excel 365, te dejo mi solución para piezas y gramos.   Extraer piezas - gramos 365_GP.xlsx
  • 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.