Volgend factuurnummer - Nieuws

Microsoft Excel biedt veel factuursjablonen die u kunt downloaden. Maar er is geen ingebouwde manier om naar het volgende factuurnummer te gaan.

Ik heb deze video opgenomen die laat zien hoe u een paar regels VBA-code aan uw werkmap kunt toevoegen, zodat u elke factuur als een nieuw bestand kunt opslaan. De macro wist vervolgens de factuur en voegt 1 toe aan het factuurnummer.

Met 166.000 views en honderden commentaren, merk ik dat dezelfde vragen keer op keer opkomen. Het is onpraktisch geworden om mensen te vragen 800 reacties te lezen, omdat het antwoord op hun vraag al zes keer eerder is gepost. Dus - voor populaire vragen, plaats ik de code hier.

Veelgestelde vragen # 1

Kunt u de code voor mij typen omdat ik niet kan typen?

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

Veelgestelde vragen # 2

Ik wil de factuur opslaan als pdf op een Windows-pc

Opmerking

Deze code werkt alleen in Windows-versies van Excel 2010 of nieuwer. Er is een andere code voor een Mac.

U moet het bereik selecteren dat de factuur bevat en Paginalay-out, Afdrukgebied, Afdrukgebied instellen. Sla je deze stap over, dan verschijnen de knoppen die gebruikt zijn om de macro uit te voeren op je factuur!

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

Veelgestelde vragen # 3

Ik wil de factuur zowel als Excel-bestand als als pdf in een andere map opslaan

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

Veelgestelde vragen # 4

Mijn factuurnummer heeft cijfers en letters

U moet de code aanpassen. Hier zijn enkele voorbeelden. Heidi heeft een factuurnummer zoals SS15001. Als ik naar dat factuurnummer kijk, is het een prefix van twee letters gevolgd door 5 cijfers. Het nieuwe factuurnummer moet de LINKS (, 2) en MID (, 3,5) gebruiken:

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

Hier is een complexer voorbeeld. Het factuurnummer is IN-1234-HA waar de IN- staat voor Invoice. De 1234 is een volgnummer. De HA is de eerste letters van de klantnaam die in B10 wordt gevonden.

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

U kunt de bovenstaande vier regels als volgt vereenvoudigen:

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

Veelgestelde vragen # 5

Ik heb andere macro's in de werkmap (zoals SpellNumber) en moet de macro's ook worden opgeslagen.

Om je andere macro's te laten draaien om de Numbers-to-Words-functie te laten werken, is de strategie een beetje anders. In plaats van alleen het factuurblad naar een nieuwe werkmap te kopiëren en SaveAs te gebruiken, (a) onthoud je het pad en de bestandsnaam van de werkmap, (b) gebruik je SaveAs om de hele werkmap op te slaan met het factuurnummer in de naam, (c ) Verwijder de originele werkmap. (d) Gebruik SaveAs om de werkmap met de oorspronkelijke naam op te slaan.

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

Veelgestelde vragen # 6

Ik moet het werkblad beschermen zodat mijn werknemers slechts enkele cellen kunnen wijzigen. Wanneer ik uw macro start, krijg ik de melding "De cel die u probeert te wijzigen is beveiligd en daarom alleen-lezen"

U kunt de beveiliging van het blad in de macro opheffen, het nieuwe factuurnummer schrijven en vervolgens het blad beveiligen. Dit hoeft alleen te gebeuren in de macro NextInvoice. De andere macro brengt geen wijzigingen aan in cellen. Hier is de code als u bescherming zonder wachtwoord gebruikt:

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

Veelgestelde vragen # 7

Ik wil de knop Opslaan niet in de opgeslagen werkmap hebben

Dit is lastig omdat de naam van uw vorm verandert wanneer het werkblad naar een nieuwe werkmap wordt verplaatst. Volg deze stappen zeer zorgvuldig:

  1. Open de factuurmacrowerkmap
  2. Klik met de rechtermuisknop op het bladtabblad dat uw factuur bevat. Kies Verplaatsen of Kopiëren.
  3. Kies Nieuw boek in de vervolgkeuzelijst Te boeken. Schakel het selectievakje in voor een kopie maken. Klik OK. Deze stap 3 simuleert de ActiveSheet.Copy in de VBA.
  4. Nu u het factuurwerkblad in een nieuwe werkmap heeft, Ctrl-klik op de vorm die u wilt verwijderen. Ctrl + klik selecteert de vorm zonder de macro uit te voeren.
  5. Kijk met de geselecteerde vorm naar de linkerkant van de formulebalk. Het naamvak zal een naam tonen zoals "Afgeronde rechthoek 1". Bouw heel zorgvuldig een nieuwe coderegel om deze vorm te verwijderen, zoals hieronder wordt weergegeven, net na ActiveSheet.
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

Probleemoplossing en foutmeldingen

  1. De volgende functies kunnen niet worden opgeslagen in macrovrije werkmappen: VB Project. Antwoord: Uw bestand wordt momenteel opgeslagen als een XLSX-bestand. Ik ben even geïrriteerd dat Microsoft ervoor koos om standaard een defect bestandstype te gebruiken. Gebruik File, SaveAs en verander het bestandstype in XLSB of 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. Runtime-fout 1004. Document niet opgeslagen. Antwoord: Het bestandspad moet exact zijn. Voeg vlak voordat u het bestand opslaat een nieuwe regel toe met MsgBox NewFN. Voer de code uit. Er verschijnt een venster met het bestandspad en de bestandsnaam. Zorg ervoor dat er een padscheidingsteken staat tussen het pad en de bestandsnaam.
  6. Runtime-fout '1004'. Methode 'SaveAs' van object '_Workbook' is mislukt. Antwoord: Het FileFormat moet FileFormat: = xlOpenXMLWorkbook zijn. Als je het leest, zou het moeten klinken als "Excel Open XML Workbook". Het is niet Ex One Open XML Workbook. Ja, het is verwarrend dat een nummer 1 en een kleine letter L er hetzelfde uitzien in de video. 1l. Verander uw X1OPENXMLWORKBOOK in XLOPENXMLWORKBOOK.

Interessante artikelen...