Recientemente tuve que registrarme bajo el impuesto sobre bienes y servicios (GST) para poder solicitar el GST sobre mis ganancias.
Una vez que tenga un número GST, debe presentar su declaración de impuestos todos los meses (en la India).
Entonces, todos los meses, mi contador registrado se comunicaba conmigo solicitando facturas de ventas para poder presentar el GST.
En mi caso, solo hay un puñado de facturas por crear, ya que solo tengo unas pocas fuentes de ingresos.
Sin embargo, dado que se trata de un trabajo adicional, quería hacerlo lo más rápido posible.
Entonces, para minimizar mi esfuerzo, creé una plantilla de Generador de facturas en Excel que me permite tener todos los datos en un solo lugar, y luego crea automáticamente facturas en PDF para todos los puntos de datos.
Como puede ver abajo, todo lo que tengo que hacer es hacer doble clic en el nombre del cliente (en la columna B), y crearía y guardaría instantáneamente la factura en formato PDF en la carpeta especificada.
También puede modificar la plantilla de factura para que se adapte al formato de su empresa (lo que requeriría que cambie un poco el código VBA, que se explica a continuación).
Crea una factura como se muestra a continuación:
¿Cómo funciona esta plantilla de generador de facturas?
En esta plantilla de factura, hay dos hojas de trabajo:
- Detalles - Aquí es donde debe especificar los detalles de la venta / transacción. Para mantener todo junto, he creado una fila para cada registro. Todos los detalles de una transacción se registran en la fila.
- Plantilla de factura - Esta es una plantilla de marcador de posición de la factura donde algunos campos se dejan vacíos. Necesito generar una factura separada para todos los registros de venta y los detalles de cada factura se obtienen de la hoja de trabajo Detalles.
También tengo una carpeta en mi escritorio con el nombre "PDF de facturas". Esta es la carpeta donde se guardan las facturas en PDF recién creadas.
Ahora veamos cómo funciona esto:
Debe hacer doble clic en el nombre del cliente (resaltado en naranja en la hoja de Detalles).
¡Eso es!
Cuando hace doble clic en el nombre del cliente, se inicia la magia de VBA en el back-end y suceden las siguientes cosas:
- Los detalles del cliente y la transacción de venta se recogen y la hoja de plantilla de factura se completa con estos detalles.
- Se crea un nuevo libro de trabajo que tiene los detalles del cliente seleccionado (en el que hizo doble clic).
- Este libro de trabajo se guarda como PDF en la carpeta PDF de facturas.
- El nuevo libro se cierra sin guardar.
En caso de que haya algún cambio en los detalles de la factura, puede volver a hacer doble clic en el nombre del cliente y se creará una nueva factura (que sobrescribirá la anterior).
Tenga en cuenta que los nombres de las facturas se basan en el mes y el número de factura.
Por ejemplo, una factura con la fecha 15-04-2019 y el número de factura como 1 se guardaría con el nombre Abril2021-2022_1.pdf. Esto ayuda a realizar un seguimiento de las facturas en caso de que tenga demasiadas.
Puede descargar la plantilla del generador de facturas haciendo clic en el botón a continuación:
Modificación de la plantilla del generador de facturas
Creé esta plantilla de factura con un formato que necesitaba para mis presentaciones de GST.
Si necesita un formato diferente, tendrá que editar la plantilla y luego ajustar el código VBA backend.
Primero, déjame mostrarte el código y explicarte cómo funciona:
Sub CreateInvoice (RowNum As Integer) Application.ScreenUpdating = False Dim wb As Workbook Dim sh As Worksheet With shInvoiceTemplate .Range ("D10") = shDetails.Range ("A" & RowNum) .Range ("D11") = shDetails. Rango ("B" & RowNum) .Range ("D12") = shDetails.Range ("C" & RowNum) .Range ("B15") = shDetails.Range ("D" & RowNum) .Range ("D15" ) = shDetails.Range ("F" & RowNum) .Range ("D16") = shDetails.Range ("G" & RowNum) .Range ("D18") = shDetails.Range ("E" & RowNum) Terminar con FPath = "C: \ Users \ sumit \ Desktop \ Invoice PDFs" Fname = Format (shInvoiceTemplate.Range ("D10"), "mmmm aaaa") _ & "_" & shInvoiceTemplate.Range ("D12") shInvoiceTemplate.Copy ActiveSheet.Name = "InvTemp" Set wb = ActiveWorkbook Set sh = ActiveSheet sh.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ FPath & "\" & Fname, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False , OpenAfterPublish: = False wb.Close SaveChanges: = False ThisWorkbook.Activate Application.ScreenUpdating = True End Sub
El código anterior es lo que copia los detalles de una transacción, llena la plantilla de marcador de posición de la factura con esos detalles, crea un nuevo libro de trabajo y guarda el nuevo libro de trabajo como PDF en la carpeta especificada.
Si tiene una plantilla diferente o una ubicación de carpeta diferente, debe modificar las partes del código resaltadas a continuación:
- La primera sección resaltada es la que toma los detalles de la hoja de Detalles y completa la plantilla de factura. Si decide modificar la plantilla de factura, debe asegurarse de elegir los detalles correctos modificando esta parte del código.
- Esta línea especifica la ubicación de la carpeta. En mi caso, era una carpeta en mi escritorio. Puede especificar la dirección de la carpeta donde desea que se guarden las facturas.
Tenga en cuenta que he cambiado el nombre del código de la hoja de trabajo a "shDetails". Hice esto para poder usar el nombre - shDetails - en mi código y continuaría funcionando incluso si cambia el nombre de las hojas en la hoja de trabajo.
Si desea obtener más información sobre el nombre de la hoja y el nombre del código, eche un vistazo a esto (consulte la sección sobre cómo usar el nombre del código de la hoja de trabajo).
¿Dónde está el código en el libro de trabajo?
El código se coloca en el back-end del libro de Excel en un módulo.
Para acceder al código, siga los pasos a continuación:
- Haga clic en la pestaña Desarrollador.
- Haga clic en la opción de Visual Basic. Esto abrirá la ventana del Editor de VB.
- En el editor de Visual Basic, haga doble clic en el Módulo para abrir su ventana de código. Encontrarás el código mencionado anteriormente.
En caso de que esté creando una plantilla usted mismo, es posible que no encuentre el módulo en un nuevo libro de trabajo. Debe hacer clic con el botón derecho en cualquiera de los objetos del libro de trabajo, ir a Insertar y luego hacer clic en Módulo. Esto insertará un nuevo módulo.
Hacer que la funcionalidad de doble clic funcione
El código anterior hace todo el trabajo pesado, pero debe conectarlo al evento de doble clic.
Esto significa que el código de macro de VBA anterior debe ejecutarse cada vez que alguien hace doble clic en las celdas llenas en la columna del nombre del cliente.
Esto se puede hacer insertando el siguiente código en la ventana de código de la hoja de trabajo:
Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) If Target.Cells "" And Target.Column = 2 Then Cancel = True Call CreateInvoice (Target.Row) End If End Sub
Estos son los pasos para insertar este código en el backend de la hoja de trabajo:
- Haga clic con el botón derecho en la pestaña de la hoja de trabajo "Detalles"
- Haga clic en la opción "Ver código".
- Copie y pegue el código anterior en la ventana de código que aparece.
El código anterior hace lo siguiente:
- Comprueba si la celda en la que se ha hecho doble clic tiene los datos del cliente o no. Utiliza la instrucción IF para verificar y ejecutar el código solo si la celda no está vacía y en la Columna B.
- Si se cumplen los dos criterios especificados, deshabilita la funcionalidad de doble clic (que es para entrar en el modo de edición) y llama a la subrutina "CreateInvoice", que se almacena en el Módulo. También pasa el valor del número de fila a la subrutina. Por ejemplo, si hago doble clic en el nombre del cliente en la tercera fila, pasará 3 como valor a la subrutina CreateInvoice.
- Una vez que se ejecuta la subrutina "CreateInvoice", que crea el PDF de la factura, finaliza.
Haga clic aquí para descargar el archivo de plantilla del generador de facturas.
Guardar la plantilla de factura como Excel (en lugar de PDF)
Si desea guardar las plantillas de factura como archivos de Excel y no como PDF, puede usar el siguiente código en su lugar:
Sub CreateInvoice (RowNum As Integer) Application.ScreenUpdating = False Dim wb As Workbook Dim sh As Worksheet With shInvoiceTemplate .Range ("D10") = shDetails.Range ("A" & RowNum) .Range ("D11") = shDetails. Rango ("B" & RowNum) .Range ("D12") = shDetails.Range ("C" & RowNum) .Range ("B15") = shDetails.Range ("D" & RowNum) .Range ("D15" ) = shDetails.Range ("F" & RowNum) .Range ("D16") = shDetails.Range ("G" & RowNum) .Range ("D18") = shDetails.Range ("E" & RowNum) Terminar con FPath = "C: \ Users \ sumit \ Desktop \ Invoice PDFs" Fname = Format (shInvoiceTemplate.Range ("D10"), "mmmm aaaa") _ & "_" & shInvoiceTemplate.Range ("D12") shInvoiceTemplate.Copy ActiveSheet.Name = "InvTemp" Set wb = ActiveWorkbook Set sh = ActiveSheet sh.Name = Fname wb.SaveAs Filename: = FPath & "\" & Fname wb.Close SaveChanges: = False ThisWorkbook.Activate Application.ScreenUpdating = True End Sub
El código anterior guarda la factura como un libro de Excel con la misma convención de nomenclatura. La hoja de trabajo del libro de trabajo que contiene la factura completa en cada libro de trabajo guardado también tiene el mismo nombre.
También le pueden gustar los siguientes tutoriales de Excel útiles:
- Cómo convertir Excel a PDF usando VBA.
- Incrustar PDF en Excel.
- Extraiga datos de PDF a Excel con este convertidor.
- Plantilla de calculadora de hoja de tiempo de Excel.
- Plantilla Excel Leave Tracker.
- Plantillas de Excel gratuitas.