Ďalšie číslo faktúry - Správy

Microsoft Excel ponúka veľa šablón faktúr, ktoré si môžete stiahnuť. Neexistuje však žiadny zabudovaný spôsob zvýšenia na ďalšie číslo faktúry.

Zaznamenal som toto video, ktoré ukazuje, ako pridať do svojho zošita niekoľko riadkov kódu VBA, aby ste mohli každú faktúru uložiť ako nový súbor. Makro potom vymaže faktúru a k číslu faktúry pridá 1.

Vďaka 166 000 zobrazeniam a stovkám komentárov zisťujem, že sa stále objavujú rovnaké otázky. Požiadať ľudí, aby si prečítali 800 komentárov, sa stalo nepraktickým, pretože odpoveď na ich otázku bola zverejnená už šiestykrát. Takže - pre populárne otázky tu uverejňujem kód.

FAQ # 1

Môžete mi napísať kód, pretože nemôžem zadať?

Sub NextInvoice() Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents End Sub Sub SaveInvoiceWithNewName() Dim NewFN As Variant ' Copy Invoice to a New Workbook ActiveSheet.Copy NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close NextInvoice End Sub

FAQ č. 2

Chcem uložiť faktúru ako PDF na počítači so systémom Windows

Poznámka

Tento kód funguje iba vo Windows verziách programu Excel 2010 alebo novších. Pre Mac existuje iný kód.

Musíte zvoliť rozsah, ktorý obsahuje faktúru, a urobiť Rozloženie stránky, Oblasť tlače, Nastaviť oblasť tlače. Ak tento krok preskočíte, potom sa vo vašej faktúre zobrazia tlačidlá použité na spustenie makra!

Sub SaveInvoiceAsPDFAndClear() Dim NewFN As Variant NewFN = "C:aaaInv" & Range("E5").Value & ".pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NewFN, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents End Sub

FAQ # 3

Chcem uložiť faktúru ako súbor programu Excel aj ako PDF do iného priečinka

Sub SaveInvoiceBothWaysAndClear() Dim NewFN As Variant ' Create the PDF First NewFN = "C:aaaPDFInvoicesInv" & Range("E5").Value & ".pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NewFN, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False ' Next, Save the Excel File ActiveSheet.Copy NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close ' Increment the invoice number Range("E5").Value = Range("E5").Value + 1 ' Clear out the invoice fields Range("A20:E39").ClearContents End Sub

FAQ # 4

Číslo mojej faktúry má čísla a písmená

Budete musieť prispôsobiť kód. Tu je niekoľko príkladov. Heidi má číslo faktúry ako SS15001. Keď sa pozriem na to číslo faktúry, je to dvojpísmenová predpona, za ktorou nasleduje 5 číslic. Nové číslo faktúry musí používať LEFT (, 2) a MID (, 3,5):

Range("E5").Value = Left(Range("E5").Value, 2) & 1 + Mid(Range("E5").Value, 3, 5)

Tu je zložitejší príklad. Číslo faktúry je IN-1234-HA, kde IN- znamená Faktúra. 1234 je poradové číslo. HA je prvé z písmen mena zákazníka, ktoré sa nachádza v B10.

LeftPart = Left(Range("E5").Value, 3) MidPart = Left(Range("E5").Value, 4, 4) + 1 EndPart = Left(Range("A10").Value, 2) Range("E5").Value = LeftPart & MidPart & EndPart

Vyššie uvedené štyri riadky by ste mohli zjednodušiť nasledovne:

Range("E5").Value = Left(Range("E5").Value, 3) & Left(Range("E5").Value, 4, 4) + 1 & Left(Range("A10").Value, 2)

Časté otázky č. 5

V zošite mám ďalšie makrá (napríklad SpellNumber) a potrebujem ich tiež uložiť.

Stratégia je trochu iná, aby ste umožnili spustenie ďalších makier, aby fungovala aj naďalej funkcia Numbers-to-Words. Namiesto toho, aby ste do nového zošita skopírovali iba hárok s faktúrami a použili SaveAs, si (a) zapamätáte cestu a názov súboru zošita, (b) pomocou SaveAs uložte celý zošit s číslom faktúry v názve, (c ) Odstráňte pôvodný zošit. (d) Pomocou SaveAs uložte zošit s pôvodným názvom.

Sub SaveInvoiceWithNewName() Dim OrigFN as Variant Dim NewFN As Variant ' Remember the original path and file name OrigFN = ThisWorkbook.FullName NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ' Save a copy with the new name ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ' Delete the original workbook so you can save without warning On Error Resume Next Kill (OrigFN) On Error Goto 0 ' Save again as the original file name ActiveWorkbook.SaveAs OrigFN, FileFormat:=xlOpenXMLWorkbook NextInvoice End Sub

FAQ # 6

Potrebujem chrániť list, aby moji zamestnanci mohli meniť iba niektoré bunky. Keď spustím vaše makro, zobrazí sa správa „Bunka, ktorú sa pokúšate zmeniť, je chránená, a preto je iba na čítanie.“

Môžete zrušiť ochranu listu v makre, napísať nové číslo faktúry a potom list chrániť. Toto je potrebné vykonať iba v makre NextInvoice. Druhé makro nerobí zmeny v žiadnych bunkách. Toto je kód, ak používate ochranu bez hesla:

Sub NextInvoice() ActiveSheet.Unprotect Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub Here is the code if you have protected the sheet with a password of Tomato. Note that the password appears in this code twice. Change the password to the real password in two places. Sub NextInvoice() ActiveSheet.Unprotect Password:="Tomato" Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents ActiveSheet.Protect Password:="Tomato", DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub

FAQ # 7

Nechcem mať v uloženom zošite tlačidlo Uložiť

Je to zložité, pretože názov vášho tvaru sa zmení, keď sa hárok presunie do nového zošita. Postupujte veľmi opatrne:

  1. Otvorte zošit makra faktúry
  2. Pravým tlačidlom myši kliknite na kartu hárka, ktorá obsahuje vašu faktúru. Vyberte Presunúť alebo Kopírovať.
  3. V rozbaľovacej ponuke To Book: vyberte New Book. Začiarknite políčko Vytvoriť kópiu. Kliknite na tlačidlo OK. Tento krok 3 simuluje ActiveSheet.Copy vo VBA.
  4. Teraz, keď máte pracovný hárok faktúry v novom zošite, kliknite so stlačeným klávesom Ctrl na tvar, ktorý chcete odstrániť. Ctrl + Click vyberie tvar bez spustenia makra.
  5. Po vybratí tvaru sa pozrite doľava od panela vzorcov. V poli Názov sa zobrazí názov, napríklad „Zaoblený obdĺžnik 1“. Veľmi opatrne zostavte nový riadok kódu, aby ste tento tvar odstránili, ako je uvedené nižšie, hneď po ActiveSheet. Kópia:
Sub SaveInvoiceWithNewName() Dim NewFN As Variant ' Copy Invoice to a New Workbook ActiveSheet.Copy ActiveSheet.Shapes("Rounded Rectangle 1").Delete NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close NextInvoice End Sub

Riešenie problémov a chybové správy

  1. Nasledujúce funkcie nemožno uložiť v zošitoch bez makier: VB Project. Odpoveď: Váš súbor je momentálne uložený ako súbor XLSX. Rovnako ma štve, že sa Microsoft rozhodol ako predvolený použiť nefunkčný typ súboru. Použite File, SaveAs a zmeňte typ súboru na XLSB alebo XLSM.
  2. Type Mismatch. Answer: The code expects your invoice number to be a number. If you have SS15001 as an invoice number, you will have to figure out how to adapt your code. See FAQ #4 above.
  3. Compile error Expected line number or label or statement or end of statement on NewFN = “F:RobinusinessPCreceiptsInv” & Range(“H10”).Value & “.xlsx”. Answer: VBA does not like slanted quotation marks (also called Typographers quotes). Type the quotation mark in VBA and you will get "F:RobinusinessPCreceiptsInv" & Range("H10").Value & ".xlsx"
  4. We couldn't find C:UserJelenDocuments" Answer: The file path has to be exact. Are you sure you didn't mean C:UsersJelenDocuments? (Note the "s" at the end of users)
  5. Chyba doby chodu 1004. Dokument nebol uložený. Odpoveď: Cesta k súboru musí byť presná. Tesne pred uložením súboru pridajte nový riadok s MsgBox NewFN. Spustite kód. Zobrazí sa okno, ktoré zobrazuje cestu k súboru a názov súboru. Uistite sa, že medzi cestou a názvom súboru je oddeľovač cesty.
  6. Chyba doby chodu „1004“. Metóda „SaveAs“ objektu „_Workbook“ zlyhala. Odpoveď: FileFormat musí byť FileFormat: = xlOpenXMLWorkbook. Po prečítaní by to malo znieť ako „Zošit programu Excel Open XML“. Nie je to Ex One Open XML Workbook. Áno, je mätúce, že číslo 1 a malé písmeno L vo videu vyzerajú rovnako. 1l. Zmeňte svoju X1OPENXMLWORKBOOK na XLOPENXMLWORKBOOK.

Zaujímavé články...