[2021] Как заполнить Word шаблон из таблицы Excel Часть 1
Вставка
- Опубліковано 17 чер 2020
- Всем привет, в этом видео я наглядно покажу, как заполнить Word шаблон из таблицы Excel, покодим немного на VBA, в результате Вы сможете создавать ворд документы по шаблону на основе данных из Excel таблиц. Видео будет иметь продолжение, во второй части • [2021] Как заполнить W... модифицируем шаблон так, что бы текст находился в надписях(текстовые поля). Не пропустите!!!
Исходный код из этого видео тут - maxfad.ru/video-uroki/uroki-e...
• [2021] Как заполнить W...
📌Подпишись 👉 goo.gl/MZB7lu
📌Ставь 👍 и 🔔
📌Заходи 👉 maxfad.ru
Поддержать канал донатом:
ЮМани - yoomoney.ru/to/410016390585161
QIWI - qiwi.com/n/MAXFADRU
Поддержите канал лайком и репостом, ставьте класс, чтобы ролики выходили чаще, поделитесь этим видео со своими друзьями и подписывайтесь на канал !!! :-)
Всем привет, в этом видео я наглядно покажу, как заполнить Word шаблон из таблицы Excel, покодим немного на VBA, в результате Вы сможете создавать ворд документы по шаблону на основе данных из Excel таблиц. - ua-cam.com/video/a7VBuHRwgfU/v-deo.html
Добрый день. Есть ли возможность сделать то же самое, но без ворда? В экселе имеется бланк отчета, нужно сформировать несколько листов
В 4 части как раз показывал на реальном примере ua-cam.com/video/vGjPbbb-LRI/v-deo.html
замена идет только на один текст (параметр) Как сделать что бы во всех текстах было изменение
wdDoc.Range.Find.Execute FindText:="&rekID", ReplaceWith:=rekID$ (ReplaceWith нужно All)
Офигенное видео! Все очень четко и понятно, при этом без воды. Спасибо!
Супер, это то, что я искал.
Спасибо большое. Выручили. Очень пригодилось!
Вот это да, как всё просто, спасибо!) А то я по незнанию вообще написал самый колхозный код) Записал в ворде макрос по поиску и замене слова, типа нужной переменной, и за место цикла я просто копировал код на каждый документ со своим текстом, чтобы он выполнялся последовательно, сохраняя файл и отменяя все действия каждый раз, чтобы вновь осуществлять поиск с заменой для следующего файла) В итоге, такая километровая портянка даже не запустилась, хоть и рабочая в более коротком виде)
Спасибо большое, у меня получилось
Спасибо, крутое видео
Отлично 👍
Подскажите, а как сделать вывод результата в один документ? без формирования в отдельные док файлы?
Спасибо=)
Подскажите один момент, у меня в документе несколько одинаковых переменных (к примеру ФИО встречается 5 раз). Сделал шаблон по вашему уроку, но у меня меняются только первые переменные, а остальные идут с кодом &fio. Как мне сделать так чтобы менялись все данные?
А если я в процессе (через некоторое время после сохранения файлов) буду добавлять новые строки (5,6,7 и тд).То файлы с уже сохранеными строками будут сохраняться по новой? Если да, то как сделать, чтобы сохранялись файлы с только добавленными строками.
Справочно.Не используйте Option Explicit при записи подобных функций HomeDir$, он будет не допускать работу подпрограммы, рассматривая их как не объявленные переменные. Спасибо за урок!
Доброго дня. Можливо у вас є відео як вже в готовому ворді із вставленою таблицею ексель, зробити її форматом ворд?
Очень интересный урок. У меня вопрос. Как сделать так, что бы создавшийся документ ворд, автоматом распечатывался на принтере? Заранее благодарю.
Возможно ли таким способом вставлять в вордовский документ изображение из ячейки экселя? Например в эксель подгрузить изображения подписи каждого сотрудника и заполнить шаблон в ворд для каждого из них.
А возможно макросом из Excel вставлять в определенное место документа Word картинку из папки?
Спасибо за ролик и код. Подскажите пожалуйста, а почему операторы в файл шаблона переносят значения из excel только один раз? Например я задал оператор &data1 и в Excel задал значение 01.07.2021. По тексту шаблона требуется указать этот оператор несколько раз. При формировании файлов первый раз оператор &data1 отображается как 01.07.2021, а все последующие применения по тексту как &data1.
Что нужно сделать, чтобы каждый раз вставлялось значение?
Заранее благодарен.
Благодарю за комментарий, я уже с подобным вопросом сталкивался, если надо одну и туже информацию несколько раз добавлять, то в коде назначьте переменные типа data1, data2 со значением 01.07.2021 столько раз, сколько нужно. И в шаблоне их разместите, где нужно, скрипт в цикле пробежит по всем значениям и все заменит. Это не баг, это фича))
Здравствуйте, а как мне сделать так, чтобы заменяемый текст применял конечное форматирование не ворда, а именно эксель? Вот у меня в таблице, скажем, текст с жирным шрифтом, а заменяет текст в ворде, который обычный. Соответственно и форматирование применяется конечное, а не как в таблице.
Спасибо большое, несомненно хороший ролик получился. Снимите пожалуйста видео заполнение документов Эксель данными из Ворд. На примере заполнение уведомления миграционного учёта или какого-нибудь такого формата. Заранее спасибо.
Благодарю, информации в этом ролике вполне достаточно для создания бланков любого образца, пример с командировочным удостоверением можно трансформировать под любые свои нужды.
Подскажите пожалуйста, как сделать так, чтобы эти сформированные файлы улетали по почте аутлук на определенные адреса?
Здравствуйте!
Большое спасибо за такой подробный урок, очень помогло в решение задачи! У меня всё получилось, файлы заполненные появляются, однако почему-то сам Эксель после этого очень долго думает и показывает, что идёт какая-то загрузка ещё минуты две. Подскажите, в чем может быть причина? Сделал 3 строки и 3 столбца, странно, что он так долго думает. Код такой же, как у вас. Спасибо!
Добрый день! Подскажите, пожалуйста, почему код не работает при сохранении документов в формате docx?
FileCopy HomeDir$ + "\template.docx", HomeDir$ + "\" + NPP$ + "_" + ID$ + "_" + DataC$ + ".docx"
Set wdDoc = wdApp.Documents.Open(HomeDir$ + "\" + NPP$ + "_" + ID$ + "_" + DataC$ + ".docx")
у меня такая же проблема(((
Аналогично! Значит другой код нужен.
Подскажите, пожалуйста, можно ли сформировать таким образом всё содержимое в один файл (т. е. чтобы не было разбивки по каждой строке в отдельный файл)?
Расскажите подробнее, что за файл должен быть получен, как Вы себе это представляете.
@@kompiuterapiia В Вашем примере для каждой строки из таблицы Excel формируется отдельный файл Word. Можно ли сделать так, чтобы был сформирован один файл Word, а каждая строка была как отдельная страница в нём?
Для того, чтобы сделать один word файл с однотипными бланками не нужно использовать VBA, достаточно использовать Рассылку из штатного инструмента редактора. На вкладке лента есть такой пункт, в документе набрали нужный текст, в слиянии подключили Эксель таблицу с данными, указали где какое поле таблицы должно показываться в шаблоне и готово. Хотите печатайте, хотите пересохраняйте, для отправки по эл.почте. Мне нужны были файлы отдельно, поэтому я и формировал из каждой строки Эксель отдельный Ворд файл.
@@kompiuterapiia Огромное спасибо за ответ!
Прекрасны ролик! Подскажите, пожалуйста, а что нужно добавить, чтобы файлы word создавались в определенную папку?
Если не устраивает создание docx файлов в той же папке, где находится файл с данными, путь создания можно указать иным в модуле, в строках создания файла. Если нужно часто менять путь, я создаю новый лист с именем config и в конкретную ячейку его вписываю, а через переменную передаю его в строку создания файла.
Здравствуйте!
Подскажите пожалуйста,почему ворд формирует не больше 7 документов за раз?
Спасибо за отличный урок! Подскажите пожалуйста код открытия целевой папки после отработки скрипта.
Как вариант можно попробовать так: Shell "Explorer.exe d:\1", vbNormalFocus . откроем диск d и папку 1....
Спасибо большое, очень полезное и продуктивное видео получилось.
Подскажите ,пожалуйста, а знак % обязательно указывать после переменное i?
Поскольку переменную i я явно не объявлял как Dim i as Integer, то символом % я указал, что переменная это число. Можно так, можно иначе, мне 7 раз % написать было не сложно..)
@@kompiuterapiia , спасибо большое. Очень удобно, а то бывало, что надо использовать много переменных, а на их объявление уходит слишком много места в коде)
Спасибо огромное! Но пришлось отлаживать Ваш код. Я новичек, поэтому пришлось повозиться...В вашем коде не объявлены остальные переменные. Вопрос! Как сделать тоже самое, но из "умной таблицы" excel, чтобы создавался отчет по выделенной строке/диапазону строк из этой "умной таблицы"?
Здравствуйте, а как сделать если нужно заменить данные в сноске?
Добрый день. Подскажите а вы под заказ сможете написать шаблон из договора с автозаполнением .
День добрый, уверен, что посмотрев мои ролики, Вы сами сможете сделать свой шаблон и заполнить его необходимыми данными.
@@kompiuterapiia нет так как я хочу у меня неполучится, я хочу чтоб были определенные конкретные поля которые заполняются один раз и из них формировалась база в экселе и чтоб после уже можно было выбирать из базы клиента и формировать договор
замена идет только на один текст (параметр) Как сделать что бы во всех текстах было изменение
wdDoc.Range.Find.Execute FindText:="&rekID", ReplaceWith:=rekID$ (ReplaceWith нужно All)
Доброго дня!
Спасибо за видео урок, макрос пишет готово и выгружает файлы.
Но есть момент, при открытии выгруженного файла Word "код значения &" не поменялся на текст из ячеек Excel.
Где проблема, и как ее исправить!?
Нашел ошибку, все работает!!!
Отлично, очень помог код в плане создания word документа и передачи в него данных из excel, у меня вопрос по поводу даты, Run-time error '13': Type mismatch, как это исправить?
Используй в строках с копированием и открытием файла знак амперсанда вместо "+"
А есть у кого мысли. Если к примеру значение переменной &date пусто (ячейка пустая), то не выводить её в формирование?
Здравствуйте. Отличное видео, все вроде понятно, но работает только в формате doc, а docx не работает. И я бы хотел спросить, как сделать что бы документ сразу сохранялся в формате pdf? А то мне приходится после создания файлов преобразовывать их в pdf. Ещё раз спасибо за урок.
Насчёт doc и docx, с какими файлами работаете, в таком формате и происходит сохранение.
Здравствуйте ,у меня таккая проблема, программа работает,документы создаются,но значения не меняются ,подскажите пожалуйста а чем проблема ????спасибо заранее
Run-time error 53 File not found
Отличное видео. Спасибо. Подскажите, выдает ошибку 52, неправильное имя файла или номер. Подскажите, в чем может быть проблема и как ее решить. Имя файла верное и находится в одной же папке с файлом эксель
Вариантов почему так куча, проверьте в диспетчере задач не висит ли лишняя копия word, я с этим часто сталкивался, в описании под видео есть ссылка на архив с файлами из этого видео. Посмотрите, как они запустятся, но я работаю в 2013м офисе, это стоит учитывать, если ваша версия отличается. И всё-таки проверьте имя файла, не содержит ли оно недопустимых символов.
@@kompiuterapiia 2019 офис, да проблема была с наименованием. Все получилось и заработало. Спасибо за ваше видео. Буду и дальше смотреть и открывать для себя новое.
@@yaroslavivask6600 Добрый день. А что именно исправили? У меня 365 офис, и ошибка 52 выскакивает при работе на облачной папке (OneDrive) на локальной папке все работает.
А если у меня информация находится на 2-х листах в Excel, нужно как-то прописывать что информация должна собираться со 2 листа?
Нужно. Код не подкажу :(
Как вариант, собирать информацию из сводной таблици, которая собирает нужные значения с других листов
сделайте цикл выполнения заполнения для сбора переменных сначала с 1 листа затем со второго
Только ваше видео помогло, ваш код хорош, но есть вопрос, а если у меня в шаблоне несколько "&Adress" то ваш код заменяет только одну, первую по списку в шаблоне, а как сделать чтоб заменял несколько &Adress? Я не придумал ни чего как добавить еще &Adress2, &Adress3 ? а в коде скопировал и добавил еще пару строк уже с &Adress2, &Adress3. Вопрос как сделать чтоб макрос заменял все &Adress в шаблоне. Простите если не понятно написал, я чайник)
Как по мне идея с одноимённым заменяемыми значениями типа &adress2 и тд, вполне работоспособна. Действительно, можно пробежаться в цикле по всем одинаковым значениям, но это немного может замедлить работу макроса, проще присваивать заменяемые одноимённые значения и цифрами для отличия из переменной. Главное в коде располагать их в той же последовательности, что и макете шаблона.
@@kompiuterapiia спасибо!
скажите пожалуйста выдает ошибку Run-time error '52': Bad file name or number. Хотя все сделал как вы?
посмотрите вот тут ua-cam.com/video/89DcmhKbIzs/v-deo.html с 5м30с все ли модули подключены, а вообще неправильное имя или номер. В описании под видео есть ссылка на исходник и zip архив с файлами, по ним я и делал ролик, все должно работать.
Если в первом столбце убрать данные, например я захочу сохранить только 3 файл, то при первой проверки условия мы выходим из цикла и заверашаеться работа макроса. Т.е. документ по третей строке не будет создан. Почему-то конструкция Continue Do не прописывается...
Оставляем в таблице только те строки, по которым должны быть сформированы бланки.
Просьба к автору: на сайт выкладывать не только код, но архив с документами, что бы можно было скачать и запустить пример из видео.
В большинстве случаев так и делаю!)
Здорово получается, а как в коде макроса задать новую папку для сохранения созданных файлов?
Проще всего это изменить путь в строке кода, или добавить новый лист, в одну ячейку вписать имя папки, получить значение в переменную, например pass. Затем в коде прописать так: = "d:\докуметы\отчеты\" & pass , хотя в pass тоже можно вписать какую-нибудь структуру. Лист назвать config и в нем указывать свои настройки.
Хотя лично мне кажется удобным хранить все файлы вместе, с одной папке, сформировав отчеты можно сразу все переместить куда надо...)
Здравствуйте, выдает ошибку на строке объявления модуля Sub main(). Скачивал ваш код и при запуске выдает туже ошибку. В чем может быть ошибка?
Название процедуры не должно совпадать со встроенными в vba названиями методов, функций и т.д. Скорее ваше "main" совпадает. Надо переназвать как-то иначе.
Как таким способом можно заменить текст в колонтитуле? Его же нужно сначала открыть, осуществить так же поиск с заменой и закрыть. А как мне код нужный написать? И как мне определённые строчки данных в Excel сохранять в отдельный файл не в одну папку со всеми, а по другому пути например?
Про колонтитулы есть видео на канале, путь к сохранению файлов меняйте по своему усмотрению.
ua-cam.com/video/A3jip_5j57I/v-deo.html
@@kompiuterapiia Здравствуйте, снова возник вопрос по заполнению вордовского документа макросом. Можно ли как-то заменять текст, чтобы конкретно использовалось форматирование, как в ячейке эксель, например, жирный шрифт или размер букв?
С вами можно проконсультироваться по поводу моего макроса? желательно в личку
В группе вк пишите, ссылки в шапке канала.
Здравствуйте. У меня почему то только на первом листе документа меняется на нужные значения а дальше остаются &name. Почему так?
Представленный код меняет только первую метку. Тут нужно делать циклы или, если есть, команду "заменить все" применять.
Ну или, по ленивому, как я и сделал: пишешь команду замены столько раз, сколько тебе нужно ;D
Пример:
wdDoc.Range.Find.Execute FindText:="&name", ReplaceWith:=name$
wdDoc.Range.Find.Execute FindText:="&name", ReplaceWith:=name$
@@Alex_R.T. а как команда "заменить все" выглядит, на примере вашего макроса?
Как задать переменные не столбцах а в строках?
Добрый день, а как бороться со слишком длинным строковым параметром?
Смотрите часть 3, как раз тот случай.
Спасибо. Видео очень помогло создать хороший код, но столкнулся с проблемой и на первый взгляд в коде не видно. Код тот же, таблица на 10 строк, переменных 64. Разрешаю 6 - отображает только 3, как в Вашем файле. Ставлю 10, отображает то 7, то 10. Помогите найти причину.
Обычно таблица является законченным результатом, сколько строк в ней, столько и выводим на печать. Пример с возможностью выбора, какие строки генерировать, хорошо работает если нужно вывести первые 10 строк, по коду на остальных произойдет остановка. Если очень нужно сформировать не весь список, но не хочется удалять остальное - отсортируйте таблицу по столбцу с отмеченными пунктами, так чтобы они шли подряд в столбце. Сформировали, убрали из столбца порядковый номер, заполнили остальные, отсортировали и по новой.
@@kompiuterapiia Нашёл ошибку. Оказалось, что макрос теряет значение (ничего не отображает), если искомая ячейка со значением в Excel "сверх малого размера по ширине (у меня она была 0,67, а значение было большое).
@@kompiuterapiia Ещё раз спасибо за видео. Есть одна просьба - подскажите, где можно почерпнуть информацию, чтобы кнопка для запуска макроса была на другом листе данной книги? Кстати, если нет у Вас видео - создайте. Лист базы данных. Другой лист форма для заполнения и кнопка. Думаю, это будет востребовано на Вашем канале.
На канале новое видео, как раз Ваш случай)))
Здравствуй, не правильно указан путь, как
Это можно исправить?
Добрый день. Если оставить 1 строку и 3 строку, а вторую не ставить, то он выводит только первую и выходит из цикла, пишет всё готово. 3 не берет в расчёт. Как можно исправить?
Здравствуйте, как правило, сколько пользователь в таблицу строк добавил, столько он и хочет на выходе получить файлов. Если Вас не устраивает вариант удалить не используемые строки, то выполните сортировку таблицы так, чтобы в столбце "порядковый номер" цифры оказались в начале, а пустые ячейки в конце. Тогда макрос сформирует сперва данные с отметкой и остановится на пустых строках.
@@kompiuterapiia Хорошо, так работает, проверял. Спасибо.
Так можно удалить первое условие if, а ко второму добавить else т.е. когда ячейка пустая, он добавляет счетчик и переходит к следующей ячейке не создавая документ)
Выдает ошибку на 5 строку кода: HomeDir$ = ThisWorkbook.Path (говорит что HomeDir$ Variable not defined) понимаю что какая-то мелочь, но код из-за нее не фунциклирует! Помогите!!!
Проверяйте все с самого начала, что то сделали не так, переменную не объявили, сверьтесь с видео, и в описании под роликом есть ссылка на скачивание архива с рабочим файлом.
@@kompiuterapiia Я наверное глупая...)но не понимаю в чем дело
Sub MakeLetterDoc()
Dim wdApp As Object
Dim wdDoc As Object
HomeDir$ = ThisWorkbook.Path
Set wdApp = CreateObject("Word.Application")
counter% = 4
Do
у меня исходные данные в умной таблице, может в этом дело?
В VBA tools reference подключен Microsoft office xx object library? Вместо хх версия офиса
Что значит умная таблица?
а использовать в word Рассылки - это не по феншую?!
файл не создается, все сделал по инструкции
Выделяет желтым строку - Sub main()
В описании к видео есть ссылка скачать файл, по которому я делал это видео. Скачай, сравни, запусти.
Надо проверить не висит ли в диспетчере задач копия word, в последующих частях про шаблоны я показывал как с этим бороться.
@@kompiuterapiia скачал запустил, также выделяет. Ворд не висит, проверил
все получилось, незнаю че конкретно исправил, но полазил, поисправлял по примеру. И видимо нельзя запускать макрос пока открыт код)
⚠️ Если не работает (из личного опыта)
1. Название файла не может содержать некоторые символы (пример ":"). Эта строка не выполняеться FileCopy HomeDir$ + "\template.doc", HomeDir$ + "\" + NPP$ + "_" + ID$ + "_" + DataC$ + ".doc"
2. Если указана другая программа для открытия доков по умолчанию ничего работать не будет.
Музыка мешает.
ДЕБИЛЬНАЯ ФОНОВАЯ МУЗЫКА (ТЯЖЕЛО ВОСПРИНИМАТЬ ВИДЕО). ПО СУТИ - ИЗЛОЖЕНИЕ ОСТАВЛЯЕТ ЖЕЛАТЬ ЛУЧШЕГО. АВТОРОР ЗВЕЗД С НЕБА НЕ ХВАТАЕТ, НО ВЕДЕТ СЕБЯ КАК ЗВЕЗДА.
Ужасно, вы пишете модуль 20 минут. Задача решается в течение 5 минут - время заполнения данными умной таблицы и все, вы же предлагаете изучать язык VBA