Következő számla száma - Hírek

A Microsoft Excel számos letölthető számlasablont kínál. De nincs beépített módszer a következő számlaszám növelésére.

Ezt a videót rögzítettem, amely bemutatja, hogyan lehet néhány sort VBA-kódot hozzáadni a munkafüzetéhez, hogy minden számlát új fájlként menthessen. Ezután a makró törli a számlát, és 1-et hozzáad a számlaszámhoz.

166 ezer megtekintéssel és több száz hozzászólással azt tapasztalom, hogy ugyanazok a kérdések merülnek fel újra és újra. Nem lett praktikus arra kérni az embereket, hogy olvassák el 800 megjegyzését, mert a kérdésükre korábban már hatszor tették fel a választ. Tehát - népszerű kérdésekhez ide teszem fel a kódot.

1. GYIK

Gépelheti nekem a kódot, mert nem tudom beírni?

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

2. GYIK

Szeretném PDF-formátumban menteni a számlát egy Windows PC-re

jegyzet

Ez a kód csak az Excel 2010 vagy újabb verzióiban működik. Különböző kódok vannak a Mac-hez.

Ki kell választania a számlát tartalmazó tartományt, és meg kell adnia az Oldal elrendezése, a Nyomtatási terület, a Nyomtatási terület beállítása beállítást. Ha kihagyja ezt a lépést, akkor a makró futtatásához használt gombok megjelennek a számlájában!

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

GYIK # 3

El akarom menteni a számlát Excel-fájlként és PDF-fájlként is egy másik mappába

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

GYIK # 4

Számlám számai és betűi vannak

Be kell igazítania a kódot. Íme néhány példa. Heidinek van olyan számlaszáma, mint az SS15001. Ha megnézem azt a számlaszámot, ez egy kétbetűs előtag, amelyet 5 számjegy követ. Az új számlaszámnak a LEFT (, 2) és a MID (, 3,5) karaktereket kell használnia:

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

Itt egy összetettebb példa. A számla száma IN-1234-HA, ahol az IN számlát jelent. Az 1234 sorozatszám. A HA a B10-ben található ügyfélnév első betűje.

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

A fenti négy sort az alábbiak szerint egyszerűsítheti:

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

5. GYIK

Más makrók vannak a munkafüzetben (például SpellNumber), és szükség van a makrók mentésére is.

Annak érdekében, hogy lehetővé tegye a többi makró futtatását annak érdekében, hogy a Számok-szavak funkció tovább működjön, a stratégia kissé más. Ahelyett, hogy csak a számlanyomtatványt másolná egy új munkafüzetbe, és a SaveAs alkalmazást használná, (a) megjegyzi a munkafüzet elérési útját és fájlnevét; ) Törölje az eredeti munkafüzetet. (d) A SaveAs használatával mentse el a munkafüzetet az eredeti névvel.

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

GYIK # 6

Védenem kell a munkalapot, hogy az alkalmazottaim csak néhány cellát tudjanak megváltoztatni. Amikor futtatom a makrót, a következő üzenet jelenik meg: "A módosítani kívánt cella védett és ezért csak olvasható"

You can unprotect the sheet in the macro, write the new invoice number, and then protect the sheet. This only has to be done in the NextInvoice macro. The other macro is not making changes to any cells. Here is the code if you are using protection without a password:

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

I don't want to have the Save button in the Saved workbook

This is tricky because the name of your shape will change when the worksheet moves to a new workbook. Very carefully follow these steps:

  1. Open the invoice macro workbook
  2. Right-click on the sheet tab that contains your invoice. Choose Move or Copy.
  3. In the To Book: dropdown, choose New Book. Choose the checkbox for Create a Copy. Click OK. This step 3 simulates the ActiveSheet.Copy in the VBA.
  4. Now that you have the invoice worksheet in a new workbook, Ctrl-click on the shape that you want to delete. Ctrl+Click will select the shape without running the macro.
  5. With the shape selected, look to the left of the Formula Bar. The Name Box will show a name such as "Rounded Rectangle 1". Very carefully build a new line of code to delete this shape as shown below just after 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

Troubleshooting & Error Messages

  1. The following features cannot be saved in macro-free workbooks: VB Project. Answer: Your file is currently saved as an XLSX file. I am equally annoyed that Microsoft chose to use a broken file type as the default. Use File, SaveAs and change the file type to either XLSB or 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. 1004. futási hiba. A dokumentum nincs elmentve. Válasz: A fájl elérési útjának pontosnak kell lennie. Közvetlenül a fájl mentése előtt adjon hozzá egy új sort az MsgBox NewFN segítségével. Futtassa a kódot. Megjelenik egy mező, amely a fájl elérési útját és nevét mutatja. Győződjön meg arról, hogy az útvonal és a fájlnév között van egy útvonal elválasztó.
  6. „1004” futási hiba. A (z) "_Workbook" objektum "SaveAs" metódusa nem sikerült. Válasz: A FileFormatnak FileFormat: = xlOpenXMLWorkbook formátumúnak kell lennie. Amikor elolvassa, úgy hangzik, mint "Excel Open XML Workbook". Ez nem az Ex One Open XML munkafüzet. Igen, zavaró, hogy az 1-es és egy kis L betű egyformán néz ki a videóban. 1l. Változtassa X1OPENXMLWORKBOOK-ját XLOPENXMLWORKBOOK-ra.

érdekes cikkek...