Excel/PowerQuery/VBA

Приводим документы к единому стандарту с помощью архивации VBA

Время прочтения: 3 мин.

В ходе проведения аудита формируются аудиторские доказательства и аудиторам требуется организовать хранение аудиторской документации таким образом, чтобы при необходимости, был обеспечен быстрый и удобный доступ к информации.

Перед нами была поставлена задача – организовать хранение электронных документов и аудиторских доказательств на файловом ресурсе таким образом, чтобы обеспечивался удобный поиск необходимой информации, при одновременном обеспечении экономии дискового пространства.

Для решения задачи мы решили воспользоваться возможностями языка программирования Visual Basic for Applications (VBA).

В процессе решения поставленной задачи нам требовалось решить несколько проблем.

Проблема № 1. Пользователи (по итогам аудиторской проверки) размещают на файловом ресурсе электронные документы с разными расширениями файлов и разными названиями, что затрудняет поиск необходимых данных.

Решение – типизирование (с помощью VBA) размещаемых пользователем файлов перед их загрузкой на ресурс. А именно, пользователь размещает необходимые для загрузки файлы в папку на ПК пользователя. Программа просит указать путь к папке через кнопку «Обзор», считывает файлы пользователя из папки и запаковывает их в архив заданного формата (в нашем случае – zip).

Указываем путь к WinRar
Const sWinRarAppPath As String = "C:\Program Files\WinRAR\WinRAR.exe"
Обозначаем переменные для архивирования, запрашиваем путь к папке с файлами
Dim PathFolder As String
PathFolder = ПутьКПапке$ 
Dim ArchName As String

Проблема № 2. Название архива должно однозначно определять принадлежность к аудиторской проверке (для быстрого и удобного поиска на ресурсе), также необходимо исключить ошибки пользователей при наименовании архива документов.

Решение – для исключения ошибок пользователейшаблон имени архива встраивается в программу, а пользователю выводится сообщение с предложением ввести только пятизначный номер проверки (год проведения проверки уже задан в шаблоне):

Указываем шаблон имени архива и выводим сообщение пользователю

ArchName = InputBox («20-XXXXX», «Введите номер архива»)

Call FolderToRAR (PathFolder, «20-XXXXX» & ArchName)

Переходим к архивированию и созданию архива формата zip

Function FolderToRAR(ByVal sPath As String, ByVal sArchName As String)
Dim sArhiveName As String
Dim sWinRarApp As String
sWinRarApp = sWinRarAppPath & " A –ep –afzip "
Dim ParentPath As String
ParentPath = Left (sPath, InStrRev(sPath, "\") – 1)
sArhiveName = ParentPath & "\" & sArchName & ".zip "
Добавляем двойные кавычки, что позволит нам работать с именем файла и путем, которые содержат пробелы.
Без кавычек пробелы недопустимы.
FolderToRAR = Shell (sWinRarApp & " """ & sArhiveName & """ """ & sPath & """ ", vbHide)
End Function

Результат работы программы следующий:

  1.  пользователь выкладывает файлы-итоги аудита в папку на своем ПК,
  2. запускает программу,
  3. программа просит указать пункт к папке с файлами:

4. пользователь указывает путь к папке, программа запаковывает файлы из папки в архив формата zip и просит пользователя ввести пять цифр кода проверки:

20-XXXXX, Введите номер архива

5. пользователь вводит код, программа присваивает название архиву и помещает его в папку с исходными документами.

Программа сформировала архив документов по аудиту №35, проведенному в 2020 году.

Вот так, благодаря такой нехитрой программе обеспечивается формирование архивов требуемого формата (zip) с определенным названием (в шаблон названия встроены год проведения проверки и пятизначный номер проверки). Это позволило существенно сэкономить дисковое пространство электронного ресурса для хранения результатов аудита и аудиторских доказательств, а также обеспечить быстрый и удобный поиск необходимых материалов.

Советуем почитать