0 / 0 / 0
Регистрация: 10.01.2022
Сообщений: 3
|
||||||
1 | ||||||
Excel Как заполнить таблицу в одном документе Word данными из таблицы Excel?10.01.2022, 20:23. Показов 8401. Ответов 26
Всех приветствую! Возникла задача автоматизации формирования таблицы в документе Word из данных, вводимых в таблицу Excel.
1. Имеется таблица Excel Примерный формат приведён во вложениях, с неопределенным количеством вводимых данных, но со строго указанной формой. Необходимо при нажатии клавиши формировать таблицу в Word документе. 2. Имеется сам типовой Word документ Таблица в документе должна быть заполнена данными из таблицы Excel и в зависимости от количества пунктов (№ п/п) расширяться полями (в качестве примера приведены пустые поля). 3. Имеется пример кода Который нашел на просторах интернета: Думал переделать под свои задачи, но пока не знаю с чего именно начать.
0
|
10.01.2022, 20:23 | |
Ответы с готовыми решениями:
26
Как заполнить таблицу Excel данными из CheckListBox1 Замена меток в документе WORD данными из EXCEL Заполнение полей в документе word данными из документа excel как заполнить пустые ячейки данными из другой таблицы Excel Как заполнить/считать таблицу excel.xlsx данными и не убить весь дизайн таблиц? |
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
|
||||||
10.01.2022, 20:47 | 2 | |||||
Вы на правильном пути, остается разметить болванку документа.
Вот кусок из рабочей программы, я так делаю. И шаблон во вложении. Идею поймете, надеюсь.
1
|
0 / 0 / 0
Регистрация: 10.01.2022
Сообщений: 3
|
|
10.01.2022, 20:57 [ТС] | 3 |
Спасибо большое за ответ, попробую разобраться в ближайшее время, если вы не против дополнительно задам вопросы в комментарии.
У вас не сохранилось шаблона Excel для наглядности?
0
|
Модератор
|
|
10.01.2022, 22:24 | 4 |
1
|
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
|
|
10.01.2022, 22:37 | 5 |
ProooNoob, шаблона экселя нет. Эксель - источник данных, оттуда нужные ячейки берут и на место {ABC} меток в шаблоне ворд-документа подставляют.
shanemac51, вроде и в таблице заменит. Вот где были сложности - это с заменой в колонтитулах, но и там сделал.
1
|
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
|
|
10.01.2022, 22:43 | 6 |
ProooNoob, еще был вариант - создание исков. Ворд так же размечен, а данные брались из такого вот экселя. Можно считать шаблоном. )))
0
|
Модератор
|
|
11.01.2022, 07:38 | 7 |
имею ввиду объединенные ячейки в содержательных строках - не в шапке
в первом сообщении - именно такая таблица, рис 2
1
|
малоболт
1314 / 498 / 211
Регистрация: 30.01.2020
Сообщений: 1,218
|
|
11.01.2022, 09:51 | 8 |
ProooNoob, Как правильно заметила shanemac51, у вас в первом сообщении таблица в Word-документе имеет объединённые ячейки в рабочей зоне. Что переводит задачу из разряда стандартных, для которых можно попытаться применить найденный код в разряд индивидуальных, где прежде чем начинать писать первые строки кода, надо заняться предсказанием дальнейшего развития. И ответить на вопросы:
1. Действительно ли столь необходима на выходе таблица с объединёнными ячейками? Нельзя ли разложить каждую строку данных ровно в одну строку таблицы без этого геморроя? Это самый важный вопрос и лучше попытаться решить его в сторону одной строки. Вы не представляете сколько геморроя вы этим избежите! 2. Если всё же необходима, то надо сначала чётко определить как текущий вид таблицы, так и её возможные последующие модификации в процессе развития. От этого этапа предсказания зависит вся будущая структура кода и количество его переписываний С НУЛЯ! Вангую, что практически каждое добавление/удаление/объединение полей в исходный шаблон и последующие многочисленные ваши попытки модифицировать ваш прекрасно работавший прежде код будут приводить к решению, что быстрее будет всё забыть и начать заново. 3. Так ли необходим шаблон Word-документа? Будет ли там что-то помимо данной таблицы? 3.1. Если да - то будут ли там ещё таблицы, или наша единственная? 3.2 Если нет - то может просто создавать каждый раз новый документ, в котором создавать чистую таблицу и самостоятельно макросом её форматировать, добавляя нужное число строк и объединяя нужные ячейки? С последующим заполнением. Уверяю вас, что это будет проще и для последующей модификации кода, когда вам потребуется менять вид таблицы. Без ответа на эти вопросы бесполезно начинать что-то писать. А тот код, что вы нашли, и тот, что предлагает Zeag, годятся только для случаев когда строка в строку - без геморроя с объединением ячеек.
1
|
Модератор
|
|
11.01.2022, 09:58 | 9 |
довольно часто я подобные таблицы формировала как НТМ - это довольно просто, который потом открывала ВОРД-м
0
|
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
|
|
11.01.2022, 11:26 | 10 |
Хм, я чего-то не так сделал? В архиве пример таблицы с объединенными ячейками - Table.docx. Макрос замены в zam.xlsm. Результат подстановки в MyDoc.docx
Понятно, что заранее пронумеровать так ячейки в шаблоне - та еще возня. Но принципиально-то работает? Или уважаемые участники имели в виду как-то иначе объединенные ячейки? Хочу понять, чтобы позднее не наскочить на такие проблемы.
0
|
Модератор
|
|
11.01.2022, 12:00 | 11 |
в накладной может быть и 3 строки и 203, разное количество ячеек в строке
у вас же жестко 3 - а если будет 6 или 66, придется заново создавать шаблон проще создать отчет в ексель, там объединение ячеек не проблема, там проблема в другом(эта ячейка автоматически не может менять высоту и высота ячейки не более 409пунктов)
0
|
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
|
|
11.01.2022, 12:16 | 12 |
Я про то, что принципиально это работает, факт объединения ячеек не мешает выполнять замены. Вот о чем речь. А разметка шаблона на 203 строки - конечно, возня, и заранее продумать, как все будет работать - нужно. Поискать и другие варианты, от экселя до html. И да, сделать УНИВЕРСАЛЬНУЮ ПРОГРАММУ для всех задач невозможно ))), да и мы бы не нужны тогда были.
0
|
Модератор
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11.01.2022, 12:17 | 13 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
замене не мешает, но речь идет о другом
как создать строки для произвольного количества записей в ексель более логична такая таблица, в ней фактически 3 таблицы, для каждого клиента своя и 3 головных части
0
|
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
|
|||||||||||
11.01.2022, 12:28 | 14 | ||||||||||
Я бы тогда создал шаблон на одну строку "Андреев Иван Иванович", затем в цикле ее копировал ниже и заполнял. Где-то так (пример из рабочей программы).
0
|
Модератор
|
|
11.01.2022, 12:52 | 15 |
0
|
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
|
|
11.01.2022, 12:57 | 16 |
Натыкался. Приходилось либо обходить (адресовать иначе), либо гасить через On Error Resume Next.
0
|
Модератор
|
|
11.01.2022, 13:15 | 17 |
0
|
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
|
|
11.01.2022, 13:49 | 18 |
Для этой таблицы оно работает, дает значения - 6 строк на 5 столбцов.
На Cell(2,1) - конечно, ошибка. Но я же знаю, что у меня объединенные ячейки и буду их обходить при заполнении очередной строки. Это раз. Два - знаю, что в шаблоне 2 строки: одна заголовка (пусть там сидит ФИО, номер детали, номер операции, код города и что еще надо), вторая - пустая (где сейчас было {FIO1}), в ней будет подставляться Андреев Иван Иванович, ДОЛУ-3, 35173 и пр. Если надо еще строку - то добавляю, копируя эту, и знаю, что стало 3 строки. Соответственно, адресуюсь к 3-й и помню, какие индексы можно использовать, а какие нет из-за объединения. То есть For или For Each по вордовой таблице нет, есть For по экселевой, а в ворд просто добавление строки после известного индекса. Согласен, что объединенные ячейки работу усложняют, универсальность снижают (надо помнить, какие индексы дадут ошибку при обращении). Все это так. Но работать все-таки с ними можно. И само собой, при возможности использования таблицы без объединения я выберу этот вариант. Вот где-то такой вид заготовки. И потом в нее копируется еще раз строка и заполняется.
1
|
1590 / 663 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
|
|
13.01.2022, 22:57 | 19 |
Зачем такие сложности?)))
В шаблоне таблица для одной записи (сколько угодно строк и объединенных ячеек) + шапка, место вставки данных помечаю {наименование данных} без всяких индексов. При заполнении в цикле: Первый проход: определяю диапазон (R) под запись (найти начало 2-й строки и конец таблицы элементарно) - копирую в буфер Второй и последующие проходы: R.start=R.end, в диапазон R вставка из буфера Произвожу замену в диапазоне R: {наименование данных}=данные ---------- На практике "помечаю" диапазон под запись - так в таблице могут присутствовать строки после вставляемых (те же итоги) ... и не обязательно в таблице
2
|
834 / 484 / 186
Регистрация: 09.03.2009
Сообщений: 1,664
|
|
13.01.2022, 23:49 | 20 |
Step_UA, хороший вариант! В буфер и потом приравнивать диапазоны я не догадался, т.к. с вордом опыт меньше. Не могли бы Вы код для этой задачи привести? Хочется хорошим подходам научиться.
1
|
13.01.2022, 23:49 | |
13.01.2022, 23:49 | |
Помогаю со студенческими работами здесь
20
Создать таблицу в Word и заполнить её данными из массива Поиск слов из таблицы Excel в Word документе Заполнить таблицу в Excel данными из массива Заполнить таблицу в Excel данными с сайта Заполнить таблицу данными из другой таблицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |