Numero fattura successiva - Notizie

Microsoft Excel offre molti modelli di fattura che puoi scaricare. Ma non esiste un modo integrato per passare al numero di fattura successivo.

Ho registrato questo video che mostra come aggiungere alcune righe di codice VBA alla cartella di lavoro in modo da poter salvare ogni fattura come nuovo file. La macro quindi cancella la fattura e aggiunge 1 al numero di fattura.

Con 166.000 visualizzazioni e centinaia di commenti, trovo che le stesse domande si ripresentino ancora e ancora. È diventato poco pratico chiedere alle persone di leggere 800 commenti perché la risposta alla loro domanda è stata pubblicata sei volte in precedenza. Quindi, per domande popolari, inserisco il codice qui.

FAQ # 1

Puoi digitare il codice per me perché non sono in grado di digitare?

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

Voglio salvare la fattura come PDF su un PC Windows

Nota

Questo codice funziona solo nelle versioni Windows di Excel 2010 o successive. C'è un codice diverso per un Mac.

Devi selezionare l'intervallo che contiene la fattura e fare Layout di pagina, Area di stampa, Imposta area di stampa. Se salti questo passaggio, i pulsanti utilizzati per eseguire la macro appariranno nella tua fattura!

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

Voglio salvare la fattura sia come file Excel che come PDF in una cartella diversa

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

Il mio numero di fattura contiene numeri e lettere

Dovrai adattare il codice. Ecco alcuni esempi. Heidi ha un numero di fattura come SS15001. Quando guardo quel numero di fattura, è un prefisso di due lettere seguito da 5 cifre. Il nuovo numero di fattura deve utilizzare LEFT (, 2) e MID (, 3,5):

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

Ecco un esempio più complesso. Il numero di fattura è IN-1234-HA, dove IN- sta per Fattura. Il 1234 è un numero sequenziale. L'HA è la prima lettera del nome del cliente che si trova in 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

Puoi semplificare le quattro righe precedenti come segue:

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

FAQ # 5

Ho altre macro nella cartella di lavoro (come SpellNumber) e ho bisogno che anche le macro vengano salvate.

Per consentire l'esecuzione delle altre macro in modo che la funzione Numbers-to-Words continui a funzionare, la strategia è leggermente diversa. Invece di copiare solo il foglio della fattura in una nuova cartella di lavoro e utilizzare SaveAs, (a) ricorderai il percorso e il nome del file della cartella di lavoro, (b) usa SaveAs per salvare l'intera cartella di lavoro con il numero della fattura nel nome, (c ) Elimina la cartella di lavoro originale. (d) Utilizzare SaveAs per salvare la cartella di lavoro con il nome originale.

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

Devo proteggere il foglio di lavoro in modo che i miei dipendenti possano modificare solo alcune celle. Quando eseguo la tua macro, ottengo "La cella che stai cercando di modificare è protetta e quindi di sola lettura"

È possibile rimuovere la protezione del foglio nella macro, scrivere il nuovo numero di fattura e quindi proteggere il foglio. Questa operazione deve essere eseguita solo nella macro NextInvoice. L'altra macro non apporta modifiche a nessuna cella. Ecco il codice se stai usando la protezione senza 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

Non voglio avere il pulsante Salva nella cartella di lavoro salvata

Questo è complicato perché il nome della tua forma cambierà quando il foglio di lavoro si sposta in una nuova cartella di lavoro. Segui molto attentamente questi passaggi:

  1. Apri la cartella di lavoro della macro della fattura
  2. Fare clic con il tasto destro sulla scheda del foglio che contiene la fattura. Scegli Sposta o Copia.
  3. Nel menu a discesa Per prenotare: scegli Nuovo libro. Scegli la casella di controllo per creare una copia. Fare clic su OK. Questo passaggio 3 simula ActiveSheet.Copy in VBA.
  4. Ora che hai il foglio di lavoro della fattura in una nuova cartella di lavoro, fai clic tenendo premuto il tasto Ctrl sulla forma che desideri eliminare. Ctrl + clic selezionerà la forma senza eseguire la macro.
  5. Con la forma selezionata, guarda a sinistra della barra della formula. La casella del nome mostrerà un nome come "Rettangolo arrotondato 1". Crea con molta attenzione una nuova riga di codice per eliminare questa forma come mostrato di seguito subito dopo 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

Risoluzione dei problemi e messaggi di errore

  1. Le seguenti funzionalità non possono essere salvate in cartelle di lavoro senza macro: VB Project. Risposta: il file è attualmente salvato come file XLSX. Sono ugualmente infastidito dal fatto che Microsoft abbia scelto di utilizzare un tipo di file danneggiato come predefinito. Usa File, SaveAs e cambia il tipo di file in XLSB o 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. Errore di runtime 1004. Documento non salvato. Risposta: il percorso del file deve essere esatto. Appena prima di salvare il file aggiungi una nuova riga con MsgBox NewFN. Esegui il codice. Apparirà una finestra che mostra il percorso e il nome del file. Assicurati che ci sia un separatore di percorso tra il percorso e il nome del file.
  6. Errore di runtime "1004". Metodo "SaveAs" dell'oggetto "_Workbook" non riuscito. Risposta: FileFormat deve essere FileFormat: = xlOpenXMLWorkbook. Quando lo leggi, dovrebbe suonare come "Excel Open XML Workbook". Non è Ex One Open XML Workbook. Sì, è fonte di confusione che un numero 1 e una L minuscola si assomiglino nel video. 1l. Cambia il tuo X1OPENXMLWORKBOOK in XLOPENXMLWORKBOOK.

Articoli interessanti...