Недавно мне пришлось зарегистрироваться в системе налога на товары и услуги (GST), чтобы я мог подать заявку на GST с моих доходов.
Если у вас есть номер GST, вам необходимо ежемесячно подавать налоговую декларацию (в Индии).
Поэтому каждый месяц мой дипломированный бухгалтер обращался ко мне с просьбой выставить счета-фактуры, чтобы он мог подать на GST.
В моем случае нужно создать лишь несколько счетов-фактур, так как у меня всего несколько источников дохода.
Однако, поскольку это дополнительная работа, я хотел сделать это как можно быстрее.
Поэтому, чтобы свести к минимуму свои усилия, я создал шаблон генератора счетов в Excel, который позволяет мне хранить все данные в одном месте, а затем он автоматически создает счета в формате PDF для всех точек данных.
Как вы можете видеть ниже, все, что мне нужно сделать, это дважды щелкнуть имя клиента (в столбце B), и он мгновенно создаст и сохранит счет в формате PDF в указанной папке.
Вы также можете изменить шаблон счета-фактуры в соответствии с форматом вашей компании (для этого вам потребуется немного изменить код VBA - поясняется ниже).
Он создает счет, как показано ниже:
Как работает этот шаблон генератора счетов?
В этом шаблоне счета есть два листа:
- Подробности - Здесь нужно указать детали продажи / сделки. Чтобы все было вместе, я создал по одной строке для каждой записи. Все детали транзакции записываются в строку.
- Шаблон счета-фактуры - Это шаблон-заполнитель счета-фактуры, в котором некоторые поля оставлены пустыми. Мне нужно создать отдельный счет для всех записей о продажах, и детали для каждого счета взяты из рабочего листа Details.
У меня также есть папка на моем рабочем столе с названием «PDF-файлы счетов». Это папка, в которой сохраняются вновь созданные счета в формате PDF.
Теперь посмотрим, как это работает:
Вам нужно дважды щелкнуть имя клиента (выделено оранжевым цветом на листе сведений)..
Вот и все!
Когда вы дважды щелкаете имя клиента, он запускает магию VBA в бэкенде, и происходит следующее:
- Собираются детали для клиента и сделки продажи, и лист шаблона счета заполняется этими деталями.
- Будет создана новая книга, содержащая сведения о выбранном клиенте (на котором вы дважды щелкнули).
- Эта книга сохраняется в формате PDF в папке PDF со счетами.
- Новая книга закрывается без сохранения.
В случае каких-либо изменений в деталях счета-фактуры, вы можете дважды щелкнуть имя клиента еще раз, и будет создан новый счет-фактура (и он перезапишет старый).
Обратите внимание, что названия счетов-фактур основаны на месяце и номере счета-фактуры.
Например, счет-фактура с датой 15-04-2019 и номер счета как 1 будет сохранен с именем Апрель2021-2022_1.pdf. Это помогает отслеживать счета на случай, если у вас их слишком много.
Вы можете скачать шаблон генератора счетов, нажав кнопку ниже:
Изменение шаблона генератора счетов-фактур
Я создал этот шаблон счета-фактуры в формате, который мне нужен для подачи документов GST.
Если вам нужен другой формат, вам придется отредактировать шаблон, а затем настроить внутренний код VBA.
Позвольте мне сначала показать вам код и объяснить, как он работает:
Sub CreateInvoice (RowNum As Integer) Application.ScreenUpdating = False Dim wb As Workbook Dim sh As Worksheet With shInvoiceTemplate .Range ("D10") = shDetails.Range ("A" & RowNum) .Range ("D11") = shDetails. Range ("B" & RowNum) .Range ("D12") = shDetails.Range ("C" & RowNum) .Range ("B15") = shDetails.Range ("D" & RowNum) .Range ("D15" ) = shDetails.Range ("F" & RowNum) .Range ("D16") = shDetails.Range ("G" & RowNum) .Range ("D18") = shDetails.Range ("E" & RowNum) Заканчивается на FPath = "C: \ Users \ sumit \ Desktop \ Invoice PDFs" Fname = Format (shInvoiceTemplate.Range ("D10"), "mmmm yyyy") _ & "_" & shInvoiceTemplate.Range ("D12") shInvoiceTemplate.Copy ActiveSheet.Name = "InvTemp" Set wb = ActiveWorkbook Set sh = ActiveSheet sh.ExportAsFixedFormat Тип: = xlTypePDF, Filename: = _ FPath & "\" & Fname, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAre , OpenAfterPublish: = False wb.Close SaveChanges: = False ThisWorkbook.Activate Application.ScreenUpdating = True End Sub
Приведенный выше код копирует детали транзакции, заполняет шаблон заполнителя счета этими деталями, создает новую книгу и сохраняет новую книгу как PDF в указанной папке.
Если у вас другой шаблон или другое расположение папки, вам необходимо изменить выделенные ниже части кода:
- Первый выделенный раздел - это то, что берет сведения из листа сведений и заполняет шаблон счета-фактуры. Если вы решите изменить шаблон счета-фактуры, вам необходимо убедиться, что вы выбрали правильные данные, изменив эту часть кода.
- Эта строка указывает расположение папки. В моем случае это была папка на моем рабочем столе. Вы можете указать адрес папки, в которой вы хотите сохранять счета.
Обратите внимание, что я переименовал кодовое имя рабочего листа в «shDetails». Я сделал это, чтобы использовать имя - shDetails - в моем коде, и он продолжал бы работать, даже если вы измените имя листов на листе.
Если вы хотите узнать больше об имени листа и кодовом имени, взгляните на это (ознакомьтесь с разделом об использовании кодового имени листа).
Где код в книге?
Код помещается в серверную часть книги Excel в модуле.
Чтобы получить доступ к коду, выполните следующие действия:
- Щелкните вкладку Разработчик.
- Щелкните параметр Visual Basic. Это откроет окно редактора VB.
- В редакторе Visual Basic дважды щелкните модуль, чтобы открыть окно его кода. Вы найдете упомянутый выше код.
Если вы создаете шаблон самостоятельно, возможно, вы не найдете модуль в новой книге. Вам нужно щелкнуть правой кнопкой мыши любой из объектов книги, перейти к «Вставить», а затем щелкнуть «Модуль». Это вставит новый модуль.
Как заставить работать функцию двойного щелчка
Вышеупомянутый код выполняет всю тяжелую работу, но вам необходимо связать его с событием двойного щелчка.
Это означает, что приведенный выше код макроса VBA должен запускаться всякий раз, когда кто-то дважды щелкает заполненные ячейки в столбце имени клиента.
Это можно сделать, вставив следующий код в окно кода рабочего листа:
Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Если Target.Cells "" и Target.Column = 2 Then Cancel = True Call CreateInvoice (Target.Row) End If End Sub
Вот шаги, чтобы вставить этот код в бэкэнд рабочего листа:
- Щелкните правой кнопкой мыши вкладку рабочего листа «Подробности».
- Нажмите на опцию «Просмотреть код».
- Скопируйте и вставьте приведенный выше код в появившееся окно кода.
Приведенный выше код выполняет следующие действия:
- Проверяет, содержит ли ячейка, по которой был выполнен двойной щелчок, сведения о клиенте или нет. Он использует оператор IF для проверки и запуска кода, только если ячейка не пуста и находится в столбце B.
- Если оба указанных критерия удовлетворены, он отключает функцию двойного щелчка (то есть переход в режим редактирования) и вызывает подпрограмму «CreateInvoice», которая хранится в модуле. Он также передает подпрограмме значение номера строки. Например, если я дважды щелкну имя клиента в третьей строке, он передаст 3 в качестве значения подпрограмме CreateInvoice.
- После выполнения подпрограммы «CreateInvoice», которая создает PDF-файл счета-фактуры, она заканчивается.
Щелкните здесь, чтобы загрузить файл шаблона генератора счетов.
Сохранение шаблона счета-фактуры в формате Excel (вместо PDF)
Если вы хотите сохранить шаблоны счетов как файлы Excel, а не как файлы PDF, вы можете вместо этого использовать приведенный ниже код:
Sub CreateInvoice (RowNum As Integer) Application.ScreenUpdating = False Dim wb As Workbook Dim sh As Worksheet With shInvoiceTemplate .Range ("D10") = shDetails.Range ("A" & RowNum) .Range ("D11") = shDetails. Range ("B" & RowNum) .Range ("D12") = shDetails.Range ("C" & RowNum) .Range ("B15") = shDetails.Range ("D" & RowNum) .Range ("D15" ) = shDetails.Range ("F" & RowNum) .Range ("D16") = shDetails.Range ("G" & RowNum) .Range ("D18") = shDetails.Range ("E" & RowNum) Заканчивается на FPath = "C: \ Users \ sumit \ Desktop \ Invoice PDFs" Fname = Format (shInvoiceTemplate.Range ("D10"), "mmmm yyyy") _ & "_" & shInvoiceTemplate.Range ("D12") shInvoiceTemplate.Copy ActiveSheet.Name = "InvTemp" Set wb = ActiveWorkbook Set sh = ActiveSheet sh.Name = Fname wb.SaveAs Filename: = FPath & "\" & Fname wb.Close SaveChanges: = False ThisWorkbook.Activate Application.ScreenUpdating = True End Sub
Приведенный выше код сохраняет счет как книгу Excel с тем же соглашением об именах. Лист в книге, содержащий заполненный счет в каждой сохраненной книге, также называется таким же.
Вам также могут понравиться следующие полезные руководства по Excel:
- Как конвертировать Excel в PDF с помощью VBA.
- Вставить PDF в Excel.
- Извлекайте данные из PDF в Excel с помощью этого конвертера.
- Шаблон калькулятора расписания Excel.
- Шаблон отслеживания отпусков в Excel.
- Бесплатные шаблоны Excel.