{"id":19099211,"url":"https://github.com/diev/excel-vba-collection","last_synced_at":"2026-03-19T08:06:34.094Z","repository":{"id":109041610,"uuid":"78167734","full_name":"diev/Excel-VBA-Collection","owner":"diev","description":"Коллекция макросов Excel VBA.","archived":false,"fork":false,"pushed_at":"2017-09-29T13:46:13.000Z","size":286,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-22T09:45:49.755Z","etag":null,"topics":["bas","cbrf-converter","cls","dbf","excel","macros","menubar","russian","vba","xlsm"],"latest_commit_sha":null,"homepage":"http://diev.github.io/Excel-VBA-Collection/","language":"Visual Basic","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-06T02:48:30.000Z","updated_at":"2024-10-20T11:55:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"2b232adc-7261-4cb8-a684-52524628d14e","html_url":"https://github.com/diev/Excel-VBA-Collection","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/diev/Excel-VBA-Collection","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diev%2FExcel-VBA-Collection","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diev%2FExcel-VBA-Collection/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diev%2FExcel-VBA-Collection/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diev%2FExcel-VBA-Collection/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diev","download_url":"https://codeload.github.com/diev/Excel-VBA-Collection/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diev%2FExcel-VBA-Collection/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29882646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T23:51:21.483Z","status":"online","status_checked_at":"2026-02-27T02:00:06.759Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bas","cbrf-converter","cls","dbf","excel","macros","menubar","russian","vba","xlsm"],"created_at":"2024-11-09T03:49:08.855Z","updated_at":"2026-02-27T02:03:53.662Z","avatar_url":"https://github.com/diev.png","language":"Visual Basic","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [Коллекция макросов Excel VBA](http://diev.github.io/Excel-VBA-Collection/)\n\nФормат DBF, конечно, давно уже умер, но Федеральные службы РФ все еще охотно \nего используют. Например, ФСФМ (ФинМониторинг) требует отправлять ему файлы \n\"в формате DBF\", где 244 поля, и некоторые из них - типа C 254. Большинство \nдревних утилиток для обработки DBF сходят с ума от таких объемов, а Excel \nникогда не сохранял требуемую структуру, более того - еще и даты часто \nковеркает. Так что даже открыть и посмотреть такой файл - целая проблема, \nа уж подкорректировать и сохранить как предписано - еще сложнее.\n\nВ итоге была написана эта программа для ручной обработки DBF, ни на кого не \nнадеясь. Вернее, это была написана когда-то целая система Банк-Клиент на VBA \nExcel, и коллекция разных макросов из нее все еще на что-то годится, гибко \nобрабатывая типично русские превратности (типа суммы с разделителями любого \nвида, а не только того, что жестко задан в системе, да еще зависит от текущей \nязыковой раскладки, как это бывает сделано у многих программеров, далеких от \nреальных работников).\n\n![dbf161p2015.png](docs/assets/images/dbf161p2015.png)\n\nНа картинке выше обрабатывается файл в формате Приложения 4 \"Структура файла \nпередачи ОЭС\" к Положению Банка России от 29 августа 2008 г. N 321-П \n\"О порядке представления кредитными организациями в уполномоченный орган \nсведений, предусмотренных Федеральным законом \"О противодействии легализации \n(отмыванию) доходов, полученных преступным путем, и финансированию \nтерроризма\". Помимо работы с таким форматом, программа также осуществляет \nконтроль правильности заполнения полей по требованиям этого Положения \nнесколькими способами.\n\nВы можете взять готовый бинарный файл XLSM с этой программой из Downloads\nи при запуске обязательно разрешить макросы - только тогда появится меню\n\"Надстройки\". Если боитесь запускать чужие бинарные файлы и макросы (и это \nправильно!) - открывайте редактор VBA в своем Excel (может понадобится в \nНастройках включить меню \"Разработчик\") и импортируйте туда прилагаемые \nисходные тексты (здесь они все в кодировке UTF-8).\n\n## Как использовать\n\nРаньше эта программа добавляла свою полосочку с кнопками меню, и все было \nзамечательно. Затем Microsoft изобрела новый Ribbon, и пользовательское меню \nэтой программы оказалась задвинута куда подальше - ищите в меню \"Надстройки\" - \nкак это показано на скриншоте выше. И не забудьте разрешить макросы - иначе \nничего не появится!\n\n### Меню \"Надстройки\"\n\n1. Загрузить - *загрузить из файла DBF, указанного в ячейке A1, или запросить \nего имя, если там пусто (текущее содержимое будет очищено)*\n2. Добавить - *добавить из файла DBF, указанного в ячейке A1, или запросить \nего имя, если там пусто (текущее содержимое сохранится и будет дополнено)*\n3. Просмотр - *просмотр всех полей на одной форме с индикацией ошибок*\n4. Печать - *преобразовать выделенную строку в таблицу на отдельном листе \nдля печати (одна из самых насущных функций и нравится проверяющим из ЦБ)*\n5. Проверить - *проверить ячейку за ячейкой по заранее составленному перечню \nправил с индикацией нарушения и возможностью исправить*\n6. Сохранить - *сохранить в файл DBF, указанный в ячейке A1, или запросить \nего имя, если там пусто (файл будет сформирован с той структурой, которая в \nстроке 3 - описание см. ниже)*\n7. Передать в Комиту - *сохранить в файл DBF и передать в папку для импорта \nв Комиту (специализированный АРМ Финмониторинга)*\n8. Отправить в ЦБ - *сохранить в файл DBF и передать в папку для отправки \nна подпись, шифрование и далее в ПТК ПСД для отправки в ЦБ*\n\n### Загрузка и сохранение\n\nЕсли в ячейке A1 есть имя файла, при нажатии кнопки \"Загрузить\" - будет \nзагружен именно этот файл. Если ячейка пуста - будет диалог выбора файла. \nПри сохранении - аналогично. Файлы подразумеваются структуры DBF, хотя \nрасширение их иное!\nИ никогда не сохраняйте DBF через меню самого Excel - он запишет в своей \nсобственной структуре, подогнанной под текущие данные, но не в той, которая \nрегламентирована.\n\n### Работа со структурой\n\nОдна из строк (третья на скриншоте) - структура загруженного DBF-файла, \nсостоящая из столбцов-полей следующего вида:\n\n`\u003cНазвание поля\u003e \u003cТип поля\u003e\u003cРазмер поля\u003e`\n\nНазвание отделяется от типа (поддерживаются C, D, L, N) пробелом, размер \n(в байтах) слитно с типом (у N может быть дробная часть после точки). \nТип и размер - или Вы знаете, о чем речь, или это есть в документации по \nзаполнению отчетности. Таким образом, Вы можете прочитать любой DBF-файл \n(без МЕМО), создать новый или сохранить с новой структурой.\n\nДанные Вы можете копировать и вставлять какие угодно. Сохранение будет \nпроисходить в соответствии с указанной выше строкой описания структуры.\n\n### Полезные мелочи ###\n\nПопутно эта программа (и это основная ее нынешняя функция) проверяет данные \nпо некоему набору логических правил, сильно облегчая жизнь отделу \nфинмониторинга - даже в условиях существования других покупных монстров \nтипа упомянутой Комиты, которые именно эти-то правила и пропускают мимо.\n\nВсе прочие исходные файлы, уже никак не относящиеся к этой задаче, убраны в \nпапку **BClient** - на случай, если понадобится еще что-то из наработанного \nранее.\n\nТакже там есть папка **Turniket**, где находится модуль подчистки грязных \nвходных данных из разных источников СКУД и готовится финальная отчетная \nтаблица с учетом отработанного времени сотрудниками для отдела кадров.\n\n## Исходные тексты модулей\n\n### Microsoft Excel Objects\n\n* ЭтаКнига.cls - *всего две функции: добавить меню при загрузке Workbook и \nубрать его по ее закрытию*\n\n### Forms\n\n* UserForm1.frm - *форма полноэкранного просмотра записей*\n\n### Modules\n\n* Base36.bas - *работа с 36-ричными числами, популярными в Банке России*\n* Bytes.bas - *работа с байтами - для CWinDos*\n* ChkData.bas - *правила логического контроля настраивать здесь*\n* CWinDos.bas - *ручная перекодировка 1251-866 с псевдографикой и фишками ЦБ*\n* DBF3x.bas - *ручная работа в файлами DBF версии 3, загрузка и раскраска их, \nсохранение с заданной структурой*\n* Export.bas - *пути экспорта*\n* KeyValue.bas - *вычисления ключа счета, ИНН*\n* Main.bas - *начальные инициализации классов, действия по завершении*\n* MenuBar.bas - *пункты меню*\n* MiscFiles.bas - *есть ли файл на диске, выбор файла и т.п.*\n* MsgBoxes.bas - *разные красивые диалоги*\n* Printf.bas - *аналог функции из языка Си*\n* RuSumStr.bas - *чтение суммы в любом формате, сумма прописью - для платежек*\n* SheetUtils.bas - *набросок макроса для сокращенной печати*\n* StrFiles.bas - *работа с именами файловой системы*\n* StrUtils.bas - *работа со строками*\n* TextFile.bas - *работа с текстовыми файлами*\n\n### Class Modules\n\n* CApp.cls - *класс приложения с константами и параметрами*\n\n## License\n\nLicensed under the [Apache License, Version 2.0](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiev%2Fexcel-vba-collection","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiev%2Fexcel-vba-collection","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiev%2Fexcel-vba-collection/lists"}