Jag var nyligen tvungen att registrera mig under varor och tjänster skatt (GST) så att jag kan ansöka om GST på mina intäkter.
När du har ett GST -nummer måste du lämna in din deklaration varje månad (i Indien).
Så varje månad kontaktade min bokföringsbokförare mig för att be om försäljningsfakturor så att han kan ansöka om GST.
I mitt fall är det bara en handfull fakturor som ska skapas, eftersom jag bara har några få inkomstkällor.
Men eftersom detta är ytterligare arbete, ville jag få det gjort så snabbt som möjligt.
Så för att minimera min ansträngning skapade jag en fakturagenerator -mall i Excel som gör att jag kan ha all data på ett ställe och sedan skapar den automatiskt PDF -fakturor för alla datapunkter.
Som du kan se nedan, allt jag behöver göra är att dubbelklicka på klientens namn (i kolumn B), och det skulle omedelbart skapa och spara fakturan i PDF -format i den angivna mappen.
Du kan också ändra fakturamallen för att passa ditt företags format (vilket skulle kräva att du ändrar VBA -koden lite - förklaras nedan).
Det skapar en faktura enligt nedan:
Hur fungerar den här fakturagenereringsmallen?
I denna fakturamall finns det två kalkylblad:
- Detaljer - Det är här du behöver ange detaljer om försäljningen/transaktionen. För att hålla ihop allt har jag skapat en rad för varje post. Alla detaljer om en transaktion registreras i raden.
- Fakturamall - Detta är en platshållarmall för fakturan där vissa fält lämnas tomma. Jag måste generera en separat faktura för alla försäljningsposter och detaljerna för varje faktura hämtas från arbetsbladet Detaljer.
Jag har också en mapp på skrivbordet med namnet "Faktura PDF -filer". Detta är mappen där de nyskapade PDF -fakturorna sparas.
Låt oss nu se hur detta fungerar:
Du måste dubbelklicka på klientens namn (markerat med orange i detaljbladet).
Det är allt!
När du dubbelklickar på klientnamnet startar det VBA-magin i bakänden och följande saker händer:
- Detaljer för kunden och försäljningstransaktionen hämtas och fakturamallbladet fylls med dessa detaljer.
- En ny arbetsbok skapas som innehåller detaljerna för den valda klienten (på vilken du dubbelklickade).
- Denna arbetsbok sparas som en PDF -fil i mappen Faktura PDF.
- Den nya arbetsboken stängs utan att spara.
Om det blir några ändringar i fakturauppgifterna kan du dubbelklicka på klientnamnet igen och en ny faktura skapas (och den gamla kommer att skrivas över).
Observera att namnen på fakturorna baseras på månaden och fakturanummer.
Till exempel en faktura med datum 15-04-2019 och fakturanummer som 1 skulle sparas med namnet April2021-2022_1.pdf. Detta hjälper till att hålla reda på fakturorna om du har för många.
Du kan ladda ner fakturagenereringsmallen genom att klicka på knappen nedan:
Ändra fakturageneratormallen
Jag skapade den här fakturamallen med ett format som jag behövde för mina GST -anmälningar.
Om du behöver ett annat format måste du redigera mallen och sedan justera backend -VBA -koden.
Låt mig först visa dig koden och förklara hur den fungerar:
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) Avsluta med FPath = "C: \ Users \ sumit \ Desktop \ Invoice PDFs" Fname = Format (shInvoiceTemplate.Range ("D10"), "mmmm åååå") _ & "_" & shInvoiceTemplate.Range ("D12") shInvoiceTemplate.Copy ActiveSheet.Name = "InvTemp" Set wb = ActiveWorkbook Set sh = ActiveSheet sh.ExportAsFixedFormat Type: = xlTypePDF, Filnamn: = _ FPath & "\" & Fname, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintA: , OpenAfterPublish: = False wb.Close SaveChanges: = False ThisWorkbook.Activate Application.ScreenUpdating = True End Sub
Ovanstående kod är det som kopierar detaljerna för en transaktion, fyller fakturans platshållarmall med dessa detaljer, skapar en ny arbetsbok och sparar den nya arbetsboken som en PDF -fil i den angivna mappen.
Om du har en annan mall eller en annan mappplats måste du ändra de nedan markerade delarna av koden:
- Det första markerade avsnittet är det som tar detaljerna från informationsbladet och fyller i fakturamallen. Om du bestämmer dig för att ändra fakturamallen måste du se till att du väljer rätt information genom att ändra den här delen av koden.
- Den här raden anger mappplatsen. I mitt fall var det en mapp på mitt skrivbord. Du kan ange adressen till mappen där du vill att fakturorna ska sparas.
Observera att jag har bytt namn på kalkylbladets kod till 'shDetails'. Jag har gjort detta så att jag kan använda namnet - shDetails - i min kod och det skulle fortsätta att fungera även om du ändrar namnet på arken i kalkylbladet.
Om du vill lära dig mer om bladnamnet och kodnamnet, ta en titt på detta (kolla avsnittet om hur du använder kalkylbladets kodnamn).
Var finns koden i arbetsboken?
Koden placeras i baksidan av Excel-arbetsboken i en modul.
Följ stegen nedan för att komma åt koden:
- Klicka på fliken Utvecklare.
- Klicka på Visual Basic -alternativet. Detta öppnar fönstret VB Editor.
- I Visual Basic-redigeraren dubbelklickar du på modulen för att öppna dess kodfönster. Du hittar koden som nämns ovan.
Om du skapar en mall själv kanske du inte hittar modulen i en ny arbetsbok. Du måste högerklicka på något av arbetsbokobjekten, gå till Infoga och klicka sedan på Modul. Detta kommer att infoga en ny modul.
Få dubbelklickfunktionen att fungera
Ovanstående kod gör alla tunga lyft, men du måste ansluta den till dubbelklickhändelsen.
Det betyder att ovannämnda VBA-makrokod måste köras när någon dubbelklickar på de fyllda cellerna i klientnamnkolumnen.
Detta kan göras genom att infoga följande kod i kalkylbladets kodfönster:
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
Här är stegen för att infoga denna kod i kalkylbladets backend:
- Högerklicka på fliken "Detaljer" i kalkylbladet
- Klicka på alternativet "Visa kod".
- Kopiera och klistra in ovanstående kod i kodfönstret som visas.
Ovanstående kod gör följande:
- Kontrollerar om cellen som har dubbelklickats har klientinformation eller inte. Den använder IF -satsen för att kontrollera och köra koden endast om cellen inte är tom och i kolumn B.
- Om båda de angivna kriterierna är uppfyllda inaktiverar det dubbelklickfunktionen (som ska komma in i redigeringsläget) och anropar ”CreateInvoice” -underutinen, som lagras i modulen. Det överför också radnumervärdet till delrutan. Till exempel, om jag dubbelklickar på klientnamnet i den tredje raden, kommer det att passera 3 som värdet till underrutinen CreateInvoice.
- När underrutan "CreateInvoice" har körts - vilket skapar fakturans PDF - slutar den.
Klicka här för att ladda ner fakturagenerator -mallfilen.
Spara fakturamallen som Excel (i stället för PDF)
Om du vill spara fakturamallarna som Excel -filer och inte som PDF -filer kan du istället använda koden nedan:
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) Avsluta med FPath = "C: \ Users \ sumit \ Desktop \ Invoice PDFs" Fname = Format (shInvoiceTemplate.Range ("D10"), "mmmm åååå") _ & "_" & shInvoiceTemplate.Range ("D12") shInvoiceTemplate.Copy ActiveSheet.Name = "InvTemp" Set wb = ActiveWorkbook Set sh = ActiveSheet sh.Name = Fname wb.SaveAs Filnamn: = FPath & "\" & Fname wb.Close SaveChanges: = False ThisWorkbook.Activate Application.ScreenUpdating = True End Sub
Ovanstående kod sparar fakturan som en Excel -arbetsbok med samma namnkonvention. Arbetsbladet i arbetsboken som innehåller den ifyllda fakturan i varje sparad arbetsbok heter också densamma.
Du kanske också gillar följande Excel -handledning:
- Hur man konverterar Excel till PDF med VBA.
- Bädda in PDF i Excel.
- Extrahera data från PDF till Excel med denna omvandlare.
- Excel kalkylmall för kalkylblad.
- Excel lämna spårningsmall.
- Gratis Excel -mallar.