Cuando hablamos de generar facturas, siempre tenemos que pensar en la fuente y la estructura de los datos a partir de la cual confeccionaremos nuestras facturas. El concepto que debemos tener claro es que en esta base de datos inicial, cada factura se va a repetir tantas veces como elementos tenga. Este artículo detalla cómo crear un sistema de facturación utilizando Visual Basic, específicamente a través de macros VBA en Excel, así como explorando otras opciones de impresión en Visual Basic.
Preparación y Estructura de Datos en Excel con VBA
Para crear un sistema de facturación eficiente, es fundamental establecer una base sólida para la gestión de datos. Quizás pueda parecer un proceso complejo, pero en realidad es bastante sencillo en casi todo el código. La versión funciona correctamente en archivos .xlsm y en versiones 2010, 2013 y 2016.
Automatización de Datos del Cliente
Cada vez que seleccionamos un cliente, es tedioso buscar y escribir todas las veces la Dirección de los clientes, es por eso que vamos a escribir una Formula en la C7 para que al seleccionar el Cliente, automáticamente nos devuelva la Dirección del Cliente. Escribe la siguiente formula en la Celda C7:=SI (C6<>""; BUSCARV (C6; Clientes; 2; 0) ;"") Listo con esta fórmula, ahora tan solo al seleccionar el cliente, te devolverá la Dirección del Cliente, haz la prueba ahora.
Cálculo de Totales
A continuación incluimos una serie de instrucciones para calcular el total del precio (multiplicando la cantidad por el precio por unidad).
Implementación de Controles en la Hoja de Excel
Para interactuar con el sistema de facturación, se implementan botones de comando. Pues bien, he creado tres botones a la derecha (fuera del área de impresión) que serán los comandos que vamos a utilizar para crear la factura. Dado siempre vamos a interactuar con esos botones de comando, os iré comentando su función y la macro que tienen asociada. Con este botón vamos a cargar o actualizar el nombre de las empresas y el número de factura de los ComboBox 1 y 2. Esta macro carga y actualiza los datos del Combobox1 que muestra los nombres de las empresas.
Lea también: IVA 21% Excel
Creación del Botón Imprimir y Guardar
Creando el Botón imprimir y Guardar Datos desde la Hoja Excel Factura. Para Crear el Botón Imprimir y Guardar, vamos a ubicarnos en la Pestaña Programador si tienes Excel 2010 o bien Desarrollador si tienes el Excel 2013. En mi caso tengo el Excel 2013 y me ubico en la Pestaña Desarrollador, Grupo Controles y despliego el Comando Insertar, para seleccionar el Control ActiveX Botón de Comando. Una vez seleccionado lo dibujamos desde la Celda G8:H9. Muy bien, ahora vamos a nombrar el Botón, cambiaremos el nombre CommandButton1 por Imprimir y Guardar. Para eso sigamos los siguientes pasos: Pulsamos clic derecho sobre le botón y seleccionamos Propiedades. Se presenta una ventana, dentro de este, nos ubicamos en Caption y sustituimos CommandButton1 por Imprimir y Guardar, Cerramos la ventana y listo ya hemos cambiado el nombre del botón.
Programación de Macros en VBA para la Automatización
Copiando Macros en VBA para la automatización de la Plantilla.
Inserción de Módulos VBA
Este código lo vamos a copiar dentro de un Módulo en Visual Basic para Aplicaciones. Para insertar un Modulo sigue los siguientes pasos: Ve a la Pestaña Insertar y haz clic sobre el comando Modulo, y veras que en la Venta Proyecto se ha insertado una Carpeta denominado Módulos, lo despliegas y veras El Modulo1, haz doble clic sobre el modulo 1 y en la parte derecha se abre el espacio donde copiaremos los códigos, lo copiamos y listo.
Macros de Limpieza e Impresión
A continuación te voy a dar los códigos para llamar a imprimir el formulario y el código para borrar el Formulario una vez guardado:
Sub limpieza()
ActiveSheet.Range("C6,F4").Value = ""
ActiveSheet.Range("A10:B17").Value = ""
End Sub
Lea también: Guía IVA reducido
Sub Imprimir()
' imprimir Macro
On Error Resume Next
Sheets("FACTURA").Activate
ActiveSheet.PrintPreview
End Sub
Programación del Botón Imprimir y Guardar
Programando el Botón Imprimir y Guardar de la Hoja Excel Factura. Para programar el botón Imprimir y Guardar nos ubicamos en la Hoja Excel factura y pulsamos clic derecho sobre el botón y seleccionamos la opción Ver Código. Se abre Visual Basic para Aplicaciones y nos ubicamos en medio de los Códigos de Programación:
Private Sub CommandButton1_Click()
End Sub
Y copiamos los Siguientes Codigos:
Call Imprimir
'rutina que graba la factura en hoja base
'se busca la primer fila libre en hoja Fact
filalibre = Sheets("Base").Range("A1048576").End(xlUp).Row + 1
'se pasarán los datos desde la 1er fila de items
ActiveSheet.Range("A10").Select
fila = 10
While ActiveCell.Value <> ""
'copiamos datos fijos ajustando nro col
Sheets("Base").Cells(filalibre, 2) = ActiveSheet.Range("F4") 'NRO FACT
Sheets("Base").Cells(filalibre, 1) = ActiveSheet.Range("B4") 'FECHA
Sheets("Base").Cells(filalibre, 3) = ActiveSheet.Range("C6") 'CLIENTE
'otros datos del encabezado
'copiamos lista de items
Sheets("Base").Cells(filalibre, 4) = ActiveCell.Offset(0, 0) 'CANT
Sheets("Base").Cells(filalibre, 5) = ActiveCell.Offset(0, 1) 'COD PROD
Sheets("Base").Cells(filalibre, 6) = ActiveCell.Offset(0, 2) 'PROD
Sheets("Base").Cells(filalibre, 7) = ActiveCell.Offset(0, 3) 'DESCRIPC
Sheets("Base").Cells(filalibre, 8) = ActiveCell.Offset(0, 4) 'PRECIO UNIT
Sheets("Base").Cells(filalibre, 9) = ActiveCell.Offset(0, 5) 'PRECIO TOT
'incremento la variable fila para repetir el bucle
filalibre = filalibre + 1
'repito el bucle para los items siguientes
ActiveCell.Offset(1, 0).Select
Wend
'una vez concluída la copia debiera limpiarse el form de datos
'para el ingreso de nueva factura
Call limpieza
Lea también: ¿Cómo localizar tus XML del SAT?
Pruebas del Sistema de Facturación en Excel
Probando Tu Sistema de facturación en Excel. Para probar la Plantilla vamos a digitar dos Facturas y a continuación te dejo los detalles:
- Venta de 2 quintales de Arroz y 3 quintales de Azúcar a Nombre de Paula Hodgson.
- Venta de 4 quintales de Harina, 3 de Arroz y 5 de Frijoles a Nombre de Roger Perez.
Digitación y Guardado de Facturas
Vamos a Digitar las Facturas: Digitamos o Creando la Factura 1. Para ello, sigue estos pasos:
- Digitamos el Numero de factura en la Celda F4, en este caso el número 1.
- Digitamos el Nombre del cliente, en este caso lo escogemos de la Lista Desplegable “ Paula Hodgson Pérez”.
- La Dirección automáticamente ya aparece, entonces continuamos.
- Ahora digitamos los detalles.
- Ahora que ya está lista la Factura, solo pulsamos clic sobre el Botón Imprimir y Guardar, se presenta la Vista preliminar lo imprimes y listo ya se guardó la Factura y tenemos una nueva Factura para facturar a un Nuevo cliente.
Puedes observar la Hoja Base, ya contiene los Datos que teníamos en la Factura 1.
Opciones de Impresión Avanzadas en Visual Basic
Más allá de la impresión básica, Visual Basic ofrece diversas maneras de manejar la salida de documentos para un sistema de facturación.
Programas Generadores de Reportes
Usar un programa Generador de Reportes, como Crystal Reports, VideoSoft Reports, etc. Aunque hay algunas otras, pero no son necesarias.
Impresión Directa con el Objeto Printer de VB
Si lo que necesitas imprimir no es muy complejo, podrás usar el objeto Printer de VB, y escribir las rutinas necesarias para imprimir desde VB. Este es útil para imprimir Tickets, listados sencillos, o sobre formularios de papel pre-impreso (no te confundas con los formularios de VB).
Método PrintForm
Si usás el método PrintForm tendrás que diseñar el formulario lo más parecido al papel, y tendrás que pensar qué hacés con los botones y otros controles que no querés que salgan impresos.
Crystal Reports para Informes Sofisticados
Por último, si querés lograr informes más sofisticados, podés usar Crystal Reports (aunque hay otras herramientas, yo me incliné por esta que además de ser muy completa, Microsoft la incluyó en VS.NET). CR te permite diseñar reportes, listados, informes de referencia cruzada, con datos que provienen de algún origen de datos, por ejemplo, una BD. Sin embargo, tendrás que dedicar un tiempo a conocer esta herramienta y cómo usarla junto a VB. Lamentablemente, muy poca gente usa herramientas como esta, y por lo tanto cuesta un poco conseguir buena información. Parece que la mayoría de los programadores, solo desarrolla aplicaciones que no tienen o tienen necesidades muy simples de impresión. Si buscás en guille.costasol.net , podrás encontrar algunas entregas sobre Crystal Reports.
