Как часто в горестной разлуке,В моей блуждающей судьбе,Комплект КД, я думал о тебе! Итак, в предыдущей статье я остановился на автоматизации отдельного документа и пообещал рассказать о том, как удалось организовать работу с  комплектом разнородных документов при помощи вспомогательной базы Excel и  как оказалось возможным делать комплекты документов вообще не открывая  Word. Под комплектом я здесь понимаю набор файлов форматов Word, Visio и AutoCAD, относящихся к одному общему проекту или изделию. То есть те файлы, которые представляют документы с одинаковыми, взаимно синхронизируемыми текстовыми полями. Далее, я буду называть этот комплект - автоматизированным комплектом документов или АКД. Давайте посмотрим, как выглядит АКД в проводнике Windows. Обратите внимание на файл variables.xls. Именно здесь располагаются все переменные, которые мы хотим централизованно распределять по нашему комплекту. В этом файле, при работе макросов VBA Word, Visio, AutoCad - автоматически создаются страницы, соответствующие этим файлам и содержащим все специфические переменные этих файлов. Есть два нюанса. Первый - страница "All". Она понадобилась для того, чтобы сохранять переменные, которые одинаковы для ВСЕХ без исключения документов АКД. Например, для переменной vObj - Объект проектирования = Зал славы. :)) Второй нюанс - для документов Visio вкладка создается для каждой страницы документа, так как обычно достаточно удобно держать все схемы проекта в одном файле. В принципе, никто не мешает разнести эти схемы и по разным файлам, но в Excel попадут все равно названия страниц этих документов. Ну и дополнительно, чисто для эстетики, цвета вкладок-листов Excel соответствуют типам файлов. Например, синие - это Word.  Так как в предыдущей статье я уже рассказал о принципе формирования и обработки полей-переменных, то сейчас расскажу только о дополнительных вещах, относящихся к работе с файлом переменных. На следующем рисунке показана связь переменных, которые мы создаем с файлом variables.xls. Имя файла может быть любым и оно задается в основном окне макроса - в нижнем белом поле.  Методом проб и ошибок я пришел к такой организации работы со своим "детищем": Создается новый файл. Как правило, уже на основе имеющегося шаблона.  В окне макроса нажимается кнопка "Сохранить". При этом в фале переменных автоматически создается новая вкладка для этого файла и на нее заносятся имеющиеся в документе переменные. Если эти переменные уже есть на вкладке "All" - то они не вносятся на персональную вкладку документа. После сохранения, все "персональные" переменные документа отображаются и редактируются на вкладке окна макроса "Локальные". Общие переменные АКД - отображаются на вкладке "Общие". (Кстати, там они не редактируются, а только отображаются, во избежание ошибочных изменений, которые затронут весь комплект) Если я хочу сделать какие-то из переменных документа - общими, то я просто потом перехожу в файл Excel и перетаскиваю их строки с листа документа на лист "All". А если я хочу переопределить общую переменную персонально для конкретного файла, например, если везде разработчик один и тот же, но в единственном документе он другой то я копирую строку с листа "All" на персональную вкладку этого самого "особенного" документа. Такое повторяется для каждого документа комплекта (если комплект создается "с нуля". Если комплект типовой - то вообще ничего делать не надо, только в Excel или в окне макроса переменные менять.) Ниже приведу, для примера, код функции, которая обеспечивает занесение переменных  документа в файл. На всякий случай, сообщаю - я не профессиональный программист. Поэтому представленный код не является образцом для подражания и периодически балует меня окнами ошибок. Однако, моя идеология программирования заключается в том, чтобы не делать код таким, чтобы он вносил непоправимые ошибки в документы. Соответственно, по мере возникновения ошибок, я просто вношу соответствующие правки в код и работаю дальше. Как и в случае немодального окна макроса, я делаю Excel доступным для редактирования во время работы. Произвольным образом, при этом, могу редактировать значения переменных там, где мне удобно. Итого, проработав все документы комплекта, мы получаем каталог файлов и один управляющий Excel-файл для централизованного внесения изменений. В некоторых случаях, комплекты получаются таковы, что отредактировав файл переменных можно избежать работы в Word полностью. Разве что придется открыть эти файлы, нажать кнопку макроса "Обновить" и убедиться в корректной подстановке значений в поля перед печатью этого документа. Теперь давайте посмотрим, что можно сделать, если какой-либо документ комплекта требует специфической проработки. Например, это, в моем случае, будет таблица соединений и подключений. Заполнять строки таблицы в Word мне неудобно, я лучше это сделаю в Excel. Тем более там можно произвести расчет значений, например, длин кабелей по формулам, автоматом пронумеровать по возрастанию порты, и т.п. Для переноса этой информации в Word - я сделаю макрос импорта таблицы. При этом, так-как операция эта специфическая именно для "таблицы соединений", то этот макрос я буду создавать именно в этом файле, в файле шаблона таблицы, а не глобально в normal.dotm. Принцип работы этого макроса заключается единственно в том, чтобы взять диапазон выделенных предварительно в Excel строк и перенести в заготовку таблицы, имеющуюся в шаблоне документа. При этом, если шаблон сделан правильно (а он сделан правильно), то при заполнении таблицы на первом листе, новые строки таблицы появятся на вновь созданном втором (третьем, четвертом, ...) листе (причем этот лист будт сделан уже с другими форматными рамками, соотвтетсвующими последующим листам ЕСКД, с маленькой нижней рамкой основной надписи). Еще один специфичный документ - спецификация. Часть его заполняется на основе шаблона тем же макросом что и таблица кабелей (именно поэтому, если вы обратили внимание, там в названии макроса стоит Buildspec) Здесь можно дополнительно сделать формирование списка документации, который... правильно! Соответствует набору вкладок в файле variables.xls. Поэтому очередной специфический макрос для документа "спецификация" будет осуществлять просмотр листов-вкладок "Excel" и в порядке следования занесет их в таблицу "Документация". Названия, коды, примечания - будут взяты из соответствующих переменных, введенных ранее для этих документов. В комплекте документов есть еще ряд файлов Visio и AutoCAD. Работа с ними отличается от работы с Excel и Word, что само собой разумеется. И эти отличия заслуживают отдельного рассмотрения.  В следующей статье, я опишу принципы и некоторые детали реализации автоматизации Visio - документов. В том числе работу с шаблонами и Stencils-ами.