Neste fakturanummer - Nyheter

Microsoft Excel tilbyr mange fakturamaler som du kan laste ned. Men det er ingen innebygd måte å øke til neste fakturanummer.

Jeg spilte inn denne videoen som viser hvordan du legger til noen linjer med VBA-kode i arbeidsboken din, slik at du kan lagre hver faktura som en ny fil. Makroen tømmer deretter fakturaen og legger 1 til fakturanummeret.

Med 166 000 visninger og hundrevis av kommentarer, finner jeg de samme spørsmålene kommer opp igjen og igjen. Det har blitt upraktisk å be folk lese 800 kommentarer fordi svaret på spørsmålet deres har blitt lagt ut seks ganger før. Så - for populære spørsmål legger jeg ut koden her.

FAQ # 1

Kan du skrive koden for meg fordi jeg ikke kan skrive?

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

Jeg vil lagre fakturaen som en PDF på en Windows-PC

Merk

Denne koden fungerer bare i Windows-versjoner av Excel 2010 eller nyere. Det er annen kode for en Mac.

Du må velge området som inneholder fakturaen og gjøre sidelayout, utskriftsområde, angi utskriftsområde. Hvis du hopper over dette trinnet, vises knappene som brukes til å kjøre makroen i fakturaen din!

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

Jeg vil lagre fakturaen som både en Excel-fil og en PDF i en annen mappe

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

Fakturanummeret mitt har tall og bokstaver

Du må tilpasse koden. Her er noen eksempler. Heidi har et fakturanummer som SS15001. Når jeg ser på fakturanummeret, er det et prefiks på to bokstaver etterfulgt av 5 sifre. Det nye fakturanummeret må bruke VENSTRE (, 2) og MID (, 3,5):

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

Her er et mer komplekst eksempel. Fakturanummeret er IN-1234-HA der IN- står for faktura. 1234 er et løpenummer. HA er den første bokstaven i kundenavnet som finnes i 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

Du kan forenkle de ovennevnte fire linjene som følger:

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

FAQ # 5

Jeg har andre makroer i arbeidsboken (for eksempel SpellNumber) og trenger at makroene også skal lagres.

For å la andre makroer kjøre for å ha funksjonen Tall-til-ord for å fortsette å jobbe, er strategien litt annerledes. I stedet for å kopiere bare fakturaarket til en ny arbeidsbok og bruke SaveAs, vil du (a) Huske banen og filnavnet til arbeidsboken, (b) Bruk SaveAs til å lagre hele arbeidsboken med fakturanummeret i navnet, (c ) Slett den opprinnelige arbeidsboken. (d) Bruk SaveAs til å lagre arbeidsboken med det opprinnelige navnet.

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

Jeg må beskytte regnearket slik at de ansatte bare kan endre noen celler. Når jeg kjører makroen din, får jeg "Cellen du prøver å endre er beskyttet og derfor skrivebeskyttet"

Du kan fjerne beskyttelsen av arket i makroen, skrive det nye fakturanummeret og deretter beskytte arket. Dette må bare gjøres i NextInvoice-makroen. Den andre makroen gjør ikke endringer i noen celler. Her er koden hvis du bruker beskyttelse uten passord:

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

Jeg vil ikke ha Lagre-knappen i den lagrede arbeidsboken

Dette er vanskelig fordi navnet på formen din vil endres når regnearket flytter til en ny arbeidsbok. Følg disse trinnene veldig nøye:

  1. Åpne faktura makro arbeidsbok
  2. Høyreklikk på arkfanen som inneholder fakturaen. Velg Flytt eller Kopier.
  3. Velg Ny bok i rullegardinmenyen Til bok: Merk av for Opprett en kopi. Klikk OK. Dette trinn 3 simulerer ActiveSheet.Copy i VBA.
  4. Nå som du har fakturaarket i en ny arbeidsbok, Ctrl-klikk på formen du vil slette. Ctrl + Click vil velge formen uten å kjøre makroen.
  5. Når formen er valgt, ser du til venstre for formellinjen. Navnefeltet vil vise et navn som "Avrundet rektangel 1". Bygg veldig nøye en ny kodelinje for å slette denne formen som vist nedenfor like etter 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

Feilsøking og feilmeldinger

  1. Følgende funksjoner kan ikke lagres i makrofrie arbeidsbøker: VB Project. Svar: Filen din er for øyeblikket lagret som en XLSX-fil. Jeg er like irritert over at Microsoft valgte å bruke en ødelagt filtype som standard. Bruk File, SaveAs og endre filtypen til enten XLSB eller 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. Kjøretidsfeil 1004. Dokument ikke lagret. Svar: Filbanen må være nøyaktig. Rett før du lagrer filen, legg til en ny linje med MsgBox NewFN. Kjør koden. Det vises en rute som viser filbanen og filnavnet. Forsikre deg om at det er en stiseparator mellom banen og filnavnet.
  6. Kjøretidsfeil '1004'. Metoden 'SaveAs' for objektet '_Workbook' mislyktes. Svar: FileFormat må være FileFormat: = xlOpenXMLWorkbook. Når du leser den, skal den høres ut som "Excel Open XML Workbook". Det er ikke Ex One Open XML Workbook. Ja, det er forvirrende at nummer 1 og små bokstaver L ser like ut i videoen. 1l. Endre X1OPENXMLWORKBOOK til XLOPENXMLWORKBOOK.

Interessante artikler...