Следећи број фактуре - Вести

Мицрософт Екцел нуди бројне предлошке фактура које можете преузети. Али не постоји уграђени начин за повећање до следећег броја фактуре.

Снимио сам овај видео који показује како да додате неколико редова ВБА кода у радну свеску како бисте сваку фактуру могли сачувати као нову датотеку. Макронаредба тада брише фактуру и додаје 1 на број фактуре.

Са 166.000 прегледа и стотинама коментара, откривам да се иста питања појављују изнова и изнова. Постало је непрактично тражити од људи да прочитају 800 коментара, јер је одговор на њихово питање објављен шест пута раније. Дакле - за популарна питања објављујем код овде.

ФАК # 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

ФАК # 2

Желим да рачун сачувам као ПДФ на Виндовс рачунару

Белешка

Овај код ради само у Виндовс верзијама програма Екцел 2010 или новијим. Постоји другачији код за Мац.

Морате одабрати опсег који садржи фактуру и извршити Лаиоут странице, Област исписа, Подесити област исписа. Ако прескочите овај корак, тада ће се на вашој фактури појавити дугмад која се користе за покретање макронаредбе!

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

ФАК # 3

Желим да сачувам рачун као Екцел датотеку и ПДФ у другој фасцикли

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

ФАК # 4

Мој број фактуре садржи бројеве и слова

Морат ћете прилагодити код. Ево неколико примера. Хеиди има број фактуре попут СС15001. Када погледам тај број фактуре, то је двословни префикс праћен са 5 цифара. Нови број фактуре мора да користи ЛЕВО (, 2) и МИД (, 3,5):

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

Ево сложенијег примера. Број фактуре је ИН-1234-ХА, а ИН- означава фактуру. 1234 је секвенцијални број. ХА је прво слово имена купца пронађено у Б10.

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)

ФАК # 5

У радној свесци имам и друге макронаредбе (као што је СпеллНумбер) и требају ми и макрои да буду сачувани.

Да бисте омогућили осталим макронаредбама да раде како би функција Бројеви у речи наставила да ради, стратегија је мало другачија. Уместо да копирате само лист са фактуром у нову радну свеску и користите СавеАс, (а) Запамтите путању и име датотеке радне свеске, (б) Користите СавеАс да сачувате целу радну свеску са бројем фактуре у имену, (ц ) Избришите оригиналну радну свеску. (д) Користите СавеАс да сачувате радну свеску са оригиналним називом.

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

ФАК # 6

Морам да заштитим радни лист како би моји запослени могли да мењају само неке ћелије. Када покренем ваш макро, добијем „Ћелија коју покушавате да промените је заштићена и самим тим само за читање“

Можете да уклоните заштиту листа у макронаредби, напишете нови број фактуре, а затим заштитите лист. То се мора урадити само у макрону НектИнвоице. Други макро не прави промене ни у једној ћелији. Ево кода ако користите заштиту без лозинке:

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

ФАК # 7

Не желим да имам дугме Сачувај у сачуваној радној свесци

Ово је незгодно, јер ће се назив вашег облика променити када се радни лист пресели у нову радну свеску. Веома пажљиво следите ове кораке:

  1. Отворите радну свеску макроа фактуре
  2. Кликните десним тастером миша на картицу листа која садржи вашу фактуру. Изаберите Премести или Копирај.
  3. У падајућем менију То Боок: одаберите Нев Боок. Означите поље за потврду Створи копију. Кликните ОК. Овај корак 3 симулира АцтивеСхеет.Цопи у ВБА.
  4. Сада када имате радни лист фактуре у новој радној свесци, притисните Цтрл и кликните на облик који желите да избришете. Цтрл + Цлицк ће одабрати облик без покретања макронаредбе.
  5. Са одабраним обликом, погледајте лево од траке формуле. У оквиру са именом биће приказано име као што је „Заобљени правоугаоник 1“. Врло пажљиво направите нову линију кода да бисте избрисали овај облик као што је приказано у наставку одмах након АцтивеСхеет.Цопи:
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. Следеће функције се не могу сачувати у радне свеске без макронаредби: ВБ Пројецт. Одговор: Ваша датотека је тренутно сачувана као КСЛСКС датотека. Једнако ме нервира што је Мицрософт изабрао да користи неисправни тип датотеке као подразумевани. Користите Филе, СавеАс и промените тип датотеке у КСЛСБ или КСЛСМ.
  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. Документ није сачуван. Одговор: Путања до датотеке мора бити тачна. Непосредно пре чувања датотеке додајте нови ред са МсгБок НевФН. Покрените код. Појавиће се оквир који приказује путању датотеке и име датотеке. Уверите се да између путање и имена датотеке постоји сепаратор путање.
  6. Грешка у времену извођења „1004“. Метода 'СавеАс' објекта '_Воркбоок' није успела. Одговор: ФилеФормат мора бити ФилеФормат: = клОпенКСМЛВоркбоок. Када га прочитате, требало би да звучи као „Екцел Опен КСМЛ Воркбоок“. То није Ек Оне отворена КСМЛ радна свеска. Да, збуњујуће је што број 1 и мала слова Л изгледају слично на видео снимку. 1л. Промените Кс1ОПЕНКСМЛВОРКБООК у КСЛОПЕНКСМЛВОРКБООК.

Занимљиви Чланци...