Nemrég regisztráltatnom kellett magam az Áruk és Szolgáltatások adója alatt (GST), hogy bevallást tehessek a GST -ről a bevételeimről.
Ha rendelkezik GST -számmal, minden hónapban be kell nyújtania az adóbevallását (Indiában).
Így minden hónapban az okleveles könyvelőm felkeresett, hogy eladási számlákat kérjen, hogy be tudja nyújtani a GST -t.
Esetemben csak maroknyi számlát kell létrehozni, mivel csak néhány bevételi forrásom van.
Mivel azonban ez többletmunka, szerettem volna ezt a lehető leggyorsabban elvégezni.
Így az erőfeszítéseim minimalizálása érdekében létrehoztam egy számlagenerátor sablont az Excelben, amely lehetővé teszi, hogy minden adat egy helyen legyen, majd automatikusan létrehozza az összes adatpont PDF -számláit.
Mint alább látható, csak annyit kell tennem, hogy duplán kattintok az ügyfél nevére (a B oszlopban), és azonnal létrehozza és elmenti a számlát PDF formátumban a megadott mappában.
A számla sablont a vállalat formátumának megfelelően is módosíthatja (ami megköveteli a VBA -kód egy kis módosítását - az alábbiakban ismertetjük).
Számlát készít az alábbiak szerint:
Hogyan működik ez a számlagenerátor sablon?
Ebben a számlasablonban két munkalap található:
- Részletek - Itt kell megadni az eladás/tranzakció részleteit. Annak érdekében, hogy minden együtt maradjon, minden rekordhoz létrehoztam egy sort. A tranzakció minden részlete rögzítésre kerül a sorban.
- Számla sablon - Ez a számla helyőrző sablonja, ahol egyes mezők üresen maradnak. Külön számlát kell generálnom az összes eladási rekordhoz, és az egyes számlák részleteit a Részletek munkalapról veszem fel.
Van egy mappám is az asztalon „Számla PDF -ek” néven. Ez az a mappa, ahová az újonnan létrehozott PDF -számlákat menti.
Most nézzük meg, hogyan működik ez:
Kattintson duplán az ügyfél nevére (narancssárga színnel kiemelve a Részletek lapon).
Ez az!
Amikor duplán kattint az ügyfél nevére, elindítja a VBA mágiát a háttérben, és a következő dolgok történnek:
- A rendszer felveszi az ügyfélre és az eladási tranzakcióra vonatkozó adatokat, és kitölti a számla sablonlapját.
- Létrejön egy új munkafüzet, amely tartalmazza a kiválasztott ügyfél adatait (amelyre duplán kattintott).
- Ez a munkafüzet PDF -ként kerül mentésre a Számla PDF mappába.
- Az új munkafüzet mentés nélkül bezárul.
Abban az esetben, ha bármilyen változás történik a számla részleteiben, kattintson duplán az ügyfél nevére, és új számla jön létre (és ez felülírja a régit).
Vegye figyelembe, hogy a számlák neve a hónapon és a számlaszámon alapul.
Például egy számla dátummal 15-04-2019 és a számla számát mint 1 névvel kerülne mentésre Április2021-2022_1.pdf. Ez segít nyomon követni a számlákat, ha túl sok van.
A számlagenerátor sablonját az alábbi gombra kattintva töltheti le:
A számlagenerátor sablonjának módosítása
Ezt a számla sablont olyan formátumban hoztam létre, amelyre szükségem volt a GST -i iktatáshoz.
Ha más formátumra van szüksége, akkor szerkesztenie kell a sablont, majd módosítania kell a háttér VBA -kódot.
Először hadd mutassam meg a kódot és magyarázzam el, hogyan működik:
Sub CreateInvoice (RowNum as Integer) Application.ScreenUpdating = False Dim wb Mint munkafüzet Dim sh mint Munkalap 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) Vége FPath = "C: \ Users \ sumit \ Desktop \ Invoice PDFs" Fname = Format (shInvoiceTemplate.Range ("D10"), "mmmm yyyy") _ & "_" & 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, _ IgnorePrintA , OpenAfterPublish: = False wb. Close SaveChanges: = False ThisWorkbook.Activate Application.ScreenUpdating = True End Sub
A fenti kód az, amely lemásolja a tranzakció részleteit, kitölti a számla helyőrző sablonját ezekkel az adatokkal, létrehoz egy új munkafüzetet, és elmenti az új munkafüzetet PDF -ként a megadott mappába.
Ha más sablon vagy más mappa található, módosítania kell a kód alább kiemelt részeit:
- Az első kiemelt rész az, amely a részleteket a Részletek lapról veszi, és kitölti a számlasablont. Ha úgy dönt, hogy módosítja a számlasablont, akkor a kód ezen részének módosításával meg kell győződnie arról, hogy a megfelelő adatokat választja -e ki.
- Ez a sor határozza meg a mappa helyét. Esetemben ez egy mappa volt az asztalon. Megadhatja annak a mappának a címét, ahová a számlákat menteni kívánja.
Ne feledje, hogy a munkalap kódnevét átneveztem „shDetails” -ra. Ezt azért tettem, hogy a kódomban használhassam az elnevezést - shDetails -, és akkor is működjön, ha megváltoztatja a munkalapok lapjait.
Ha többet szeretne megtudni a munkalap nevéről és a kódnévről, tekintse meg ezt (nézze meg a Munkalap kódnevének használatáról szóló részt).
Hol található a kód a munkafüzetben?
A kód az Excel munkafüzet hátsó részébe kerül egy modulban.
A kód eléréséhez kövesse az alábbi lépéseket:
- Kattintson a Fejlesztő fülre.
- Kattintson a Visual Basic lehetőségre. Ezzel megnyílik a VB Editor ablak.
- A Visual Basic szerkesztőben kattintson duplán a modulra a kódablak megnyitásához. Megtalálja a fent említett kódot.
Ha saját maga hoz létre sablont, előfordulhat, hogy nem találja a modult egy új munkafüzetben. Jobb egérgombbal kell kattintania a munkafüzet bármelyik objektumára, menjen a Beszúrás menübe, majd kattintson a Modul elemre. Ezzel új modult helyez be.
A dupla kattintás funkció működőképessé tétele
A fenti kód minden nehéz feladatot elvégez, de össze kell kapcsolnia a dupla kattintással.
Ez azt jelenti, hogy a fenti VBA makrókódnak futnia kell, amikor valaki kétszer rákattint a kitöltött cellákra az ügyfélnév oszlopban.
Ezt úgy teheti meg, hogy beszúrja a következő kódot a munkalap kódablakába:
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
Az alábbi lépésekkel illessze be ezt a kódot a munkalap háttérrendszerébe:
- Kattintson a jobb gombbal a „Részletek” munkalap fülre
- Kattintson a „Kód megtekintése” lehetőségre.
- Másolja és illessze be a fenti kódot a megjelenő kódablakba.
A fenti kód a következőket teszi:
- Ellenőrzi, hogy a duplán kattintott cella tartalmazza-e az ügyfél adatait. Csak akkor használja az IF utasítást a kód ellenőrzésére és futtatására, ha a cella nem üres, és a B oszlopban található.
- Ha mindkét megadott feltétel teljesül, letiltja a dupla kattintás funkciót (amely a szerkesztési módba való belépéshez), és meghívja a „CreateInvoice” alprogramot, amelyet a modul tárol. Továbbá továbbítja a sorszám értékét az alprogramnak. Például, ha duplán kattintok az ügyfél nevére a harmadik sorban, akkor a 3 értéket adja át a CreateInvoice alprogramnak.
- A „CreateInvoice” alprogram végrehajtása után - amely létrehozza a számla PDF -jét - befejeződik.
Kattintson ide a Számlagenerátor sablonfájl letöltéséhez.
A számlasablon mentése Excel -ként (PDF helyett)
Ha a számla sablonokat Excel fájlként és nem PDF fájlként szeretné menteni, akkor az alábbi kódot használhatja:
Sub CreateInvoice (RowNum As Integer) Application.ScreenUpdating = False Dim wb Mint munkafüzet Dim sh Munkalapként 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) Vége FPath = "C: \ Users \ sumit \ Desktop \ Invoice PDFs" Fname = Format (shInvoiceTemplate.Range ("D10"), "mmmm yyyy") _ & "_" & shInvoiceTemplate.Range ("D12") shInvoiceTemplate.Copy ActiveSheet.Name = "InvTemp" Set wb = ActiveWorkbook Set sh = ActiveSheet sh.Name = Fname wb.SaveAs Fájlnév: = FPath & "\" & Fname wb.Close SaveChanges: = Hamis ThisWorkbook.Activate Application.ScreenUpdating = Igaz vég al
A fenti kód a számlát Excel -munkafüzetként menti, azonos elnevezési konvencióval. A munkafüzet munkalapja, amely minden egyes mentett munkafüzetben a kitöltött számlát tartalmazza, szintén ugyanaz.
Az alábbi Excel oktatóanyagok is hasznosak lehetnek:
- Hogyan lehet Excel -t PDF -re konvertálni a VBA segítségével.
- PDF beágyazása Excelbe.
- Az adatok konvertálása PDF -ből Excelbe ezzel az átalakítóval.
- Excel munkalap számológép sablon.
- Excel Kilépés nyomkövető sablon.
- Ingyenes Excel sablonok.