Seuraava laskunumero - uutiset

Microsoft Excel tarjoaa monia laskupohjia, jotka voit ladata. Seuraavan laskunumeron lisäämiseen ei kuitenkaan ole sisäänrakennettua tapaa.

Nauhoitin tämän videon, jossa kerrotaan, kuinka muutama rivi VBA-koodia lisätään työkirjaasi, jotta voit tallentaa jokaisen laskun uutena tiedostona. Makro tyhjentää sitten laskun ja lisää 1 laskun numeroon.

166 tuhatta katselukertaa ja satoja kommentteja huomaan, että samat kysymykset tulevat esiin uudestaan ​​ja uudestaan. On käynyt epäkäytännölliseksi pyytää ihmisiä lukemaan läpi 800 kommenttia, koska vastaus kysymykseensä on lähetetty kuusi kertaa aiemmin. Joten - suosittuja kysymyksiä varten lähetän koodin tähän.

UKK # 1

Voitteko kirjoittaa minulle koodin, koska en pysty kirjoittamaan?

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

UKK # 2

Haluan tallentaa laskun PDF-tiedostona Windows-tietokoneelle

Huomautus

Tämä koodi toimii vain Excel 2010: n tai uudemman Windows-versioissa. Macille on eri koodi.

Sinun on valittava lasku sisältävä alue ja tehtävä Sivun asettelu, Tulostusalue, Aseta tulostusalue. Jos ohitat tämän vaiheen, makron suorittamiseen käytetyt painikkeet näkyvät laskussa!

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

UKK # 3

Haluan tallentaa laskun sekä Excel-tiedostona että PDF-tiedostona eri kansioon

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

UKK # 4

Laskunumerossani on numeroita ja kirjaimia

Sinun on mukautettava koodi. Tässä on joitain esimerkkejä. Heidillä on laskunumero kuten SS15001. Kun tarkastelen laskun numeroa, se on kaksikirjaiminen etuliite, jota seuraa viisi numeroa. Uudessa laskunumerossa on käytettävä VASEN (, 2) ja MID (, 3,5):

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

Tässä on monimutkaisempi esimerkki. Laskunumero on IN-1234-HA, jossa IN tarkoittaa laskua. 1234 on järjestysnumero. HA on asiakasnimen ensimmäiset kirjaimet, jotka löytyvät osasta 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

Voit yksinkertaistaa edellä mainittuja neljää riviä seuraavasti:

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

UKK # 5

Työkirjassa on muita makroja (kuten SpellNumber) ja tarvitsen myös makrot tallennettaviksi.

Strategia on hieman erilainen, jotta muut makrosi voivat toimia, jotta Numerot sanoihin -toiminto jatkaisi toimintaansa. Sen sijaan, että kopioit pelkästään laskulomakkeen uuteen työkirjaan ja käytät SaveAsia, (a) muista työkirjan polku ja tiedostonimi, (b) Tallenna SaveAs-sovelluksella koko työkirja, jonka nimessä on laskun numero, (c) ) Poista alkuperäinen työkirja. (d) Tallenna työkirja alkuperäisellä nimellä TallennaAs-sovelluksella.

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

UKK # 6

Minun on suojattava laskentataulukko, jotta työntekijäni voivat vaihtaa vain joitain soluja. Kun suoritan makron, saan "Muutettavan solun on suojattu ja siksi vain luku"

Voit poistaa taulukon suojauksen makrosta, kirjoittaa uuden laskunumeron ja suojata sitten taulukon. Tämä on tehtävä vain NextInvoice-makrossa. Toinen makro ei tee muutoksia mihinkään soluun. Tässä on koodi, jos käytät suojausta ilman salasanaa:

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

UKK # 7

En halua, että Tallenna-painike on Tallennetussa työkirjassa

Tämä on hankalaa, koska muodon nimi muuttuu, kun laskentataulukko siirtyy uuteen työkirjaan. Noudata näitä ohjeita erittäin huolellisesti:

  1. Avaa laskumakron työkirja
  2. Napsauta hiiren kakkospainikkeella laskun sisältävää välilehteä. Valitse Siirrä tai Kopioi.
  3. Valitse avattavasta Varaa: -valikosta Uusi kirja. Valitse Luo kopio -valintaruutu. Napsauta OK. Tämä vaihe 3 simuloi ActiveSheet.Copy: tä VBA: ssa.
  4. Nyt kun laskun laskentataulukko on uudessa työkirjassa, Ctrl-napsauta poistettavaa muotoa. Ctrl + napsautus valitsee muodon suorittamatta makroa.
  5. Kun muoto on valittu, katso kaavapalkin vasemmalle puolelle. Nimi-ruudussa näkyy nimi, kuten "Pyöristetty suorakulmio 1". Rakenna uusi koodirivi erittäin varovasti poistaaksesi tämän muodon alla olevan kuvan mukaisesti heti ActiveSheetin jälkeen.
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

Vianmääritys ja virheilmoitukset

  1. Seuraavia ominaisuuksia ei voi tallentaa makrottomiin työkirjoihin: VB Project. Vastaus: Tiedostosi on tällä hetkellä tallennettu XLSX-tiedostona. Olen yhtä harmillista siitä, että Microsoft päätti käyttää oletuksena rikkoutunutta tiedostotyyppiä. Käytä File, SaveAs ja vaihda tiedostotyypiksi joko XLSB tai 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. Suoritusajan virhe 1004. Asiakirjaa ei tallennettu. Vastaus: Tiedoston polun on oltava tarkka. Lisää uusi rivi juuri ennen tiedoston tallentamista MsgBox NewFN: n avulla. Suorita koodi. Näkyviin tulee ruutu, joka näyttää tiedostopolun ja tiedostonimen. Varmista, että polun ja tiedoston nimen välillä on polkuerotin.
  6. Suoritusajan virhe '1004'. Objektin _Workbook '' SaveAs '' menetelmä epäonnistui. Vastaus: FileFormatin on oltava FileFormat: = xlOpenXMLWorkbook. Kun luet sitä, sen pitäisi kuulostaa "Excel Open XML Workbook". Se ei ole Ex One Open XML -työkirja. Kyllä, on hämmentävää, että numero 1 ja pieni kirjain L näyttävät samanlaisilta videossa. 1l. Muuta X1OPENXMLWORKBOOK XLOPENXMLWORKBOOK.

Mielenkiintoisia artikkeleita...