Următorul număr de factură - Știri

Microsoft Excel oferă multe șabloane de facturi pe care le puteți descărca. Dar nu există un mod încorporat de a crește la următorul număr de factură.

Am înregistrat acest videoclip care arată cum să adăugați câteva linii de cod VBA în registrul de lucru, astfel încât să puteți salva fiecare factură ca un fișier nou. Macro-ul șterge apoi factura și adaugă 1 la numărul facturii.

Cu 166.000 de vizualizări și sute de comentarii, constat că aceleași întrebări apar din nou și din nou. A devenit impracticabil să ceri oamenilor să citească 800 de comentarii, deoarece răspunsul la întrebarea lor a fost postat de șase ori înainte. Deci - pentru întrebări populare, postez codul aici.

Întrebări frecvente nr. 1

Puteți să introduceți codul pentru mine, deoarece nu pot scrie?

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

Întrebări frecvente nr. 2

Vreau să salvez factura ca PDF pe un computer Windows

Notă

Acest cod funcționează numai în versiunile Windows ale Excel 2010 sau mai recent. Există un cod diferit pentru un Mac.

Trebuie să selectați intervalul care conține factura și să faceți aspectul paginii, zona de imprimare, setarea zonei de imprimare. Dacă omiteți acest pas, butoanele folosite pentru a rula macro vor apărea în factură!

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

Întrebări frecvente nr. 3

Vreau să salvez factura atât ca fișier Excel, cât și ca PDF într-un alt folder

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

Întrebări frecvente # 4

Numărul meu de factură are numere și litere

Va trebui să adaptați codul. Aici sunt cateva exemple. Heidi are un număr de factură ca SS15001. Când mă uit la acel număr de factură, este un prefix din două litere urmat de 5 cifre. Noul număr de factură trebuie să utilizeze LEFT (, 2) și MID (, 3,5):

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

Iată un exemplu mai complex. Numărul facturii este IN-1234-HA, unde IN- înseamnă Factură. 1234 este un număr secvențial. HA este primul către literele numelui clientului găsite în 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

Puteți simplifica cele patru rânduri de mai sus după cum urmează:

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

Întrebări frecvente nr. 5

Am alte macrocomenzi în registrul de lucru (cum ar fi SpellNumber) și trebuie să fie salvate și macrocomenzile.

Pentru a permite celorlalte macrocomenzi să ruleze pentru a avea funcția Numere-la-Cuvinte care să continue să funcționeze, strategia este puțin diferită. În loc să copiați doar foaia de factură într-un nou registru de lucru și să utilizați SaveAs, veți (a) Amintiți calea și numele fișierului registrului de lucru, (b) Utilizați SaveAs pentru a salva întregul registru de lucru cu numărul Facturii în nume, (c) ) Ștergeți registrul de lucru original. (d) Utilizați SaveAs pentru a salva registrul de lucru cu numele original.

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

Întrebări frecvente nr. 6

Trebuie să protejez foaia de lucru, astfel încât angajații mei să poată schimba doar unele celule. Când rulez macroul dvs., primesc „Celula pe care încercați să o modificați este protejată și, prin urmare, numai în citire”

Puteți să protejați foaia în macro, să scrieți noul număr de factură și apoi să protejați foaia. Acest lucru trebuie făcut numai în macro-ul NextInvoice. Cealaltă macrocomandă nu modifică nicio celulă. Iată codul dacă utilizați protecție fără parolă:

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

Întrebări frecvente nr. 7

Nu vreau să am butonul Salvare în registrul de lucru Salvat

Acest lucru este dificil, deoarece numele formei dvs. se va schimba atunci când foaia de lucru trece la un nou registru de lucru. Urmați cu atenție acești pași:

  1. Deschideți registrul de lucru pentru macrocomenzi cu facturi
  2. Faceți clic dreapta pe fila de foaie care conține factura dvs. Alegeți Mutare sau Copiere.
  3. În meniul drop-down Căutare: alegeți Cartea nouă. Bifați caseta de selectare pentru Creați o copie. Faceți clic pe OK. Acest pas 3 simulează ActiveSheet. Copiați în VBA.
  4. Acum că aveți foaia de lucru cu factura într-un nou registru de lucru, faceți clic pe Ctrl-clic pe forma pe care doriți să o ștergeți. Ctrl + Click va selecta forma fără a rula macrocomanda.
  5. Cu forma selectată, priviți în stânga barei de formule. Caseta Nume va afișa un nume precum „Dreptunghi 1 rotunjit”. Construiți cu mare atenție o nouă linie de cod pentru a șterge această formă, așa cum se arată mai jos, imediat după 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

Depanare și mesaje de eroare

  1. Următoarele caracteristici nu pot fi salvate în registrele de lucru fără macrocomenzi: VB Project. Răspuns: Fișierul dvs. este salvat în prezent ca fișier XLSX. Sunt la fel de enervat că Microsoft a ales să utilizeze un tip de fișier defect ca implicit. Utilizați File, SaveAs și schimbați tipul de fișier la XLSB sau 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. Run Time Error 1004. Documentul nu a fost salvat. Răspuns: Calea fișierului trebuie să fie exactă. Chiar înainte de salvarea fișierului adăugați o nouă linie cu MsgBox NewFN. Rulați codul. Va apărea o casetă care afișează calea fișierului și numele fișierului. Asigurați-vă că există un separator de cale între cale și numele fișierului.
  6. Eroare la timpul de rulare „1004”. Metoda „SaveAs” a obiectului „_Workbook” a eșuat. Răspuns: FileFormat trebuie să fie FileFormat: = xlOpenXMLWorkbook. Când îl citiți, ar trebui să sune ca „Excel Open XML Workbook”. Nu este Ex One Open XML Workbook. Da, este confuz faptul că un număr 1 și o minusculă L seamănă în videoclip. 1l. Schimbați-vă X1OPENXMLWORKBOOK în XLOPENXMLWORKBOOK.

Articole interesante...