Facebook Twitter Gplus Flickr Pinterest LinkedIn YouTube RSS
Home Bases de datos Ejemplo de formulario de captura en Excel
formats

Ejemplo de formulario de captura en Excel

En esta ocasión presento un formulario de captura, con validaciones, que ingresará los datos capturados en una tabla de Excel.

Cómo funciona ??

Se presenta una tabla de Excel, con 14 campos. Mediante un botón se lanza un formulario que nos permitirá capturar datos. Cada TextBox, ComboBox y CheckBox tiene una validación que no permite ingresatos los datos capturados si algún objeto está vacío.

Objetos

  1. Formulario de captura.
  2. TextBoxes de captura.
  3. Control de calendario.
  4. Comboboxes que son llenados con listas predefinidas.
  5. CheckBoxes.

Imagen del formulario en acción

image

Código del formulario

Private Sub UserForm_Activate()
'LLENADO DE COMBOS
    Me.cmbMarcaCte.RowSource = "lstMarca"
    Me.cmbMarcaKit.RowSource = "lstMarca"
    Me.cmbStatus.RowSource = "lstStatus"
    Me.cmbPromocion.RowSource = "lstTipoPromo"
    Me.cmbSuper.RowSource = "lstSupers"
End Sub
'---------------------------------------------------------------------------------------
' Module    : frmCaptura
' Author    : Sergio A Campos H, exceleinfo.wordpress.com
' Date      : 25/06/2011
' Purpose   : Ejemplo de captura de datos
'---------------------------------------------------------------------------------------
'
Private Sub cmdRegistrar_Click()
'INICIO DE VALIDACIONES
    largo = txtNumero.TextLength
    If largo <> 10 Or Not IsNumeric(txtNumero.Value) Then
        MsgBox "El número debe ser a 10 dígitos y debe ser número", vbCritical, empresa
        txtNumero.SetFocus
    Else
        If cmbMarcaCte.Value <> cmbMarcaKit.Value Or txtModelCte.Value <> txtModelKit.Value Then
            MsgBox "El modelo del cliente debe ser el mismo que nos aparezca en Proveedor", vbCritical, empresa
            cmbMarcaCte.SetFocus
        Else
            If cmbMarcaCte = "" Or txtModelCte = "" Or cmbMarcaKit = "" Or txtModelKit = "" Then
                MsgBox "Algunos de los datos de la marca y modelo están vacíos", vbCritical, empresa
                cmbMarcaCte.SetFocus
            Else
                If cmbStatus = "" Then
                    MsgBox "No se ha seleccionado un status", vbCritical, empresa
                    cmbStatus.SetFocus
                Else
                    If txtCir = "" Then
                        MsgBox "No se ha ingresado la circular", vbCritical, empresa
                        txtCir.SetFocus
                    Else
                        If cmbPromocion = "" Then
                            MsgBox "No se ha seleccionado una promoción", vbCritical, empresa
                            cmbPromocion.SetFocus
                        Else
                            If cmbSuper = "" Then
                                MsgBox "No se ha seleccionado un Supervisor", vbCritical, empresa
                                cmbSuper.SetFocus
                            Else
                                If chkPromoV = FALSO Or chkPromoA = FALSO Or chkAjusteInt = FALSO Or chkComtInt = FALSO Then
                                    MsgBox "Algún(os) de los pasos no ha sido completado ", vbCritical, empresa
                                    chkPromoV.SetFocus
                                Else
                                    'Call Desproteger
                                    'ALTA DE LOS REGISTROS
                                    Set TransRowRng = ThisWorkbook.Worksheets("base").Cells(1, 1).CurrentRegion
                                    NewRow = TransRowRng.Rows.Count + 1
                                    With ThisWorkbook.Worksheets("base")
                                        .Cells(NewRow, 1).Value = txtNumero
                                        .Cells(NewRow, 2).Value = cmbMarcaCte
                                        .Cells(NewRow, 3).Value = txtModelCte
                                        .Cells(NewRow, 4).Value = dtpServicio
                                        .Cells(NewRow, 5).Value = cmbStatus
                                        .Cells(NewRow, 6).Value = txtCir
                                        .Cells(NewRow, 7).Value = cmbPromocion
                                        .Cells(NewRow, 8).Value = cmbSuper
                                        .Cells(NewRow, 9).Value = cmbMarcaKit
                                        .Cells(NewRow, 10).Value = txtModelKit
                                        .Cells(NewRow, 11).Value = chkPromoV
                                        .Cells(NewRow, 12).Value = chkPromoA
                                        .Cells(NewRow, 13).Value = chkAjusteInt
                                        .Cells(NewRow, 14).Value = chkComtInt
                                    End With
                                    GoTo fin
                                    '
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
    'Call Proteger
    Exit Sub
fin:
    Unload Me
    ThisWorkbook.Worksheets("base").Activate
    'Call Proteger
End Sub

:: Descargar el ejemplo EXCELeINFO – captura en formulario

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
38 Comments  comments 
  • Jaime Salazar

    Hola Sergio.
    Me pareció interesante la macro, pero al descargarla e iniciarla me da un error de depuración en el cual indica que no puede encontrar el proyecto o la biblioteca.
    ¿puedes ayudarme con eso?

    Cordiales saludos

    Jaime Salazar

    • sergioacamposh

      Qué versión de Excel utilizas ?

      • Jaime Salazar

        Excel 2010

      • sergioacamposh

        Entra al IDE de vba y ve al menú Herramientas > referencias. Ahí debe haber alguna referencia que haga falta. Desactívala y ve si funciona. Cualquier cosa con gusto le seguimos viendo.

  • agustin

    Hola me pasa lo mismo que a Jaime, estoy usando la versión 2010, el error sale en la primer linea de la siguiente macro:

    Private Sub cmdRegistrar_Click()
    ‘INICIO DE VALIDACIONES
    largo = txtNumero.TextLength

    puede tener que ver con la versión utilizada?

    Saludos

    • sergioacamposh

      Qué error en específico te marca ??

      La instrucción sirve para validar que el TextBox sólo tenga números de 10 dígitos.

  • Pingback: Que Excel trabaje para tí: formulario ingreso de datos para no programadores « EXCELeINFO – Excel vba e información

  • Christian

    Muchas gracias, me ha sacado de un gran apuro ya que no soy programador de VB y/o excel, si me pudieras orientar con lo suguiente te lo agradeceria, si ya una ves que tienes la captura deseas hacer la impresión de cada registro? supongamos que lo quieres para capturar los datos del empleado de la nomina y requieres q te imprima cada registro en un formato ya determinado.

    • sergioacamposh

      Que tal. Aquí lo que podrías hacer es hacer una plantilla con el formato que deseas en otra hoja del libro y mediante la función BUSCARV(Excel 2003)/CONSULTAV(Excel 2010) traerte los datos que ya capturaste.

  • http://no johk0563

    míster: tengo una hoja de cálculos con un sistema de comprobante de números , pero deseo crear una forma sencilla de ingreso de datos como la que muestras,
    sin entrar a la hoja y se pueda utilizar desde fuera de exel,
    es personal, te mandaría una copia para que la estudies ,
    mi mail es” jorge_rosaromero@hotmail.com
    nota: solo ingreso números de 2 cifras, en 20 lineas y en 24 columnas( dias al mes)

    • http://about.me/sergioacamposh sergioacamposh

      Hay que precisar dos cosas: si pretendes que el ingreso de los datos sean fuera de Excel, entonces para qué usarías Excel ??, igual puedes subir el archivo a un sitio gratuito y enviarme el link, pero no me puedo comprometer en desarrollarte ningún archivo, en cambio sí a tratar de apoyar en dudas que tengas.

      • http://no johk0563

        míster no es que sea fuera de exel, es que me sea mas practico el ingresar los números , antes de tener que recorrer la lista, y que a su bes me diga cuales de los 100 puntos (productos y herramientas ) fueron usadas, le envió el archivo como rar con fotos de las artesanías y un txt explicándole los motivos agradecería me ayudara, desde ya mil gracias por su respuesta y mil mas por su atención.
        descargue de aquí por favor: https://rapidshare.com/files/3741213550/Desktop.rar
        Jorge Hernandez

  • Ariel

    Excelente!!, creo que tus soluciones son muy acertivas, este formulario esta muy bueno, gracias por compartir tus conocimientos.
    Tengo una consulta que hacerte, no se si es posible hacerlo: debo manejar una bodega con diversos productos, todos con un ID 10 digitos no repetibles. pero debo recibirlos(input), y despacharlos(output), el tema es que quiero hacerlo con una pistola capturadora de codigo de barras. que al mometo de capturar un codigo llene la base de datos de stock, y que la rellene automaticamente con informacion de otra base de datos de produccion.?

    Saludos

    • http://about.me/sergioacamposh sergioacamposh

      Gracias por los comentarios.

      Las pistolas de códigos de barras, al ser dispositivos de entrada, hacen lo mismo que un teclado pero sin escribir el número, sólo se pasa por el código de barras y se captura en la aplicación que tengas abierta.

      Se me ocurre que cuando se capture el código en Excel, se realice una fórmula de BUSCARV y/o CONSULTAV para que te traiga los datos de la otra base que tienes.

  • http://gravatar.com/nocturnalseeker nocturnalseeker

    Buen día, descargué tu proyecto y lo abrí en Office 2010, al dejar los campos en blanco para que me muestre los errores menciona que no se puede encontrar el proyecto o la biblioteca, me envía a esta sección del código

    Private Sub cmdRegistrar_Click()
    ‘INICIO DE VALIDACIONES
    largo = txtNumero.TextLength

    Además, al ingresar un registro lleno, no lo escribe en la tabla, como si el botón Registrar no hiciera nada. ¿A qué se debe y cómo podría corregirlo?

    Gracias!

    • http://about.me/sergioacamposh sergioacamposh

      En la venta del IDE de vba (Alt + F11), revisa en el menú Herramientas > Referencias, que tengas marcadas las opciones:

      Visual basic for applications
      Microsoft Excel 14.0 Object Library
      Microsoft Forms 2.0 Object Library

  • carlos

    Hola amigo se ve sabes mucho y espero me puedas ayudar, tengo echo un archivo como para manejar un pequeño almacen, pero son varias personas las q pueden entrar al archivo y modificar informacion, la captura de la info la hago por medio de un formulario, mi duda es como puedo recuperar informacion en caso de cometer un error a la hora de usar un formulario, es decir ya introduci unos valores con el formulario, pero me di cuenta que cometi un error, como puedo deshacer dicha accion. ( el boton deshacer no me sirve para cosas realizadas con formularios). Gracias y espero tu respuesta

    • http://about.me/sergioacamposh sergioacamposh

      Hola Carlos:

      La cuestión con las macros, es que como no son funciones que provee en sus herramientas, no hay manera fácil de dar un Deshacer. Para el caso si introduciste un valor equivocado en el formulario, el poner mensajes de confirmación de tal manera que la persona que captura la información valide los datos antes de guardarse.

      No sé si el caso que me mencionas es para el ejemplo de este post o tienes un caso particular diferente a este ?

  • Gabriel

    Hola, soy nuevo en programación.
    Y me gusto lo que haces.

    Puedes ayudarme a programar un boton de borrado de registro, un para actualizar datos en un registro, y una barra registros para poder moverme entre los registros

    Gracias

  • Gabriel

    Si puedes puedo verlo para el ejmplo de este post y yo lo condiciono a mi caso particular

    Gracias

    • http://about.me/sergioacamposh sergioacamposh

      Hola Gabriel.

      Te comento que el Blog está dedicado a compartir ejemplos prácticos, pero me reservo a crear desarrollos completos bajo pedido, ya que no es objetivo del Blog.

      Te puedes dirigir al siguiente post que trae alguna funciones de lo que comentas. Te puedes guiar en el ejemplo adjunto para adecuarlo a tus necesidades y si algo se te atora y nos da el tiempo, comentas. http://exceleinfo.wordpress.com/2012/07/07/modificar-datos-de-una-tabla-con-un-listbox-en-excel/

  • http://gravatar.com/germantinao wizzfernindand

    hola necesito tu ayuda amigo tengo que llevar la captura de inventarios y tengo una base de datos pero yo creo que tu me puedes dar mejores ideas se ve que eres bueno ya que tengo q capturar y se me hace muy agobiante tal vx tengas algo por ahi gracias por tu atencion

    • http://about.me/sergioacamposh sergioacamposh

      Para la captura de inventarios siempre es más recomendable utilizar un lector de código de barras para agilar el proceso y evitar errores de captura.

      En todo caso, se pueden capturar los artículos por un código único, el cual debe estar definido en tu base de datos.

      Tal vez te interese este ejemplo

      • http://gravatar.com/germantinao wizzfernindand

        mira mi trabajo es de capturar 5 hojas y las tengo q capturar tal cual en excel pero se enlazan pk las existencias finales de un inventario es la existencia inicial de otro son dos turnos al dia necesito agilizar todo este proceso pk llevo retrazo de una semana

  • Frank eduardo molina ramirez

    Buen dia sergio… este ejemplo me sirve mucho para un trabajo que tengo de la U y quiero adaptarlo a mis formulario… mi consulta es como puedo agregar ese opcion de fecha que tienes en este ejemplo he mirado y no encuentro de donde la direccionaste o la llmaste no logro ubicar su oprigen si me puedes colaborar mi msn es tecnisis-@hotmail.com o al gmail frank900501@gmail.com

    • http://about.me/sergioacamposh sergioacamposh

      Hola Frank:

      Para la fecha inserté el control Date Time Picker. Está en la misma paleta donde está el Button, ComboBox, ListBox. Si no lo encuentras, da click derecho en esa paleta y elije Controles adicionales. Ahí lo encuentras.

      • Frank eduardo molina ramirez

        en mi poratatil no me aparece para agregarle ese control pero en mi pc de mesa si…. eso a que se debe… por que si agrego eso y el dia de la presentacion no me funciona quedo mal…

  • Pingback: EXCELeINFO – Excel vba e información - Estadísticas del Blog 2012, lo más visitado

  • Ledger146

    Hola estimado,
    el ejemplo me ayudó con capturar los valores de un combofix,
    sería interesante si de un frame sólo grabe 01 opcion o valor escogido a la hoja de excel.
    Es decir, grabar los valores de un frame que contengan multiples opciones (option button) y que grabe sólo la que hemos escogido (opción única).

  • OSCAR

    Hola amigo, quieo descargar el ejemplo del formulario pero no lo encuentro, por favor ayudame

    • sergioacamposh

      He actualizado el link. Ya lo puedes descargar.

  • Pingback: EXCELeINFO – Excel vba e información - Formulario de captura en Excel que guarda datos en otra hoja

  • Sergio

    Buenos Dias soy principiante en macros y quiero aprenderlos ahorita necesito crear un archivo en excel el cual tenga 3 botones y que me direccionen a una tabla en la cual pueda ingresarle fotos, tendras algun ejemplo?

  • Punisher

    Que tal, otra vez yo, espero y también puedas re subir este ejemplo.
    Gracias.

  • Punisher

    Si solo puedes subir uno… entonces puedes subir el otro

    https://blogs.itpro.es/exceleinfo/2014/02/02/formulario-de-captura-en-excel-que-guarda-datos-en-otra-hoja/
    Me serviría mas el otro, pero igual si puedes subir ambos, de una vez te agradezco tu ayuda.
    Me gustan tus ejemplos en tu blogs…
    Saludos.

Sistema Wordpress corriendo bajo... Windows Server 2008 R2
Follow

Get every new post delivered to your Inbox

Join other followers