1. Уважаемый гость! Если во время регистрации на сайте возникли проблемы, сообщите о них, пожалуйста, сюда: mihail@vilejski-uezd.by Вам обязательно помогут!

Автоматизируем индексацию метрических книг

Опубликовал Andzej в Блог Andzej. Просмотров: 3692

Фабула.

Когда я начал свои генеалогические изыскания в архиве, то думал, что мне вполне хватит листов белой бумаги и ручки, чтобы записывать найденных персон. Но потом, когда стало понятно, что чтение МК затягивается не на один час, тем более если при этом ещё вести какие-то записи, встал вопрос ускорения процесса из-за дефицита времени. Ускорение записи приводило лишь к усугублению их нечитаемости, которая увеличивалась, если через пару дней к этим записям возвратиться. Поначалу, я пытался дома переводить всё в формат книг Excel. Но это была двойная работа, сначала записать всё в архиве, потом это же переписать дома в электронном виде. Потом, когда поисковых фамилий становилось всё больше, возникли трудности фиксированием персон, тупо не хватало времени. Тем более если стараться посмотреть ещё кому какие фамилии. Эти обстоятельства и послужили причиной написания своеобразного макроса для Excel, для автоматизации процесса переноса информации из первоисточников в электронный вариант.

Описание макроса.

Макрос находиться в книге Excel, которая будет в конце данной записи и Библиотеке. Книга по дефолту имеет название AddBirth.xlsm и в своём составе имеет два листа - main и settings.

[​IMG]
На листе main есть кнопка "Добавить запись о рождении" и шаблон шапки таблицы результатов. Не меняйте её, иначе правильная работа макроса не гарантирована!.
Лист settings используется как своеобразное хранилище списков вводимых имён, фамилий и другой информации. Заполняется как во время работы макроса, так и самостоятельно.

[​IMG]
По дефолту в соответствующих столбцах есть кое-какие имена, они подгружаются потом в форму, для того, чтобы ускорить их набор с помощью автодополнения. Можно ручками добавить свои значения в нужные колонки. Я разделил фамилии для персон женского и мужеского пола в виду отличия в окончаниях. Тоже сделал и с отчествами.

UPD от 22.01.2016: если у вас есть списки, например населённых мест, и вы хотите вставить их на лист, то делайте это с третьей строки, вторая строка должна оставаться пустой. Иначе при автоматической сортировке списка шапка списка будут отсортирована. Не смертельно, но всё же.

Если нажать на кнопку "Добавит запись о рождении" на листе main, то откроется следующая форма:

[​IMG]

Навигация по форме с помощью мыши или, что предпочтительнее для скорости, клавиши Tab для прямого порядка обхода и Tab+Shift для обратного. Если нужно отметить соответствующий check - нажимаем на клавишу Enter, когда нужный элемент в фокусе. Таким же образом флажок можно снять.
Теперь о каждом фрейме по отдельности.

Сперва нужно выбрать пол ребёнка. Без этого выбора при нажатии на кнопку "Добавить запись" вам будет предложено это сделать и запись в таблицу добавлена не будет. Также, если сразу не выбрать пол, в поля фрейма ребёнка не подгрузятся списки имён и фамилий с листа settings. Поле второе имя по дефолту отключено, если в записи должно быть второе имя, то нажимайте на кнопку "Настройки", где включите соответствующую опцию. Если поставить флажок напротив пункта "незаконно рожденный" соответствующая отметка появится в таблице, а также отключится фрейм с информацией об отце.

Фрейм отца, как впрочем матери и восприемника, дополнительно содержит поле "Отчество", которое по дефолту отключено. Включается всё в тех же "Настройках". Поле "Сословие" содержит перечень встреченных мной вариантов указания на сословие. Список можно вручную отредактировать на листе settings, но стоит ли? По дефолту выбрано крестьянское сословие, ввиду того, что основная масса персон именно крестьяне. Поле "Фамилия" не связано как-то с тем же полем ребёнка, потому что для мужского и женского пола у меня свои формы фамилий. Можно было конечно дописать проверку условия совпадения пола ребёнка и отца, но пока как есть.

Фрейм восприемницы содержит два поля с фамилией. Я для себя условился, что если в МК не указано, что восприемница супруга такого-то, то она девка и значит её фамилия девичья.

Фрейм "дата и место рождения" имеет одну очень важную кнопку "Задать год". Когда её нажать, появляется InputBox с предложением ввести год рождения. Ввести можно только числовые значения состоящие из четырёх символов и в пределах от 1600 до 1950. Это обязательный параметр. После ввода года рождения, нужно ввести год крещения в таком же диалоговом окне. Так же обязательный параметр, даже более обязательный, т.к. на основании введённого года крещения, принимается решение - нужно новый лист создавать или такой лист уже есть. Раздельный ввод года рождения и крещения введён по причине того, что в начале января часто крестили прошлогидних новорожденных. В этом же фрейме есть два поля для отражения географии рождения. Поле "тип н.п" введён из-за того, что иногда застенок и деревня имели одинаковое названия, и если не указать тип населённого пункта, то потом можно запутаться.

Вкратце об элементах формы всё. Теперь о главной фишке этой затеи. Допустим у вас пустой лист settings и дефолтный main. Вы начинаете индексировать книгу, в поля формы подгружать нечего. Поэтому все поля заполняются лично вами полностью. Далее нажимаете на кнопку "Добавить запись". Подпрограмма берёт значение введённого года крещения и сравнивает с названиями уже имеющихся в книге листов. Т.к. у вас только main и settings, автоматически создаётся новый лист, у которого название совпадает с годом крещения. На этом листе создаётся шапка таблицы, по образу и подобию шапки, которая есть на листе main. Далее под этой шапкой добавляется запись, которая нумеруется. По нумерации хорошо себя контролировать, сверяясь с номером записи в МК. Иногда пропускаешь запись, поэтому нумерация это хорошо. Далее, по каждому значению, введённому в поля ФИО и название н.п. поочерёдно проводится поиск в соответсвующих столбцах листа settings. Если таких значений не было, происходит их добавление в соответствующий столбец и сортировка столбца по алфавиту. Далее отсортированные списки готовы для подгрузки в поля формы. И в следующий раз, когда вы будете начинать вводить такие же значения, Excel вам предложит автодополнение вводимого значения на основании значений, подгруженных в данное поле. Это-то и ускоряет набор.

Кстати, задавать год крещения/рождения каждый раз не обязательно. После нажатия на кнопку "Добавить запись" форма не выгружается из памяти, поэтому значения введённых вами лет сохраняются. Но! Следует всегда помнить, что в первой записи почти всегда год крещения и рождения будет разным, поэтому рекомендую переназначать эти числа, пока год рождения и крещения не начнут совпадать. После нажатия на кнопку "Отмена" форма выгружается из памяти, поэтому после этого вводить год обязательно.

Если за один подход проиндексировать МК не получилось, ничего, можно продолжить в следующий раз. Добавляются строки автоматически в конце таблицы соответствующего года.
Листы добавляются в порядке возрастания дат. Тобишь, если сначала вы вводили книгу за 1850 год, а потом решили ввести за 1845, то лист для 1845 года добавиться перед 1850 годом. Лист для 1848 года будет добавлен между 1845 и 1850.

Рекомендую один файл использовать для одного прихода. Причём в одной книге должно быть отражено не более 10 лет. Совсем замечательно, если в книге будут листы, например от 1850 до 1859, и т.д. Т.е. Если у вас есть две МК книги, одна за 1845, другая в 1865, желательно для их индексации использовать две разные книги.

Конечно же, в Excel должна быть включена поддержка макросов, иначе ничего работать не будет.

Прошу протестировать и поделиться соображениями в комментариях.

Провёл замер времени по набору МК. При изначально чистом листе settings книга из 90 записей, в которой нет разбивки по колонкам, отняла около трёх часов. Книга за следующий год - 2 часа.

UPD: выловил одну ошибку (путаница с женскими и мужскими формами фамилий в поле "Фамилия по мужу" фрейма восприемницы, перезалил файл.

https://drive.google.com/open?id=0Bz7aGRSmDX4jLWhKNlJ1eFJmUlU
  • Сергей Гулецкий
  • Сергей Гулецкий
  • Andzej
  • Олег
  • Andzej
  • Олег
  • Сергей Гулецкий
  • Andzej
  • Сергей Гулецкий
  • Boocha
  • Andzej
You need to be logged in to comment