Jump to content

AlexanderS

Moderators
  • Content Count

    1,287
  • Joined

  • Last visited

  • Days Won

    52

Posts posted by AlexanderS


  1. Hola @giordancisco, desde el editor de Power Query seleccionas una de las columnas con los saltos de líneas, click derecho en "Dividir columna -> por delimitador", en el cuadro debes expandir "opciones avanzadas" y seleccionar "Filas", debe quedar de esta forma:

    image.thumb.png.aa041839bfbcb469a0d3f46473aafa06.png  

    Aceptar y listo, debes realizar este paso en cada columna con saltos de línea.

    Saludos.


  2. Hola @pepe1970, cuando programas dentro de un formulario se entiende que "Textbox33" es un control dentro de este formulario. Pero como en tu caso estás tratando de hacer una referencia a un "Textbox33" dentro de un módulo que está fuera del formulario, por lo que función "Query1" trata al "Textbox33" como una variable no declarada.

    Siempre es aconsejable que manejes las instrucciones que hacen referencia a controles de formulario dentro del mismo formulario, si aún así por alguna razón tienes que tenerlo en un módulo aparte debes colocar el nombre del formulario antes del nombre del control:

    Userfrom1.TextBox33 = ""

    Saludos


  3. @pepe1970 es muy difícil poder darte una respuesta adecuada con tan poca información, por lo que voy a tratar de explicarte de forma general como son los pasos a seguir para conectar excel a un SQL Server y traer datos a un textbox en un formulario.

    Lo primero que debemos hacer es conectarnos al servidor SQL, para esto debemos abrir la coneccion mediante el siguiente código:

    *Debes copiar el código entero dentro de un módulo

    Public miConexion As New ADODB.Connection
    Public rs As New ADODB.Recordset
    
    Sub Conecta()
    Dim ConnectionString As String, BD As String
    
    On Error GoTo salir
    
    BD = "NOMBRE DE LA BASE DE DATOS"  '<<<<<<<<  Coloca el nombre de la base de datos de SQL
    
    'En "Data Source=" debe ir la dirección IP del servidor SQL
    
    ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=" & BD & ";Data Source=10.10.0.130"
    
    If miConexion.State = 1 Then miConexion.Close
    Set cnn = New ADODB.Connection
        miConexion.Open ConnectionString
        miConexion.CommandTimeout = 900
    Exit Sub
    salir:
    MsgBox err.Description & vbCrLf & vbCrLf & "Imposible conectar con la Base de Datos" & vbCrLf & _
    "Detalles de la conexón:" & vbCrLf & ConnectionString, vbExclamation, "Error de Conexión"
        
    End Sub

     Debes modificar el nombre de la base de datos "BD" , la ruta de tu base "Data Source" e ingresar el Usuario y contraseña para conectarse a la BD

    Con esto abres una conección al servidor SQL, ahora imaginando que tienes un formulario creado con 2 textbox, siendo el textbox1 el que utilizaras para buscar y el textbox2 donde obtendras el resultado, podemos utilizar el siguiente ejemplo:

    *En mi ejemplo usare una hipotética tabla llamada "Clientes" donde tendré un campo numérico llamado "DNI" con los DNI de los clientes y otro llamado "Nombre" con los nombres de los clientes.

    Private Sub CommandButton1_Click()
    Dim SQL As String
    
    Call Conecta '<<<< Abrimos la conección al SQL
    
    Set rs = New ADODB.Recordset
    
    SQL = "SELECT [Nombre] FROM Clientes where [DNI] = " & CDbl(TextBox1) '<<< Cadena SQL
    
    rs.Open SQL, miConexion, 3, 3, adCmdText '<<<< Se realiza la consulta al servidor SQL
    
    If rs.EOF = False Then '<<< Comprobamos que la consulta nos traiga resultados
    
    Me.TextBox2 = rs.Fields("Nombre") '<<< Pasamos los resultados al Textbox
    
    End If
    
    End Sub

    Como verás necesitarás al menos un mínimo conocimiento de las cadenas de consulta en SQL, por lo que te recomiendo buscar sobre el tema.

    Esto es un muy resumido ejemplo de como realizar la conexión al SQL y realizar una pequeña consulta, espero al menos te de una idea de lo que debes buscar de ahora en adelante.

    Saludos. 


  4. @fredy122, para que podamos entenderte mejor y poder ayudarte debes adjuntar un archivo de excel de ejemplo, preferiblemente con algún progreso que tengas.

    De mi parte te comparto este pequeño código que debes copiar al módulo del libro "ThisWorkbook", cuando selecciones un rango de celdas con números te devolverá algunos resultados.

    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    On Error GoTo salir
    
    Resul = "Max: " & Application.WorksheetFunction.Max(Target) & Chr(10)
    Resul = Resul & "Min: " & Application.WorksheetFunction.Min(Target) & Chr(10)
    Resul = Resul & "Media: " & Application.WorksheetFunction.Median(Target) & Chr(10)
    Resul = Resul & "Cuenta: " & Application.WorksheetFunction.Count(Target) & Chr(10)
    Resul = Resul & "Suma: " & Application.WorksheetFunction.Sum(Target) & Chr(10)
    
    MsgBox Resul
    
    salir:
    End Sub

    La idea es que lo uses como guía para que prepares tu archivo, en este caso muestra la información en un msgbox pero lo puedes adaptar para un formulario.

    Saludos.


  5. Hace 2 minutos , xveganx dijo:

    Muchas gracias Alexander por tomarte este tiempo para mi problema. 

    Ejecute los archivos que me pasaste sin problemas... pero al querer cambiar la ruta de la DB (el archivo excel se encuentra en una carpeta diferente a la base de datos.. esta ultima se encuetra en una ubicacion en una red compartida) me vuelve a saltar un error. 

    En la macro de la hoj original (la tuya) cambie y puse la ruta de la base de datos en la red y me sale error nuevamente y al poner el depurador señala   cn.Open scn

     

    Mi consulta es, esta macro no sirve si los archivos no comparten la misma carpeta? 

     

    Debes de estar escribiendo mal la ruta de la BD, no afecta que el archivo este en en la red siempre y cuando tengas permisos para acceder a ella.

    Lo que suelo hacer para no equivocarme al escribir la ruta es usar esta opción del explorador de archivos 

    image.png.37106c28a8a40a07dc2a65bbbebd4700.png

    Saludos.


  6. Hace 1 hora, xveganx dijo:

    Se ha producido el error '-2147217904 (80040e10)' en tiempo de ejecucion
    No se han especificado valores para algunos de los parametros requeridos

    Este error se da cuando en la tabla de access hay columnas que no existen o tienen un nombre distinto en la hoja de excel, debes revisar que todos los campos están dentro de los 2 archivos y que se llamen igual tomando en cuenta mayúsculas y minúsculas.

    Hace 1 hora, xveganx dijo:

    Intente cargar los archivos al foro pero solo permite hasta 102kb asi que adjunto los archivos desde google Drive. 

    https://drive.google.com/open?id=1yqqTNLUYbuckHpOXfQj7bP1extMvT1zn

    Los archivos que compartiste, el libro de excel no tienen ninguna hoja relacionada a la tabla de access, no se si fue un error al subir el archivo o no te entendí algo.

    Te tejo el ejemplo de como debería funcionar el código que te compartí, debes ejecutar la macro "Actualiza_Cttos" en la hoja "Datos a Exportar"

    Saludos.

    Prueba cttos.zip


  7. Hola @xveganx, para tener un mayor entendimiento sobre las consultas siempre se solicita un archivo de ejemplo, en tu caso la tabla de access y el excel, con datos ficticios es suficiente ya que lo se requiere es ver la estructura de tus archivos.

    Te dejo un pequeño código que hace lo que quieres, siempre y cuando lo sepas adaptar a tu archivo.

    Sub Exp_ACCESS()
    
      Set cn = CreateObject("ADODB.Connection")
      
      dbPath = "C:\Users\Usuario\Documents\Database1.accdb" '>>> RUTA de la BD
      
      Tabla = "Tabla1" ' >>> Nombre de la tabla de Access
      
      dbWb = Application.ActiveWorkbook.FullName
      dbWs = Application.ActiveSheet.Name
      scn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath
      dsh = "[" & Application.ActiveSheet.Name & "$]"
      cn.Open scn
      
      ssql = "Delete * From " & Tabla
      
      cn.Execute ssql
      
      ssql = "INSERT INTO " & Tabla & " ([CONTRATO], [CONTRATO SAP], [FECHA], [PROVEEDOR], [SUCURSAL], [DESCRIPCION], [MONEDA]) "
      ssql = ssql & "SELECT [CONTRATO], [CONTRATO SAP], [FECHA], [PROVEEDOR], [SUCURSAL], [DESCRIPCION], [MONEDA]" & _
      " FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh
    
      cn.Execute ssql
      
      MsgBox "Listo !!", vbInformation
    
    End Sub

    Saludos.


  8. Hace 8 horas, nickmartinez dijo:

    Mano hice todo el proceso,pero no puedo obtener los datos me arroja este error image.thumb.png.d88a470e9c06cbc360dee0ed98a014a6.png

    Tienes alguna idea de lo que puede ser este error?

    Lo siento pero no tengo idea, y no puedo hacer mas pruebas dadas las limitaciones de mi cuenta de instagram.

    Tendrás que leer la documentación del conector, tal vez hay un paso que nos saltamos.


  9. 1.Esto solo funciona en una cuenta empresarial de Instagram. https://vilmanunez.com/guia-activar-perfil-de-empresa-instagram/

    2.La cuenta de instagram debe estar vinculada a la de facebookhttps://vilmanunez.com/como-enlazar-tu-perfil-de-instagram-con-tu-pagina-de-fans-en-facebook/

    3.Debes descargar el conector https://drive.google.com/uc?export=download&id=11koYwbUjwJNoO4SIj7n7n91xH9b0sPTn.

    4.Crear una carpeta en Documentos llamada Power BI Desktop y dentro de esta una llamada Custom Connectors después guardar el archivo descargado dentro de esta carpeta.

    5.Abrir Power BI, probablemente te salga un mensaje con una advertencia acerca del conector no certificado, debes ir a Opciones->Seguridad  y en Exenciones de Datos marcar la segunda opción y reiniciar Power BI.

    6.Abrir Power BI ir a Archivo->Obtener Datos->Mas...  en Otras encontraras el conector a Instagram.

    image.thumb.png.9e1d840004ea3e1c8fdf0bf2af261f16.png

    7.Te pedirá iniciar sesion en Facebook  y darle permiso a la aplicación a acceder a tus datos.

    8.Listo deberías ver algo así:

    image.thumb.png.39ed8cd67360cd4402c839af59952ed5.png

    Esto fueron los pasos que yo seguí, aparte de esto no puedo decirte mas ya que mi cuenta al inicio no era empresarial por lo que no tengo estadísticas .

    Saludos.

     


  10. Imagino que en el archivo donde lo probaste tienes filas en blanco antes del primer salto de linea, creo que ese es el error.

    Hace 8 minutos , jik dijo:

    No faltará un "Else" o algo así?

    No es necesario solo estoy contando 40 lineas de lo contrario simplemente no hace nada.

     

    Hace 9 minutos , jik dijo:

    Donde termina esta fórmula? Necesitaría darle un fin en, por ejemplo, la fila 10.000

    Le indico en esta linea Range("A1", Range("A1").End(xlDown)).SpecialCells(xlCellTypeVisible) que apartir de la celda A1 se vaya a la ultima celda con datos, por eso si tienes alguna celda vacía por ejemplo en la fila 12 hasta ahí llega ciclo for. 

    Prueba ahora con esta modificación, no es necesario indicar la cantidad de filas ya que encontrara la ultima fila de la columna A con datos, esto es conveniente si tus datos van a crecer aun mas.

    Sub insertar_filas()
    Dim x#, celda As Range
    
    Application.ActiveSheet.ResetAllPageBreaks
    
    For Each celda In Range("A1", Range("A" & Cells.Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
        x = x + 1
        If x = 40 Then
            x = 0
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(celda.Row + 1)
        End If
    Next
    
    End Sub

    De igual manera y por aquello puedes usar esta linea también 

    For Each celda In Range("A1:A10000").SpecialCells(xlCellTypeVisible)

    Saludos.


  11. @jik, basado en tu ejemplo, con esta modificación debería funcionar sin importar donde o cuantas celdas ocultas tengas.

    Sub insertar_filas()
    Dim x#, celda As Range
    
    Application.ActiveSheet.ResetAllPageBreaks
    
    For Each celda In Range("A1", Range("A1").End(xlDown)).SpecialCells(xlCellTypeVisible)
        x = x + 1
        If x = 40 Then
            x = 0
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(celda.Row + 1)
        End If
    Next
    
    End Sub

    Comentas, saludos.


  12. Si planeas utilizar Power BI, puedes intentar utilizar un custom data connector, estos como indica su nombre son conectores personalizados no oficiales de microsoft. 

    No lo he probado por lo que no se si funciona o si se adapta a tu caso, solo sirve (por el momento) con power bi la versión gratis o de pago.

    Te dejo el link para descargar el complemento https://new.scitylana.com/connectors 

    Y el enlace al repositorio de GitHub donde puedes encontrar las instrucciones https://github.com/mbilling/PBIConnectors

    Saludos.


  13. Creo que mas bien te complicarías mas con PQ, Power Query lo utilizo como una forma de dar formato a mis datos para después con el uso de tablas dinámicas extraer la información y crear mis reportes. Por lo tanto, si tus datos ya tienen el formato ideal y puedes sacar la información directamente de ellos con una tabla dinámica, no veo ventaja de tratarlos en PQ.

    Saludos.


  14. Hace 23 minutos , Carlos1986 dijo:

    Gracias @alexanderS solo un par consultas más, como puedo validar de que los campos de botones de opción no vayan vacíos (como en el caso de los textbox que no deja grabar hasta que tengan datos?

    Prueba el adjunto, agregue las validaciones.

    Hace 24 minutos , Carlos1986 dijo:

    La otra, ocupo grabar la fecha en que hice el registro, similar a la de "descripción pero que se fecha.

    La fecha para no desordenar lo que ya tenias la agregue al final

    Comenta si esto resuelve tu consulta.

    Saludos.

    Variables.xlsm

×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png