Номер наступного рахунка - Новини

Microsoft Excel пропонує безліч шаблонів рахунків-фактур, які ви можете завантажити. Але немає вбудованого способу збільшення до наступного номера рахунку-фактури.

Я записав це відео, де показано, як додати кілька рядків коду VBA до вашої книги, щоб ви могли зберігати кожен рахунок-фактуру як новий файл. Потім макрос очищає рахунок-фактуру та додає 1 до номера рахунку-фактури.

З переглядами 166 тис. І сотнями коментарів, я виявляю, що ті самі питання виникають знову і знову. Просити людей прочитати 800 коментарів стало непрактичним, оскільки відповідь на їхнє питання вже публікувалася шість разів. Отже - для популярних питань я розміщую тут код.

FAQ # 1

Чи можете ви ввести код для мене, оскільки я не можу ввести?

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

Я хочу зберегти рахунок-фактуру як PDF-файл на ПК з ОС Windows

Примітка

Цей код працює лише у версіях Windows Excel 2010 або новіших версіях. Для Mac існує інший код.

Ви повинні вибрати діапазон, що містить рахунок-фактуру, та виконати макет сторінки, область друку, встановити область друку. Якщо пропустити цей крок, то кнопки, що використовуються для запуску макросу, з’являться у вашому рахунку-фактурі!

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

Я хочу зберегти рахунок-фактуру як файл Excel, так і PDF-файл в іншій папці

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

Номер мого рахунку-фактури містить цифри та літери

Вам доведеться адаптувати код. Ось кілька прикладів. Хайді має номер рахунку-фактури, такий як SS15001. Коли я дивлюсь номер цього рахунку-фактури, це префікс із двох літер, за яким слідують 5 цифр. Новий номер рахунку-фактури повинен використовувати ЛІВУ (, 2) та МІД (, 3,5):

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

Ось більш складний приклад. Номер рахунку-фактури - IN-1234-HA, де IN - означає рахунок. 1234 - це порядковий номер. HA - це перші літери з іменем замовника, знайдені в 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

Ви можете спростити наведені вище чотири рядки наступним чином:

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

FAQ # 5

У мене в книзі є інші макроси (наприклад, SpellNumber), і вони також мають бути збережені.

Для того, щоб дозволити іншим макрокомандам працювати, щоб функція Числа до Слова продовжувала працювати, стратегія дещо інша. Замість того, щоб копіювати лише аркуш рахунку-фактури до нової книги та використовувати SaveAs, ви (а) запам'ятаєте шлях та ім'я файлу книги; (b) використовуйте SaveAs, щоб зберегти всю книгу з номером рахунку-фактури в назві, (c ) Видаліть оригінальну книгу. (d) Використовуйте 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

FAQ # 6

Мені потрібно захистити аркуш, щоб мої співробітники могли змінювати лише деякі комірки. Коли я запускаю ваш макрос, я отримую "Клітинку, яку ви намагаєтесь змінити, захищено і тому лише для читання"

Ви можете зняти захист аркуша в макросі, написати новий номер рахунку-фактури, а потім захистити аркуш. Це потрібно зробити лише в макросі NextInvoice. Інший макрос не вносить змін у жодні комірки. Ось код, якщо ви використовуєте захист без пароля:

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

Поширені запитання No7

Я не хочу, щоб у збереженій книзі була кнопка Зберегти

Це складно, тому що назва вашої фігури зміниться, коли робочий аркуш перейде до нової книги. Дуже ретельно виконайте такі дії:

  1. Відкрийте книгу макросів рахунків-фактур
  2. Клацніть правою кнопкою миші на вкладці аркуша, що містить рахунок-фактуру. Виберіть Перемістити або Копіювати.
  3. У спадному меню To Book: виберіть New Book. Установіть прапорець біля пункту Створити копію. Клацніть OK. Цей крок 3 імітує ActiveSheet.Copy у VBA.
  4. Тепер, коли у вас є аркуш рахунків-фактур у новій книзі, натисніть клавішу Ctrl і клацніть на фігуру, яку потрібно видалити. Ctrl + Click вибере фігуру без запуску макросу.
  5. Вибравши форму, дивіться ліворуч від панелі формул. У вікні імені буде вказано таку назву, як "Округлений прямокутник 1". Дуже ретельно побудуйте новий рядок коду, щоб видалити цю фігуру, як показано нижче, одразу після 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

Усунення несправностей та повідомлення про помилки

  1. Наступні функції не можна зберегти у книгах без макросів: VB Project. Відповідь: Ваш файл наразі зберігається як файл XLSX. Мене однаково дратує, що Microsoft вирішила використовувати пошкоджений тип файлу за замовчуванням. Використовуйте File, SaveAs та змініть тип файлу на XLSB або 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. Документ не збережено. Відповідь: шлях до файлу повинен бути точним. Перед збереженням файлу додайте новий рядок за допомогою MsgBox NewFN. Запустіть код. З'явиться вікно, що відображає шлях до файлу та ім'я файлу. Переконайтесь, що між шляхом та назвою файлу є роздільник шляхів.
  6. Помилка часу виконання '1004'. Помилка методу 'SaveAs' об'єкта '_Workbook'. Відповідь: Формат файлу має бути Формат файлу: = xlOpenXMLWorkbook. Коли ви його читаєте, це має звучати як "Книга Excel Open XML". Це не Ex One Open XML Workbook. Так, заплутано те, що цифра 1 та мала літера L схожі на відео. 1л. Змініть X1OPENXMLWORKBOOK на XLOPENXMLWORKBOOK.

Цікаві статті...