(GRATIS factuurgeneratorsjabloon) Excel-factuur opslaan als PDF

Ik moest me onlangs laten registreren onder Goods and Services Tax (GST), zodat ik GST op mijn inkomsten kan indienen.

Zodra u een GST-nummer heeft, moet u elke maand uw belastingaangifte indienen (in India).

Dus elke maand nam mijn geregistreerde accountant contact met me op om verkoopfacturen te vragen, zodat hij de GST kan indienen.

In mijn geval hoeven er maar een handvol facturen te worden aangemaakt, aangezien ik maar weinig inkomstenbronnen heb.

Aangezien dit echter extra werk is, wilde ik dit zo snel mogelijk gedaan hebben.

Dus om mijn inspanning te minimaliseren, heb ik een Invoice Generator-sjabloon in Excel gemaakt waarmee ik alle gegevens op één plek kan hebben, en vervolgens maakt het automatisch PDF-facturen voor alle gegevenspunten.

Zoals je hieronder kunt zien, het enige wat ik hoef te doen is dubbelklikken op de naam van de klant (in kolom B), en het zou onmiddellijk de factuur maken en opslaan in het PDF-formaat in de opgegeven map.

U kunt ook de factuursjabloon aanpassen aan het formaat van uw bedrijf (waarvoor u de VBA-code een beetje moet wijzigen - hieronder uitgelegd).

Het maakt een factuur aan zoals hieronder weergegeven:

Hoe werkt deze factuurgeneratorsjabloon?

In dit factuursjabloon zijn er twee werkbladen:

  1. Details - Hier moet u de details van de verkoop/transactie specificeren. Om alles bij elkaar te houden, heb ik voor elk record een rij gemaakt. Alle details van een transactie worden in de rij vastgelegd.
  2. Factuursjabloon - Dit is een tijdelijke aanduiding-sjabloon van de factuur waarbij sommige velden leeg zijn gelaten. Ik moet een afzonderlijke factuur genereren voor alle verkooprecords en de details voor elke factuur worden opgehaald uit het werkblad Details.

Ik heb ook een map op mijn bureaublad met de naam 'Factuur PDF's'. Dit is de map waarin de nieuw aangemaakte pdf-facturen worden opgeslagen.

Laten we nu eens kijken hoe dit werkt:

U moet dubbelklikken op de naam van de klant (gemarkeerd in oranje in het detailblad).

Dat is het!

Wanneer u dubbelklikt op de naam van de klant, wordt de VBA-magie in de back-end gestart en gebeuren de volgende dingen:

  1. Details voor de klant en de verkooptransactie worden opgehaald en het factuursjabloonblad wordt gevuld met deze details.
  2. Er wordt een nieuwe werkmap gemaakt met de details van de geselecteerde klant (waarop u dubbelklikt).
  3. Deze werkmap wordt als PDF opgeslagen in de map Factuur PDF.
  4. De nieuwe werkmap wordt gesloten zonder op te slaan.

Als er wijzigingen zijn in de factuurgegevens, kunt u opnieuw dubbelklikken op de naam van de klant en wordt er een nieuwe factuur gemaakt (en deze zal de oude overschrijven).

Let op: de namen van de facturen zijn gebaseerd op de maand en het factuurnummer.

Bijvoorbeeld een factuur met de datum 15-04-2019 en het factuurnummer als 1 zou worden opgeslagen met de naam april2021-2022_1.pdf. Dit helpt bij het bijhouden van de facturen voor het geval u er te veel heeft.

U kunt de Invoice Generator Template downloaden door op de onderstaande knop te klikken:

Het factuurgeneratorsjabloon wijzigen

Ik heb deze factuursjabloon gemaakt met een indeling die ik nodig had voor mijn GST-aangiften.

Als je een ander formaat nodig hebt, moet je de sjabloon bewerken en vervolgens de backend VBA-code aanpassen.

Laat me je eerst de code laten zien en uitleggen hoe het werkt:

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. Range("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) eindigen met FPath = "C:\Users\sumit\Desktop\Invoice PDFs" Fname = Format(shInvoiceTemplate.Range("D10"), "mmmm jjjj") _ & "_" & 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

De bovenstaande code kopieert de details van een transactie, vult de sjabloon voor de plaatsaanduiding voor facturen met die details, maakt een nieuwe werkmap en slaat de nieuwe werkmap op als een PDF in de opgegeven map.

Als je een ander sjabloon of een andere maplocatie hebt, moet je de hieronder gemarkeerde delen van de code aanpassen:

  1. De eerste gemarkeerde sectie is wat de details uit het detailblad haalt en de factuursjabloon vult. Als u besluit het factuursjabloon te wijzigen, moet u ervoor zorgen dat u de juiste details kiest door dit deel van de code aan te passen.
  2. Deze regel specificeert de maplocatie. In mijn geval was het een map op mijn bureaublad. U kunt het adres opgeven van de map waarin u de facturen wilt opslaan.

Merk op dat ik de naam van de werkbladcode heb hernoemd naar 'shDetails'. Ik heb dit gedaan zodat ik de naam - shDetails - in mijn code kan gebruiken en het zou blijven werken, zelfs als je de naam van de bladen in het werkblad wijzigt.

Als je meer wilt weten over de bladnaam en de codenaam, kijk hier dan eens naar (bekijk het gedeelte over het gebruik van de werkbladcodenaam).

Waar staat de code in de werkmap?

De code wordt in een module in de back-end van de Excel-werkmap geplaatst.

Volg de onderstaande stappen om toegang te krijgen tot de code:

  1. Klik op het tabblad Ontwikkelaars.
  2. Klik op de Visual Basic-optie. Dit opent het VB Editor-venster.
  3. Dubbelklik in de Visual Basic-editor op de module om het codevenster te openen. U vindt de hierboven genoemde code.

Als u zelf een sjabloon maakt, vindt u de module mogelijk niet in een nieuwe werkmap. U moet met de rechtermuisknop op een van de werkmapobjecten klikken, naar Invoegen gaan en vervolgens op Module klikken. Hiermee wordt een nieuwe module ingevoegd.

De dubbelklikfunctie laten werken

De bovenstaande code doet al het zware werk, maar u moet deze verbinden met de dubbelklikgebeurtenis.

Dit betekent dat de bovenstaande VBA-macrocode moet worden uitgevoerd wanneer iemand dubbelklikt op de gevulde cellen in de kolom met de klantnaam.

Dit kan door de volgende code in het werkbladcodevenster in te voeren:

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

Dit zijn de stappen om deze code in de backend van het werkblad in te voegen:

  • Klik met de rechtermuisknop op het werkbladtabblad 'Details'
  • Klik op de optie ‘Code bekijken’.
  • Kopieer en plak de bovenstaande code in het codevenster dat verschijnt.

De bovenstaande code doet de volgende dingen:

  1. Controleert of de cel waarop is gedubbelklikt de klantgegevens heeft of niet. Het gebruikt de IF-instructie om de code alleen te controleren en uit te voeren als de cel niet leeg is en zich in kolom B bevindt.
  2. Als aan beide gespecificeerde criteria wordt voldaan, schakelt het de dubbelklikfunctie uit (om in de bewerkingsmodus te komen) en roept het de subroutine 'CreateInvoice' op, die is opgeslagen in de module. Het geeft ook de waarde van het rijnummer door aan de subroutine. Als ik bijvoorbeeld dubbelklik op de naam van de klant in de derde rij, wordt 3 als waarde doorgegeven aan de subroutine CreateInvoice.
  3. Zodra de subroutine ‘CreateInvoice’ is uitgevoerd - waarmee de PDF van de factuur wordt gemaakt - eindigt deze.

Klik hier om het Invoice Generator Template-bestand te downloaden.

Het factuursjabloon opslaan als Excel (in plaats van PDF)

Als u de factuursjablonen wilt opslaan als Excel-bestanden en niet als PDF's, kunt u in plaats daarvan de onderstaande code gebruiken:

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. Range("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) eindigen met FPath = "C:\Users\sumit\Desktop\Invoice PDFs" Fname = Format(shInvoiceTemplate.Range("D10"), "mmmm jjjj") _ & "_" & 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

De bovenstaande code slaat de factuur op als een Excel-werkmap met dezelfde naamgevingsconventie. Het werkblad in de werkmap met de ingevulde factuur in elke opgeslagen werkmap heeft ook dezelfde naam.

Misschien vind je de volgende Excel-tutorials ook leuk:

  • Hoe Excel naar PDF te converteren met VBA.
  • PDF insluiten in Excel.
  • Extraheer gegevens van PDF naar Excel met deze converter.
  • Excel Timesheet Calculator-sjabloon.
  • Excel Verlaat Tracker-sjabloon.
  • Gratis Excel-sjablonen.
wave wave wave wave wave