Автоматизация создания документов Word по шаблону


Краткое описание

Макрос на основе шаблонов в формате Word и по заданному списку значений в Excel формирует необходимое количество вордовских документов. Количество формируемых файлов неограниченно и зависит только от числа указанных вами параметров в Excel.


Подробное описание

Если по роду деятельности часто приходится формировать какие-либо документы в Word по шаблону (приказы, распоряжения, договора, соглашения, счета и др), то вам может пригодится макрос для автоматизации создания вордовских документов на основе исходных данных в файле Excel.

Макрос удобно и быстро создает необходимые документы, исходя из указанных шаблонов и настроенных параметров.

       - Шаблоны задаются в формате Word. Количество одновременно используемых шаблонов неограниченно.
       - Настройки (параметры) для подстановки в шаблоны хранятся в файле эксель. Может быть задано неограниченное количество параметров.

Из дополнительных возможностей макроса:

       - В настройках листа с данными достаточно указать название шаблона и именно данный шаблон будет применен для формирования документов. Если шаблонов указано несколько, то формирование документов будет происходить по нескольким (указанным) шаблонам.
       - В настройках макроса можно указать, по каким строкам формировать документы, а по каким пропускать.
       - Для каждого формируемого документа можно указать необходимое имя (название).
       - Для более удобной вставки наименований шаблонов в ячейку достаточно два раза кликнуть на соответствующей ячейке в столбце "C" и в открывшейся форме выбрать нужные шаблоны.

В целом, ничего сложного в работе с макросом и шаблонами нет.
Перед запуском макроса обязательно ознакомьтесь с примечаниями в пункте "Важно" на листе "const".

Скачать макрос эксель для создания документов и примеры шаблонов можно по ссылке выше.

Вернуться к списку примеров

Комментарии ()

  1. Констанин 04 августа 2017, 14:31 # 0
    Спасибо огромное. макрос очень помог, давно искал.
    1. Maxim 04 августа 2017, 14:54(Комментарий был изменён) # 0
      Да, макрос при должном применении очень упрощает автоматизацию создания типовых документов. К тому же, его легко масштабировать.
      Будем возможность, поделитесь ссылкой на данную страницу в соц. сетях или иных интернет источниках. Поможете проекту в развитии.
    2. Юрий 31 августа 2017, 12:38 # 0
      Добрый день! Вчера искал что то подобное вашему макросу в интернете, наткнулся на эту страницу. Возился вечер утро, а макрос не работает) я так понял ошибка возникает при копировании ячейки размером более 255 символов, поможете допилить? Буду бескрайне благодарен и запощу отзыв о Вас везде где смогу ;)
      1. Maxim 10 сентября 2017, 20:37 # 0
        Здравствуйте, Юрий.
        Посмотрел. Да, это из-за превышения 255 символов. Но это не ошибка макроса. В данном случае, это ограничение самого ворда. Если вы попробуйте вручную в вордовском документе через функционал «поиск — замена» сделать аналогичную замену, то ворд обрежет вашу строку до 255 символов.
        Как альтернатива, либо переписать весь код макроса (что лично мне не целесообразно в данном случае), либо разбивать вашу исходную строку на большее количество меток, что при замене не превышать лимит в 255 символов.
      2. Тимур 15 сентября 2017, 11:03(Комментарий был изменён) # 0
        При первом запуске вышло сообщение: «В книге обнаружено содержимое, которое не удалось прочитать. попробовать восстановить содержимое?»
        После чего появилось окошко с надписью:
        Удаленный компонент: Компонент /xl/styles.bin. (Стили)
        Восстановленные записи: Сведения о ячейках из части /xl/worksheets/sheet1.bin
        Восстановленные записи: Сведения о ячейках из части /xl/worksheets/sheet2.bin

        Далее, при попытке сформировать документы (даже ничего не меняя, кроме пути на шаблоны), вылетает ошибка на буржуйском языке. Дескать, не найден прожект или библиотека. Выделена строка Microsoft Forms 2.0 Objekt Library.

        Что я делаю не так?
        1. Maxim 18 сентября 2017, 01:09(Комментарий был изменён) # 0
          А какая у вас операционная система и версия Excel?
          Данный макрос работает вполне успешно на Windows 7 и выше и в Excel 2007 и выше.
          Также возможно, либо настройки безопасности вашего экселя режут макросы либо ваш антивирус.
          1. Тимур 18 сентября 2017, 03:17 # 0
            Используется MS Office 2007. Пробовал на Win XP и Win 7. Антивирус отключал. В настройках безопасности макросы включены.
            1. Maxim 18 сентября 2017, 17:30 # 0
              Если у вас на ПК установлен TeamViewer, могу сегодня вечером (время по МСК) к вам удаленно подключиться и посмотреть, что да как. Если что, пишите на info@excelstore.pro
              1. Валера 27 сентября 2017, 12:05 # 0
                Такая же ситуация подскажите как исправить
                1. Maxim 28 сентября 2017, 16:23(Комментарий был изменён) # 0
                  У вас тоже Excel 2007 и Win 7?
        2. Данил 22 сентября 2017, 12:09 # 0
          При первом открытии, при двойном нажатии на столбец С (в котором перечислены шаблоны для обработки) вылетает exception run-time error '94': Invalid use of Null. При дебаге показывает, что ошибка в строке DesktopMonitor.ScreenHeight = Item.ScreenHeight, в функции GetDesktopMonitor().
          А при нажатии на кнопку Сформировать документ операция проходит, но папка Result пуста. В чем может быть проблема?
          1. Maxim 22 сентября 2017, 16:28(Комментарий был изменён) # 0
            1. «папка Result пуста».
            На листе const в ячейке E3 проверьте путь к вашей папке с шаблонами. Указанная папка должна существовать и в ней должны быть расположены шаблоны word с наименованиями, которые обозначены в ячейке E4.

            2. «Invalid use of Null»
            Проверил сейчас на двух компьютерах, всё работает. Почему у вас данная ошибка — не могу сказать.
            Точно, что данный функционал никак не влияет на формирование файлов. Двойной клик по ячейке в столбце C — это исключительно для удобства заполнения ячейки нужными именами шаблонов. Если не сможете решить проблему с двойным кликом, можете заполнять ячейке в этом столбце вручную (разделитель точка с запятой, как в примере). Как вариант решения — переписать блок кода, отвечающий за позиционирование окна всплывающей формы.
          2. Gu-Dron 23 октября 2017, 16:18 # 0
            Спасибо очень помогли, такой вопрос нельзя ли так же сделать, что бы можно было подставлять данные в колонитулы?
            1. Maxim 01 ноября 2017, 11:09 # 0
              В следующем обновлении макроса учту данную доработку.
            2. Артут 31 октября 2017, 20:27 # 0
              здравстуйте, а как-нибудь можно сделать чтобы в 2003 office работал?
              1. Maxim 01 ноября 2017, 10:59 # 0
                Здравствуйте. Как-нибудь конечно можно. Код макроса открыт, можете попробовать доработать самостоятельно. Либо можете обратиться ко мне (email: info@excelstore.pro), обсудим вопрос платной доработки.
                В иных случаях, мне дорабатывать под офис 2003 не актуально, т.к. версия данного офиса всё дальше уходит в прошлое и людей, использующих эту версию, всё меньше.
              2. Иван 18 января 2018, 17:56(Комментарий был изменён) # 0
                Добрый день. Не создает фалі, окно с текстом что файлі сформировані віскакивает, жму ок, и ничего. В чем может біть дело? Спасибо
                1. Иван 18 января 2018, 19:01 # 0
                  Разобрался, вопрос с именем файла остался, как реализовать, чтобы название файла делалось Договор№[номер договора], именно так пробовал, так и создает, без номера, а с текстом [номер договора]?
                  1. Maxim 23 января 2018, 10:50(Комментарий был изменён) # 0
                    Добрый день.

                    За сохранение файла в коде отвечает строка:
                    iWord.SaveAs filename:=BasePath & MyArray(i, 2) & " — " & tmpArray(q) & ".docx", FileFormat:=wdFormatXMLDocument

                    Соответственно, чтобы файл сохранялся под именем «Договор №[номер договора]», нужно написать:
                    iWord.SaveAs filename:=BasePath & «Договор №» & MyArray(i, 5) & ".docx", FileFormat:=wdFormatXMLDocument

                    Это при условии, что номер договора у вас указан на листе data в столбце E
                2. Вячеслав 02 марта 2018, 14:18 # 0
                  Добрый день.
                  Прекрасная работа спасибо, очень упрощает работу, единственный нюанс с которым я столкнулся, это данные которые указываю в екселе в разных форматах (процентный, числовой и т.д.), то они переносятся в документ не в том виде в котором в екселе, а в общий вид переводит. В итоге подставляются совсем не те данные. Так же, если уменьшаешь кол-во нолей после запятой, то при переносе эти данные так же игнорируются(.
                  Это можно как-то исправить?
                  1. Maxim 02 марта 2018, 15:52 # 0
                    Здравствуйте.
                    Только через правку кода макроса.
                    Суть правки — добавить в макрос функционал, чтобы период отправкой в Word шла проверка текущего формата ячейки Excel и в Word, соответственно, потом шла вставка не значения ячейки (как сейчас), а уже отформатированного текста.
                    Правка, в целом, не сложная. Можете поправить самостоятельно (код открыт). Либо я поправлю позже (правда, не скажу точно когда, т.к. сейчас на это времени).
                    1. Вячеслав 02 марта 2018, 16:47 # 0
                      Если подскажите, что, куда и как, то думаю справлюсь, а так я макросами не владею(
                      1. Maxim 02 марта 2018, 17:49 # 0
                        Данная подсказка равносильно тому, что я сам внесу все правки :)
                        Я не держу весь код в голове. Чтобы понять, что править, мне также надо открывать и смотреть.

                        Раз такое дело, то: либо подождать, когда я найду свободное время и внесу необходимые правки в код, либо обратиться с вопросом на форумы по excel (код макроса открыт), либо я могу сделать нужные вам доработки за плату (если очень срочно надо). По вопросам платных доработок обращайтесь на info@excelstore.pro
                  2. Илья 03 апреля 2018, 21:39 # 0
                    Здравствуйте. Можно ли как то сделать, чтобы файлы в папке result после создания нового файла не удалялись? Я ни черта не шарю в программировании, поэтому искренне надеюсь на Вашу помощь.
                    1. Maxim 12 апреля 2018, 12:23 # 0
                      Здравствуйте. Да, это сделать несложно. Напишите мне на почту info@excelstore.pro ваш контактный email, я скину вам поправленный вариант.
                    2. Дмитрий 18 мая 2018, 11:00 # 0
                      Добрый день.
                      Почему то не работает выдает ошибку
                      complet error
                      Cant find project or library
                      1. Maxim 30 мая 2018, 11:04 # 0
                        Добрый день.
                        Сложно что-либо комментировать, не зная условий, в которых возникла указанная ошибка.
                      2. М 20 мая 2018, 15:04 # 0
                        Спасибище!!! Макрос что надо!
                        1. Georg 09 июня 2018, 11:49 # 0
                          Максим, добрый день.Спасибо за макрос, работает стабильно.
                          Нет ли у Вас версии этого же макроса, чтобы он работал с Excel 2010/Word 2010?
                          1. Максим, добрый день. не могу понять, где сохраняются документы. за ранее спасибо. 20 июня 2018, 09:28 # 0
                            Максим, добрый день. не могу понять, где сохраняются документы. за ранее спасибо.
                            1. Maxim 20 июня 2018, 20:25(Комментарий был изменён) # 0
                              Добрый день. В папке, из которой вы открыли макрос по окончании его работы автоматически создается папка «Result». Собственно, там и сохраняются сформированные документы.