Excel y planilla compartida con ingreso de datos por formulario

Dante Amor: Hice una mini herramienta de trabajo con Excel y VB que consiste en que a través de un formulario se realiza una solicitud y cuando se da ingresar, estos datos se trasladan a una hoja excel, a cada solicitud se le adjudica un numero de solicitud y se guarda solicitud a solicitud por fila.

El problema es que si dos usuarios al mismo tiempo están ingresando se envía la información a la ultima fila vacía pero excel no detecta esto y suscribe los datos y le pregunta al usuario que es lo que quiere mantener si lo que el ingreso o lo que ingreso el otro usuario que esta trabajando.

Yo necesito que siempre excel cuando identifique estos casos coloque en la primer fila vacía lo del usuario 1 y en la siguiente lo del usuario 2, para esto entiendo que debe grabar segundo a segundo para tener acualizada la información, pero bueno no se si esa sea la solución.

Les agraadezco me puedan ayudar ya que esto es la base de esta herramienta de trabajo, tenemos que trabajar muchas personas al mismo tiempo ingresando solicitudes y necesitamos no borranos la información que cada uno ingresa entre nosotros.

1 respuesta

Respuesta
2

H o l a : Lo que hice alguna vez, es solicitar el número, entonces en una fila vacía se pone un número consecutivo, ese número consecutivo puede ser el número de solicitud, ese número se entrega al solicitante (usuario 1), se almacena en la fila vacía y se guarda el archivo.

Si otro usuario (usuario 2), va a generar una solicitud, primero tiene que solicitar el número de solicitud.

Mientras el usuario 1, continua con su proceso de capturar la solicitud, cuando quiera registrar la solicitud, lo que tiene que hacer la macro es buscar el número de solicitud y entonces en esa fila ingresar los datos.

Te anexo los códigos:

Private Sub CommandButton1_Click()
'Por.Dante Amor
'
'Obtener número
    If Label1 <> "" Then
        MsgBox "Ya tienes un número, no puedes obtener otro", vbCritical, "TICKETS"
        Exit Sub
    End If
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook
    'Abre el archivo que contiene las solicitudes
    ruta = Range("E1") '"\\Damor\Blog\"
    arch = "libro a.xlsm"
    Set l2 = Workbooks.Open(ruta & arch, , False)
    Set h2 = l2.Sheets(1)
    l1.Activate
    act = h2.Range("A" & l2.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row)
    f = h2.Range("A" & Rows.Count).End(xlUp).Row
    nvo = act + 1
    Label1.Caption = nvo
    'registra en la nueva fila el nuevo número de solicitud
    h2.Range("A" & f + 1) = nvo
    Application.DisplayAlerts = False
    'guarda y cierra el libro de solicitudes
    l2.Save
    l2.Close
End Sub
'
Private Sub CommandButton2_Click()
'Por.Dante Amor
'
'Guardar
    Application.ScreenUpdating = False
    If Label1.Caption = "" Then
        MsgBox "Primero debes obtener un número", vbCritical, "TICKETS"
        Exit Sub
    End If
    If TextBox1 = "" Then
        MsgBox "Captura un problema", vbCritical, "TICKETS"
        Exit Sub
    End If
    Set l1 = ThisWorkbook
    ruta = Range("E1") 'ruta = "\\Damor\Blog\"
    'Abre archivo de solicitudes
    arch = "libro a.xlsm"
    Set l2 = Workbooks.Open(ruta & arch, , False)
    Set h2 = l2.Sheets(1)
    l1.Activate
    'Buscar solicitud
    Set b = h2.Range("A:A").Find(Val(Label1.Caption))
    If Not b Is Nothing Then
        'guarda datos de solicitud
        h2.Cells(b.Row, "B") = TextBox1
        h2.Cells(b.Row, "C") = TextBox2
    End If
    'guarda y cierra el libro de solicitudes
    l2.Save
    l2.Close
    limpiar
    MsgBox "Datos guardados", vbInformation, "TICKETS"
End Sub
'
Private Sub CommandButton3_Click()
'Por.Dante Amor
'
'Cancelar
    Application.ScreenUpdating = False
    If Label1.Caption = "" Then
        MsgBox "Primero debes obtener un número", vbCritical, "TICKETS"
        Exit Sub
    End If
    Set l1 = ThisWorkbook
    ruta = Range("E1") ' ruta = "\\Damor\Blog\"
    arch = "libro a.xlsm"
    Set l2 = Workbooks.Open(ruta & arch, , False)
    Set h2 = l2.Sheets(1)
    l1.Activate
    Set b = h2.Range("A:A").Find(Val(Label1.Caption))
    If Not b Is Nothing Then
        h2.Cells(b.Row, "B") = "Cancelado"
    End If
    l2.Save
    l2.Close
    limpiar
End Sub
'
Private Sub CommandButton4_Click()
'Por.Dante Amor
'Salir
    Unload Me
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
'Cargar datos iniciales
    Label6.Caption = Application.UserName
    Label7.Caption = Date
End Sub
'
Sub limpiar()
'Por.Dante Amor
    Label1.Caption = ""
    TextBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    TextBox4 = ""
    TextBox5 = ""
End Sub

Trata de adaptarlo a tu formulario.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas