Jump to content

marcosab

Members
  • Content Count

    43
  • Joined

  • Last visited

Posts posted by marcosab

  1. Hola a todos

    Requiero de su ayuda para completar el siguiente macro

     

    Private Sub UserForm_Initialize()
    Dim Cnn As New ADODB.Connection
    Dim Rs As New ADODB.Recordset, Sql As String
    Dim Hoja As Object
    
    
    ComboBox1.ColumnCount = 4
    ComboBox1.ColumnWidths = "50;40;100;150"
    Set Cnn = New ADODB.Connection
    Cnn.Open "Driver={SQL Server}; Server=10.15.50.50; Database=pruebas; Uid=sa;Pwd=123456"
    Set Rs = New ADODB.Recordset
    Sql = "SELECT Usuario, Contraseña, Hojas_Activas, Nombre, Unidad FROM Usuarios"
    Rs.Open Sql, Cnn, 3, 3, adCmdText
    If Not Rs.EOF = True Then ComboBox1.Column = Rs.GetRows
    Cnn.Close

     

    Lo que requiero es lo siguiente

    1 limitar a 10 segundo el tiempo maximo para buscar si la base de datos esta disponible

    2 Que mande un mensaje cuando la base datos no esta disponible o no se puede conectar con el servidor SQL 

     

    Muchas gracias por las ayudas

  2. Buenos días

    Tengo que agradecer por toda la ayuda brindada en el pasado

    Tengo un proyecto de completar un archivo de Word con información de Excel  para eso he tratado con el siguiente código:

    Sub A_crear_word()
    
    mi_carpeta = ActiveSheet.Range("A2")
    
    Set objWord = CreateObject("Word.Application")
    
    objWord.Visible = True
    
    objWord.Documents.Add Template:=mi_carpeta, NewTemplate:=False, DocumentType:=0
    
    For I = 3 To 8
    
    busqueda = ActiveSheet.Range("B" & I).Text
    remplazar = ActiveSheet.Range("A" & I).Text
         
         With objWord.Selection.Find
                .Text = busqueda
                .Replacement.Text = remplazar
                .Execute Replace:=2
         End With
         
    Next I
    
        objWord.Activate
        
    End Sub

    Los archivos de Word y Excel los tengo en la carpeta "C:\Prueba"

    El código me funciona con las celdas que tienen poca información. Pero cuando hay mucho contenido en la celda me da un error ejemplo la celda "A9" del archivo adjunto.

    Espero que ustedes como expertos de Excel me puedan ayudar ya que tengo muchas hora en esto y no lo he logrado con nada.

    saludos

     

    Prueba Excel a Word.rar

  3. Hola grupo recurro a ustedes para la ayuda para completar un Macro

    Tengo este macro que me valida desde Excel si un dato ya existe en la base de datos de ACCESS.

       Set Rs = New ADODB.Recordset
       Sql = "SELECT Count(*) FROM a_revisiones WHERE [cedula]='" & .Range("J2") & "'"
       Rs.Open Sql, Cnn, 3, 3, adCmdText
       Datos = Rs.GetRows
       If Datos(0, 0) > 0 Then
          MsgBox "El registro ya existe en la base de datos!!!", vbCritical, "Sistema"
       Else

    Nombre de base de datos en Access "a_revisiones", campos "cedula, nombre y estado"

    Me funciona bien cuando solo solo requiero ingresar un registro igual en cedula, cuando debo registrar más datos me sale el mensaje "El registro ya existe en la base de datos!!!". Pero requiero que me permita ingresar nuevos registros cuando el estado de la cedula esta en "archivo".

    Espero de la ayuda de usted, saludos

     

  4. Buenas

    Estoy intentando crear un macro para generar un reporte entre periodos que están en las celdas " D5 " y  " F5 " de una tabla de Access, pero no logro que funcione. acudo a ustedes para que me ayuden a definir cual sera el error.

    Formato de la fecha en Access "29/07/2020 10:48:51" 

    Application.ScreenUpdating = True
    
    NumId = (Format(Worksheets("usuarioF1").Range("D5").Value, "DD-MMM-YYYY") & "# ")
    NumIh = (Format(Worksheets("usuarioF1").Range("F5").Value, "DD-MMM-YYYY") & "# ")
    Set Cnn = New ADODB.Connection
    With Cnn
    
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "\01.Datos\Registro.accdb"
        .Open
    
    End With
    
    Set Rs = New ADODB.Recordset
    
    Sql = "SELECT nombre, cedula, riesgo, Nombre_Patrono, fecha1 FROM f_adeudos WHERE fecha => '" & NumId & "' and fecha => '" & NumIh & "' ORDER BY fecha1"
    
    Rs.Open Sql, Cnn
    
    Sheets("reporte").Select
    Range("B7:E100").ClearContents
    Range("B7").CopyFromRecordset Rs
    Rs.Close

     

    Muchas gracias por toda la ayuda.

  5. Un saludos a los miembros del grupo

    Requiero que me ayuden con el siguiente Macro. Cuando se ejecuta debe buscar en la base de datos "Registro.accdb" y devolver los datos que coinciden las columna estado con ingreso y la columna nombre con "Carlos" 

    He intentado con el siguiente macro pero me da error

     

    Application.ScreenUpdating = True
    NumId = "ingreso"
    NomId = "Carlos"
    Set Cnn = New ADODB.Connection
    With Cnn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\Datos\Registro.accdb"
        .Open
    End With
    Set Rs = New ADODB.Recordset
    
    Sql = "SELECT cedula, nombre, fecha1, Fecha2, origen, carpeta FROM requeri WHERE correo = '" & NumDd & "' AND WHERE correo = '" & NomDd & "' ORDER BY fecha1"
    
    Rs.Open Sql, Cnn

     

  6. Gracias por la ayuda.

    Seguramente algo tengo que estar haciendo mal.

    Lo puse de la siguiente forma y me da error con depurador al parecer es en esta parte del código "    .Open Sql, Cnn, , , adCmdText"

    Sub crear()
    
    Application.ScreenUpdating = False
    If Trim([C9]) = "" Then
       MsgBox "*** Cédula en blanco ***", vbCritical, "Alerta"
       Exit Sub
    End If
    If Trim([E9]) = "" Then
       MsgBox "*** Riesgo en blanco ***", vbCritical, "Alerta"
       Exit Sub
    End If
    If Trim([C11]) = "" Then
       MsgBox "*** Nombre en blanco ***", vbCritical, "Alerta"
       Exit Sub
    
    End If
    
    
    
    Set Cnn = New ADODB.Connection
    
    With Cnn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\Datos\01.Adeudos.accdb"
        .Open
    End With
    
    Set Rs = New ADODB.Recordset
    
    Sql = "Select [Num Id] From pen Where [Num Id] =" & Worksheets("Registro").Range("C9").Value
    
    With Rs
        .CursorLocation = adUseClient
        .CursorType = adOpenKeyset
        .LockType = adLockOptimistic
        .Open Sql, Cnn, , , adCmdText
    End With
    
    If Rs.RecordCount >= 1 Then
        MsgBox "Ya existe el ID, modifique"
        Exit Sub
    End If
        
    Sql = "INSERT INTO pen ([Num Id], Nombre, Riesgo, [Monto Caso], Moroso, [Nun_Patrono], [Nom_Patrono]) "
        Sql = Sql & "VALUES ('" & Worksheets("Registro").Range("C9").Value & "', " & _
                            "'" & Worksheets("Registro").Range("C11").Value & "', " & _
                            "'" & Worksheets("Registro").Range("E9").Value & "', " & _
                            "'" & Worksheets("Registro").Range("G9").Value & "', " & _
                            "'" & Worksheets("Registro").Range("G11").Value & "', " & _
                            "'" & Worksheets("Registro").Range("C13").Value & "', " & _
                            "'" & Worksheets("Registro").Range("E13").Value & "' )"
    
    With Rs
        .CursorLocation = adUseClient
        .CursorType = adOpenKeyset
        .LockType = adLockOptimistic
        .Open Sql, Cnn, , , adCmdText
    End With
    
        MsgBox "Datos actualizados con Exito!!!", vbInformation, "SACI"
        A_ingesarDatos = True
    
    
    
    End Sub

    Saludos

  7. Buenas tardes

    Gracias por el consejo así lo aplicare para casos futuros.

    Este el código que tengo para crear el registro de Excel a ACCESS y funciona bien para crear el registro.

    Sub crear()
    
    Application.ScreenUpdating = False
    If Trim([C9]) = "" Then
       MsgBox "*** Cédula en blanco ***", vbCritical, "Alerta"
       Exit Sub
    End If
    If Trim([E9]) = "" Then
       MsgBox "*** Riesgo en blanco ***", vbCritical, "Alerta"
       Exit Sub
    End If
    If Trim([C11]) = "" Then
       MsgBox "*** Nombre en blanco ***", vbCritical, "Alerta"
       Exit Sub
    End If
    Set Rs = New ADODB.Recordset
    Set cn = New ADODB.Connection
    cn.Open Conexion
        Sql = "INSERT INTO pen ([Num Id], Nombre, Riesgo, [Monto Caso], Moroso, [Nun_Patrono], [Nom_Patrono]) "
        Sql = Sql & "VALUES ('" & Worksheets("Registro").Range("C9").Value & "', " & _
                            "'" & Worksheets("Registro").Range("C11").Value & "', " & _
                            "'" & Worksheets("Registro").Range("E9").Value & "', " & _
                            "'" & Worksheets("Registro").Range("G9").Value & "', " & _
                            "'" & Worksheets("Registro").Range("G11").Value & "', " & _
                            "'" & Worksheets("Registro").Range("C13").Value & "', " & _
                            "'" & Worksheets("Registro").Range("E13").Value & "' )"
    cn.Execute (Sql)
    cn.Close
    Set cn = Nothing
        MsgBox "Datos actualizados con Exito!!!", vbInformation, "SACI"
        A_ingesarDatos = True
    
    End Sub

    En que lugar puedo agregar las lineas recomendadas para que valide si existen los datos antes de que los cree.  

    Saludos cordiales.

     

  8.  

    Un nuevo aporte para finalizar el proyecto


    Tengo el archivo funcionando cuando el usuario requiere solo una hoja activa. cuando se requiere que mas hojas estén activas no funciona. Ejemplo el user marco pass 123 debería tener activas las hojas "Registro, Registro1, Registro2". Con el codigo actual solo funciona la hoja "Registro"

    Ademas un favor extra que dependiendo el usuario que inicie sección ponga el Nombre de la columna "Nombre" en ("01.Adeudos" tabla "usuarios") del archivo en ACCESS y lo pegue en la hoja "Principal" celda C7 del archivo de EXCEL.

    en el siguiente enlace esta un ejemplo del proyecto.

    https://mega.nz/file/YRpRXZTL#Uynlq0oW77Eo0VbME26yYkKc1g7jXXu9w1AwfbFlRp0

    De nuevo muchas gracias por toda la ayuda en el proyecto.

    Saludos

  9. Muchas gracias 

    Estaba revisando la información y requiero de la ayuda en lo siguiente:


    1 Requiero que esa información la tome de la base de datos "01.Adeudos" tabla "usuarios". Además que que dependiendo las hojas activas sean visualizadas o ocultas. solo el administrador debe tener acceso a todas las hojas. Esto funciona solo si hay solo si el usuario activa una hoja pero si se requiere que estén activas mas de una hoja no funciona. ejemplo el user marco pass 123 debería tener activas las hojas "Registro, Registro1, Registro2". como esta ahorita solo visualiza la hoja "Registro"

    Ademas un favor extra que dependiendo el usuario que inicie sección detecte el Nombre de la columna "Nombre" en ("01.Adeudos" tabla "usuarios") y lo pegue en la hoja "Principal" celda C7.

     

    De nuevo muchas gracias por toda la ayuda en el proyecto.

    Saludos

  10. Muchas gracias por el aporte

     

    He estado trabajando en el registro

    tengo este codigo para agregar datos pero no logro que me los agregue favor ayuda para detectar el problema

     

     

    Function ingesarDatos_01() As Boolean
        Dim sSQL As String
        Dim sSQLIngreso_01 As String
        Dim nResultado As Long
        Dim nFila As Double
        Dim rCelda As Range
        Dim sTexto As String
        
        ingesarDatos_01 = False
        '--------------------------------------------------------------------------------
        'obtenemos la ultima fila con datos
        '--------------------------------------------------------------------------------
        
        '--------------------------------------------------------------------------------
        'Creamos el String de Ingreso de datos
        '--------------------------------------------------------------------------------
        sSQL = "INSERT INTO 02_morosos (Cedula, Carpeta, Funcionario_1, Fecha_1, Numero_Patrono, Nombre_Patrono) "
        sSQL = sSQL & "VALUES ('" & Worksheets("Registro_01").Range("C9").Value & "', "
        sSQL = sSQL & Worksheets("Registro_01").Range("J2").Value & ", "
        sSQL = sSQL & Worksheets("Registro_01").Range("C6").Value & ", "
        sSQL = sSQL & "#" & Format(Worksheets("Registro_01").Range("F6").Value) & "#, "
        sSQL = sSQL & Worksheets("Registro_01").Range("C13").Value & ", "
        sSQL = sSQL & Worksheets("Registro_01").Range("E13").Value & ", "
    
        '--------------------------------------------------------------------------------
        'realizamos el ingreso de los datos para cada linea
        'si todo salio OK, nResultado sera 0
        '--------------------------------------------------------------------------------
    
            If nResultado <> 0 Then
                MsgBox "Problemas al ingresar el registro", vbCritical, "SACI"
                Exit Function
            End If
    
        MsgBox "Datos actualizados con Exito!!!", vbInformation, "SACI"
        ingesarDatos_01 = True
    End Function

     

  11. Buenos dias

     

    Muchas gracias por su respuesta, disculpa si enfoque mal la pregunta fue que tenia la duda de que se pudiera hacer eso desde excel, gracias por aclarar y tener certeza de que si es posible.

    Es un proyecto grande resolviendo esas consultas me parece puedo completar hacer de mi parte el resto del proyecto.

    Gracias por sus aportes.

    Saludos  

  12. Buenos días 

    Primero que todo debo dar gracias por toda la ayuda de los miembros del foro.

    Estoy iniciando con un sistema para registrar información de un proceso con macros en EXCEL que utiliza información de ACCESS, el sistema se debe utilizar por varias personas.

     

    Tengo las siguientes dudas que acudo a ustedes para resolverlas.

    Usuario admin

    Contraseña 123

    1 Logre que detecte usuario y contraseña de una hoja de Excel. requiero que esa información la tome de la base de datos "01.Adeudos" tabla "usuarios". Además que que dependiendo las horjas activas sean visualizadas o ocultas. solo el administrador debe tener acceso a todas las hojas.

    2 En la hoja "Registro" debe consultar a la base de datos "01.Adeudos" tabla "pen" y completar datos. despues el usuario debe completar datos y permitir actualizar los datos en la base de datos "01.Adeudos" tabla "usuarios".

     

    https://mega.nz/file/MB5HyTib#5TMCNyAY50kXBSkCSe29piGkEYL9hoxhVtUzUzfu3Xk

     

     

    Saludos,

×
×
  • Create New...

Important Information

Privacy Policy