Další číslo faktury - novinky

Microsoft Excel nabízí mnoho šablon faktur, které si můžete stáhnout. Neexistuje však žádný vestavěný způsob zvýšení na číslo další faktury.

Zaznamenal jsem toto video, které ukazuje, jak do sešitu přidat několik řádků kódu VBA, abyste mohli každou fakturu uložit jako nový soubor. Makro poté vymaže fakturu a přidá 1 k číslu faktury.

S 166 tis. Zhlédnutími a stovkami komentářů zjišťuji, že stále přicházejí stejné otázky. Stávalo se nepraktickým žádat lidi, aby si přečetli 800 komentářů, protože odpověď na jejich otázku byla zveřejněna již šestkrát. Takže - u populárních otázek zveřejňuji kód zde.

FAQ č. 1

Můžete mi zadat kód, protože nemohu psát?

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

Chci uložit fakturu jako PDF na počítači se systémem Windows

Poznámka

Tento kód funguje pouze ve Windows verzích aplikace Excel 2010 nebo novější. Pro Mac existuje jiný kód.

Musíte vybrat rozsah, který obsahuje fakturu, a udělat Rozvržení stránky, Oblast tisku, Nastavit oblast tisku. Pokud tento krok přeskočíte, objeví se ve vaší faktuře tlačítka použitá ke spuštění 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

Chci uložit fakturu jako soubor Excel i PDF do jiné složky

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

Moje číslo faktury má čísla a písmena

Budete muset upravit kód. Zde jsou nějaké příklady. Heidi má číslo faktury jako SS15001. Když se podívám na to číslo faktury, jedná se o dvoupísmennou předponu následovanou 5 číslicemi. Nové číslo faktury musí používat LEFT (, 2) a MID (, 3,5):

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

Zde je složitější příklad. Číslo faktury je IN-1234-HA, kde IN- znamená Faktura. 1234 je pořadové číslo. HA je první z písmen jména zákazníka 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

Výše uvedené čtyři řádky můžete zjednodušit takto:

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

FAQ č. 5

Mám v sešitu další makra (například SpellNumber) a potřebuji také uložit makra.

Aby bylo možné spustit další makra, aby funkce Numbers-to-Words fungovala i nadále, je strategie trochu jiná. Místo kopírování pouze listu faktury do nového sešitu a použití SaveAs si budete (a) pamatovat cestu a název sešitu, (b) SaveAs použijete k uložení celého sešitu s číslem faktury v názvu, (c ) Odstraňte původní sešit. (d) Použijte SaveAs k uložení sešitu s původním názvem.

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

Potřebuji chránit list, aby moji zaměstnanci mohli měnit pouze některé buňky. Když spustím vaše makro, zobrazí se „Buňka, kterou se pokoušíte změnit, je chráněna, a proto je jen pro čtení“

V makru můžete zrušit ochranu listu, napsat nové číslo faktury a poté list chránit. To je třeba provést pouze v makru NextInvoice. Druhé makro neprovádí změny v žádných buňkách. Tady je kód, pokud používáte 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

Nechci mít v uloženém sešitu tlačítko Uložit

To je složité, protože název vašeho tvaru se změní, když se list přesune do nového sešitu. Postupujte velmi pečlivě podle těchto kroků:

  1. Otevřete sešit makra faktury
  2. Klikněte pravým tlačítkem na kartu list, která obsahuje vaši fakturu. Vyberte Přesunout nebo Kopírovat.
  3. V rozevíracím seznamu To Book: zvolte New Book. Zaškrtněte políčko Vytvořit kopii. Klikněte na OK. Tento krok 3 simuluje ActiveSheet.Copy ve VBA.
  4. Nyní, když máte list faktury v novém sešitu, klikněte Ctrl na obrazec, který chcete odstranit. Ctrl + kliknutí vybere tvar bez spuštění makra.
  5. S vybraným tvarem se podívejte nalevo od lišty vzorců. V poli Název se zobrazí název, například „Zaoblený obdélník 1“. Velmi opatrně vytvořte nový řádek kódu, abyste tento tvar odstranili, jak je znázorněno níže, hned po ActiveSheet.Copy:
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

Odstraňování problémů a chybové zprávy

  1. V sešitech bez maker nelze uložit následující funkce: VB Project. Odpověď: Váš soubor je aktuálně uložen jako soubor XLSX. Stejně mě štve, že se Microsoft rozhodl použít jako výchozí typ poškozeného souboru. Použijte File, SaveAs a změňte typ souboru na XLSB nebo 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 běhu 1004. Dokument nebyl uložen. Odpověď: Cesta k souboru musí být přesná. Těsně před uložením souboru přidejte nový řádek pomocí MsgBox NewFN. Spusťte kód. Otevře se okno s cestou a názvem souboru. Ujistěte se, že mezi cestou a názvem souboru je oddělovač cesty.
  6. Chyba běhu '1004'. Metoda 'SaveAs' objektu '_Workbook' se nezdařila. Odpověď: FileFormat musí být FileFormat: = xlOpenXMLWorkbook. Při čtení by to mělo znít jako „Excel Open XML Workbook“. Není to sešit Ex One Open XML. Ano, je matoucí, že číslo 1 a malá písmena L vypadají ve videu stejně. 1l. Změňte svůj X1OPENXMLWORKBOOK na XLOPENXMLWORKBOOK.

Zajímavé články...