top of page
Foto del escritorSistema MRP

Base de datos en Excel de Nómina

Actualizado: 13 dic 2019


Hola emprendedores y entusiastas productivos. En esta ocasión vamos a desarrollar una base de datos para la nómina que puede generarse en una empresa, el cual es un registro sobre información del trabajador, salario o sueldo base, entre otros. Esta nómina será elaborada a través de Excel y macros (VBA). La nómina puede relacionarse con varias gestiones de la organización, que aumentarán según la profundidad en las áreas que la misma quiera controlar. Estas gestiones pueden ser y no se encuentran limitadas a: plantilla del personal, gestión de atrasos y faltas, gestión de multas, de vacaciones, horas extras y suplementarias, liquidaciones, entre otras.


Este artículo está enfocado únicamente al desarrollo de la plantilla del personal para generar una base de datos de trabajadores. Las otras gestiones relacionadas y mencionadas en esta publicación son abordados en otras publicaciones dentro del blog de esta página.


Bien, vamos con un procedimiento para elaborar nuestra plantilla de personal.


1. Creación de tabla y campos

Debemos identificar el nombre de la base de datos (tabla) y los campos que ésta debe contener. Ejemplo:


Nomina de pago (plantilla de empelados)

Los campos pueden ser diversos y tener una mayor o menor extensión.


2. Creación de formularios

Con la tabla y los campos identificados se pueden elaborar formularios, que pueden ser elaborados fácilmente en el entorno VBA. Ejemplo:


Base de datos en Excel y VBA para la nómina de personal
Base de datos en Excel de nómina

3. Lista de campos

El formulario puede contener diferentes listas desplegables ("ComboBox "), cuyas opciones son limitadas y pueden estar enlazadas con otras tablas dentro del libro para indexar las listas. Ejemplo:

- El campo Estado Civil puede presentar varias opciones (soltero, casado, viudo, otros). Estas listas pueden ser dinámicas y ser anexadas bajo un nombre para ser referido en el entorno VBA (ver rangos dinámicos).


4. Codificación VBA

Los formularios aparte de los controladores de error que deben ser habituales, también deben tener una rutina para la entrada y organización de los datos. A continuación, se muestran un ejemplo:


- Tenemos un formulario que contiene 4 campos ("nombres", "cedula", "iess", "ComboBox2"). Por lo tanto, una rutina simple de entrada de datos sería la siguiente:

 

Private Sub CommandButton1_Click()

'Optimizar macro

Application.ScreenUpdating = False


'Campos de formulario se copian a la tabla si estos no están vacíos

If nombres.Text <> "" And cedula.Text <> "" And iess.Text <> "" And ComboBox2.Value <> "" Then


Sheets("BD").Select

For i = 7 To 100

If Cells(i, 56).Value = "" Then

Cells(i, 56).Value = nombres.Text

Cells(i, 57).Value = cedula.Text

Cells(i, 58).Value = iess.Text

Cells(i, 59).Value = ComboBox2.Value


Exit For

End If

Next


Else

MsgBox ("Rellenar todos los campos")

End If

End sub

 

También deberían existir varios cálculos que se podrían automatizar tan solo rellenando los campos del formulario como para determinar fondos de reserva, ciertos cálculos iniciales para una plantilla de vacaciones, y otros dependiendo de la complejidad del sistema. Los mismos cálculos deben codificarse. Por ejemplo:


 

' Determinar el monto por fondos de reserva (Aplica al libro en cuestión)

lastrow = Range("CC" & Rows.Count).End(xlUp).Row

Range("CC7:CC" & lastrow + 1).formula = "=IFERROR(IF(VLOOKUP(RC[-25],R6C56:R6000C81,25,FALSE)=""FONDOS DE RESERVA ACTIVADOS"",PLANDECUENTAS!R4C46*RC[-2],""SIN FONDO""),""ERROR"")"


 

Tenemos además que el formulario contiene un botón para eliminar los datos introducidos. Por lo que, podemos colocar lo siguiente:

 

'Borrar campos

Private Sub CommandButton2_Click()


nombres.Text = Empty

cedula.Text = Empty

iess.Text = Empty

ComboBox2.Value = Empty


 

Se observa también que el formulario tiene un botón en el que se puede adjuntar imágenes de los trabajadores. Para la ejecución de este procedimiento podemos colocar lo siguiente:

 

Private Sub CommandButton3_Click()


'Añadir imágenes (extensión .jpg)

With Application.FileDialog(msoFileDialogFilePicker)

.AllowMultiSelect = False

.InitialFileName = CurDir

.Filters.Clear

.Filters.Add Description:="Images", Extensions:="*.jpg", Position:=1

.Title = "Seleccionar la imágen (jpg). Para que el sistema funcione de forma eficiente, ésta no debe pesar más de 15 kb."

If .Show = -1 Then TheFile = .SelectedItems(1) Else TheFile = 0

End With

'No file selected

If TheFile = 0 Then

MsgBox ("Seleccionar imagen .jpg")

Exit Sub

End If

Sheets("BD").Select

For i = 7 To 100

If Cells(i, 55).Value = "" Then

Cells(i, 55).Value = "FOTO"

Cells(i, 55).AddComment

Cells(i, 55).Comment.Visible = False

Cells(i, 55).Comment.Shape.Fill.UserPicture TheFile

Exit For

End If

Next

End Sub

 

Al finalizar, podríamos tener un formulario que genere una lista de personal de la organización. Y, con ello, tener un punto de partida para integrarse a otros elementos revisados con anterioridad.


Si deseas armar tus propios formularios y construir tu propia base de datos a partir de nuestro código ya desarrollado, con los múltiples cálculos automatizados puedes considerar adquirir nuestro programa de gestión y planificación de inventarios para sistemas de producción a un costo bastante accesible. El mismo te permite editar todo el código sin ningún tipo de restricción.


Si deseas visualizar la ejecución del programa para el ejemplo en cuestión puedes observar el siguiente vídeo:



Por mi parte, me despido, sin antes desearles un genial día. Y, no se olviden de sonreír, para recordar que la vida sonríe siempre.


328 visualizaciones1 comentario

댓글 1개


Fernanda Albuja Molina
Fernanda Albuja Molina
2019년 11월 04일

Muchas gracias por el aporte y exitos :)

좋아요
bottom of page