Kitas sąskaitos faktūros numeris - naujienos

„Microsoft Excel“ siūlo daugybę sąskaitų faktūrų šablonų, kuriuos galite atsisiųsti. Bet nėra integruoto būdo padidinti kitą sąskaitos faktūros numerį.

Įrašiau šį vaizdo įrašą, kuriame parodyta, kaip pridėti kelias VBA kodo eilutes prie savo darbaknygės, kad galėtumėte išsaugoti kiekvieną sąskaitą faktūrą kaip naują failą. Tada makrokomanda išvalo sąskaitą faktūrą ir prie sąskaitos faktūros numerio prideda 1.

Turėdamas 166 tūkst. Peržiūrų ir šimtus komentarų, pastebiu, kad tie patys klausimai kyla vėl ir vėl. Paprašyti žmonių perskaityti 800 komentarų tapo nepraktiška, nes atsakymas į jų klausimą anksčiau buvo paskelbtas šešis kartus. Taigi - norėdamas sužinoti populiarius klausimus, kodą skelbiu čia.

1 DUK

Ar galite įvesti kodą, nes negaliu įvesti?

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

DUK # 2

Noriu išsaugoti sąskaitą faktūrą kaip PDF failą „Windows“ kompiuteryje

Pastaba

Šis kodas veikia tik „Windows 2010“ ar naujesnėse „Excel“ versijose. „Mac“ yra skirtingas kodas.

Turite pasirinkti diapazoną, kuriame yra sąskaita faktūra, ir atlikti Puslapio išdėstymas, Spausdinimo sritis, Nustatyti spausdinimo sritį. Jei praleisite šį veiksmą, makrokomandai vykdyti naudojami mygtukai bus rodomi sąskaitoje faktūroje!

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

DUK # 3

Noriu išsaugoti sąskaitą faktūrą kaip „Excel“ failą ir kaip PDF failą kitame aplanke

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

DUK # 4

Mano sąskaitos faktūroje yra skaičiai ir raidės

Turėsite pritaikyti kodą. Štai keletas pavyzdžių. Heidi turi sąskaitos faktūros numerį, tokį kaip SS15001. Kai žiūriu į sąskaitos faktūros numerį, tai yra dviejų raidžių priešdėlis, po kurio rašomi 5 skaitmenys. Naujame sąskaitos faktūroje turi būti nurodyta kairė (, 2) ir vidurinė (, 3,5):

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

Čia yra sudėtingesnis pavyzdys. Sąskaitos faktūros numeris yra IN-1234-HA, kur IN reiškia sąskaitą faktūrą. 1234 yra eilės numeris. HA yra pirmosios B10 kliento vardo raidės.

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

Pirmiau nurodytas keturias eilutes galite supaprastinti taip:

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

DUK # 5

Darbaknygėje turiu kitų makrokomandų (pvz., „SpellNumber“) ir jas reikia išsaugoti.

Norint leisti veikti kitoms jūsų makrokomandoms, kad funkcijos „Skaičiai žodžiams“ toliau veiktų, strategija šiek tiek skiriasi. Užuot nukopijavę tik sąskaitos faktūros lapą į naują darbaknygę ir naudodami „SaveAs“, (a) prisiminsite darbaknygės kelią ir failo pavadinimą, (b) naudokite „SaveAs“, kad išsaugotumėte visą darbaknygę su pavadinimo sąskaitos faktūros numeriu (c) ) Ištrinkite pradinę darbaknygę. (d) Norėdami išsaugoti darbaknygę su originaliu pavadinimu, naudokite „SaveAs“.

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

DUK # 6

Turiu apsaugoti darbalapį, kad mano darbuotojai galėtų pakeisti tik kai kurias langelius. Kai vykdau jūsų makrokomandą, gaunu „Langelis, kurį bandote pakeisti, yra apsaugotas ir todėl tik skaitomas“

Galite apsaugoti lapą nuo makrokomandos, parašyti naują sąskaitos faktūros numerį ir tada apsaugoti lapą. Tai reikia padaryti tik makrokomandoje „NextInvoice“. Kita makrokomanda nekeičia jokių langelių. Čia yra kodas, jei naudojate apsaugą be slaptažodžio:

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

DUK # 7

Nenoriu, kad išsaugotoje darbaknygėje būtų mygtukas Išsaugoti

Tai keblu, nes jūsų formos pavadinimas pasikeis, kai darbalapis bus perkeltas į naują darbaknygę. Labai atidžiai atlikite šiuos veiksmus:

  1. Atidarykite sąskaitos faktūros makrokomandų knygą
  2. Dešiniuoju pelės mygtuku spustelėkite lapo skirtuką, kuriame yra jūsų sąskaita faktūra. Pasirinkite Perkelti arba Kopijuoti.
  3. Išskleidžiamajame meniu Į knygą pasirinkite Nauja knyga. Pasirinkite žymimąjį laukelį Sukurti kopiją. Spustelėkite Gerai. Šis 3 žingsnis imituoja „ActiveSheet“. VBA kopija.
  4. Dabar, kai sąskaitos faktūros darbalapį turite naujoje darbaknygėje, „Ctrl“ spustelėkite figūrą, kurią norite ištrinti. „Ctrl“ + „Click“ pasirinks figūrą nepaleisdami makrokomandos.
  5. Pasirinkę formą, žiūrėkite į kairę nuo „Formulės“ juostos. Pavadinimo laukelyje bus rodomas toks pavadinimas kaip „Suapvalintas stačiakampis 1“. Labai atsargiai sukurkite naują kodo eilutę, kad ištrintumėte šią formą, kaip parodyta žemiau, iškart po „ActiveSheet“. Kopija:
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

Trikčių šalinimas ir klaidų pranešimai

  1. Šių funkcijų negalima išsaugoti makrokomandų darbaknygėse: „VB Project“. Atsakymas: Jūsų failas šiuo metu yra išsaugotas kaip XLSX failas. Mane vienodai erzina tai, kad „Microsoft“ kaip numatytąjį pasirinko naudoti sugadintą failo tipą. Naudokite „File“, „SaveAs“ ir pakeiskite failo tipą į XLSB arba 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. Vykdymo laiko klaida 1004. Dokumentas neišsaugotas. Atsakymas: failo kelias turi būti tikslus. Prieš įrašydami failą, pridėkite naują eilutę naudodami „MsgBox NewFN“. Paleiskite kodą. Pasirodys langelis, kuriame bus rodomas failo kelias ir failo pavadinimas. Įsitikinkite, kad tarp kelio ir failo vardo yra kelio skyriklis.
  6. Vykdymo laiko klaida „1004“. Objekto „_Workbook“ metodas „SaveAs“ nepavyko. Atsakymas: „FileFormat“ turi būti „FileFormat“: = xlOpenXMLWorkbook. Kai skaitote, tai turėtų skambėti kaip „Excel Open XML Workbook“. Tai nėra „Ex One Open XML Workbook“. Taip, glumina tai, kad skaičius 1 ir mažoji raidė L vaizdo įraše atrodo vienodai. 1l. Pakeiskite savo X1OPENXMLWORKBOOK į XLOPENXMLWORKBOOK.

Įdomios straipsniai...