1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
|
|
1 | |
Форматирование текстовых полей слияния (EXCEL->WORD)13.01.2022, 10:57. Показов 3357. Ответов 17
Метки нет (Все метки)
Друзья, есть простая задача - реализовать документ WORD с включёнными полями слияния из EXCEL.
Проблема в том, что текстовое поле, импортируемое из EXCEL, нужно разбить на ячейки. Например, фамилию нужно расписать по буквам, чтобы каждая буква была в клеточке, как в анкетах, и т.п. Было бы здорово, если можно было бы при импорте полей слияния дополнительно использовать функции работы с текстом, например, использовать самую левую букву. Затем вторую, и т.п. Вторая сложность - мне нужно вставлять в документ дату, но не из таблицы, а текущую плюс 45 дней. Можно ли это реализовать в рамках Word и Excel? Спасибо!
0
|
13.01.2022, 10:57 | |
Ответы с готовыми решениями:
17
MS Word 2007 и форматирование полей - внутри Заполнение листов в Excel по типу слияния в Word VBA Word изменение текстовых полей в шаблоне (колонтитулах) Форматирование файла Word при переносе из Excel Помогите с сортировкой текстовых строк (Word или Excel) |
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
|
|
13.01.2022, 11:23 | 2 |
Распишите в экселе - можно фамилию вбивать в ячейку, а на символы разбить формулами. Каждый символ вставить в ячейку своим отдельным полем.
Либо поищите шрифт, в котором каждая буква будет в квадратике, это даст визуальный эффект. Что вы называете текущей датой - на момент вставки? В Excel будет формула =СЕГОДНЯ()+45
0
|
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
|
|
13.01.2022, 11:34 [ТС] | 3 |
Не совсем понял, что Вы имеете в виду. Я бы хотел использовать исходное текстовое поле Excel, обрабатывая его формулой на этапе слияния, но как это сделать, ума не приложу. Править файл Excel нельзя, и мне кажется методологически неверным.
Да в экселе понятно, но как это реализовать при вставке в Word. Т.е. это уже не будет "слияние" с Эксель, но всё равно не понимаю, как вставить в Word текущую дату+45 дней.
0
|
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
|
|
13.01.2022, 11:52 | 4 |
Спорить не стану, мы файла не видели, как впрочем и вордовского документа.
Опишите, как на ваш взгляд должна работать такая формула. Т.е. она должна взять поле, и вернуть из текста определенный символ. Как на ваш взгляд этот символ задаваться? Как формула должна понять, что в фамилии "Ким" нет четвертого символа? Такое проще на VBA сделать, без особенных в общем-то проблем. Смысл слияния - взять значение ячейки целиком и вставить в Word. Если в Word нужно, чтобы каждая буква слова "Пупкин" была в своей клеточке, либо используйте шрифт который даст визуальный эффект, либо разбейте это слово в Экселе - в первой ячейке "П", ячейка правее -"у", в ячейке еще правее - "п" и так далее, в зависимости от того, сколько клеточек вы предусматриваете в документе Word. Либо пишите на VBA код, который померяет длину фамилии и вставит в нужное место таблицу нужной длины. Как сделать автоматический вывод периода в Word, который автоматически подставляет нужные даты при открытии
0
|
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
|
|
13.01.2022, 12:21 [ТС] | 5 |
Да нечего там смотреть, я могу сделать пример, но смысл - есть поле "Фамилия" и значение "Иванов". Есть таблица в WORDе, куда нужно вставить фамилию побуквенно.
В первую ячейку - первый символ, во вторую - второй, и так далее. Контролировать длину в данном случае необязательно, по крайней мере, в первом приближении, пока не определились с общей концепцией, возможно ли это в принципе. Ну почему же, определённые возможности форматирования чисел и дат при слиянии предусмотрены.
0
|
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
|
|
13.01.2022, 12:36 | 6 |
Смысл очень простой:1) если все так просто - и сделать недолго.
2). если Excel менять нельзя - покажите. Если вы его можете подстроить под себя как нужно - подстройте. 3). У вас Имя будет в той же ячейке, что и фамилия, или в другой. Если в разных - куда они попадают в Ворд - в одну строку, или в разные. Как формула должна узнать, что она вставляется в первую ячейку, а не в 10? Если по номеру вхождения - как быть с четвертой ячейкой в фамилии "Ким" - на четвертой ячейке по идее будет ошибка. Вопрос - что должно быть в пятой ячейке - ничего, или должно начаться имя - вот почему нужно видеть пример. Потому что не чисел и не дат, а форматирование значений ячеек, при условии что они числа и даты. Короче, может быть полями и можно, но я бы делал на VBA.
0
|
Модератор
|
|
13.01.2022, 13:07 | 7 |
хотелось бы увидеть вордовский шаблон, чтобы понять насколько он сложен
и вряд ли реализация будет основана на слиянии, хотя все возможно - в екселе сформировать все клеточки в строке,16000+ допустимо - но устанете подключать слияние в каждую клеточку в ворде - возможно и ограничении 255 полей не даст завести все клеточки, ведь слияние - это встроенный запрос
0
|
малоболт
1315 / 499 / 211
Регистрация: 30.01.2020
Сообщений: 1,219
|
|
13.01.2022, 13:11 | 8 |
Можно ещё не на VBA, а на VBS. Тот же бэйсик, только встроен во все Windows, начиная с XP, позволяет обращаться к функционалу Word и Excel на уровне простейших объектов, не требует встраивания ни в один из файлов Word и/или Excel, и много чего ещё. И с лёгкостью написал бы примерчик кода для вашего случая - там строк-то десятка полтора-два потребуется, но реально влом при этом тратить время и силы на создание исходника данных в Excel, и шаблона для заполнения в Word. Будут файлы от вас - набросаем код.
P.S. Вот пример на VBS похожей задачи наоборот: вставки таблицы из Word в Excel. Повернуть движение в обратную сторону, разбить строку по буквам и вставить дату - наверное даже ребёнок справится.
1
|
Модератор
|
|
13.01.2022, 13:18 | 9 |
если ексель менять нельзя, то
- в ворде, в документе один взять слиянием нужные поля, целиком - и в ворде же макросом заполнить другой ворд-документ, по клеточкам возни конечно много, в любом случае нужны док1 - настроенный на слияние с ексель и модулем VBA док2- шаблон с клеточками
0
|
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
|
|
13.01.2022, 13:45 [ТС] | 10 |
Господа, спасибо за ответы.
Эксель файл менять можно, но бесполезно, т.к. он приходит в том виде, в котором приходит, и каждый раз менять нерационально. Вордовский шаблон.. Ну какой шаблон - таблица 1 ряд 25 ячеек. Я понял, что простого пути, о котором бы я не знал, не существует. Поэтому просто взял текстовую надпись, вставил в неё таблицу и наложил сверху на текст, который я отформатировал в моноширинном Courier, и подобрал ширину текста под таблицу. ВСЁ.
0
|
Dinoxromniy
|
13.01.2022, 13:45
#11
|
Не по теме: Punkt5, подскажите - правильно я понимаю, что по сути это тот же VBA, с той только разницей, что каждое приложение нужно описать как при доступе извне через CreateObject или аналог GetObject, а сама объектная модель полученного объекта будет полностью соответствовать VBA модели? Или там прямо своя отдельная объектная модель, свой набор методов и свойств?
0
|
малоболт
1315 / 499 / 211
Регистрация: 30.01.2020
Сообщений: 1,219
|
|
13.01.2022, 14:12 | 12 |
Dinoxromniy, Да! Как только вы создаёте объект Word.Application или Excel.Application, через него можно обращаться к свойствам и функциям, доступным в VBA. Я не раз, записав автоматический макрос в VBA, транслировал его в VBS, заменяя лишь именованные константы в параметрах функций на их значения, которые легко посмотреть под отладкой, сделав первый шаг отладки и потом наводя курсор на нужные константы.
Вот ещё примерчик на VBS, использующий функционал VBA для работы с Excel, и при этом не требующий вставки себя в Excel-файл.
1
|
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
|
||||||
13.01.2022, 14:43 | 13 | |||||
Не по теме: Punkt5, спасибо, ясно. Нужно будет взять на заметку! Добавлено через 15 минут Song774, если под рядом подразумевается 1 строка, то можно воспользоваться кодом ниже. В первую ячейку внесите ФИО, оставьте курсор внутри таблицы (например - в первой ячейке), и запустите код. Текст из первой ячейки будет распределен побуквенно по таблице. Если в первой ячейке будет поле, то его нужно программно превратить в текст, а затем выполнить тот же код.
1
|
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
|
|
14.01.2022, 12:32 [ТС] | 14 |
0
|
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
|
|
20.01.2022, 09:02 [ТС] | 15 |
Друзья, не стал заводить новую тему, есть смежный вопрос.
На машине со старым офисом (2007?) открыл созданный мной в версии 2016 файл Word, использующий поля из Excel. Пользователь жалуется, что при открытом документе Word невозможно внести и сохранить изменения в Excel. Т.е. если мы изменяем в Excel, допустим, номер телефона, то новый вариант не отображается в поле слияния открытого файла Word. А сохранить Excel не получается. Пишет ошибку, что невозможно сохранить и предлагает сохранить таблицу с новым именем. Если включить многопользовательский режим в Excel, то всё равно не даёт сохранить, но просто говорит, что "файл заблокирован", и всё. Можно ли как-то настроить Word+Excel 2007, чтобы пользователь мог оперативно корректировать файл Excel и сразу распечатывать документ с обновлёнными полями в соответствии с внесёнными изменениями?
0
|
Модератор
|
|
20.01.2022, 10:24 | 16 |
в этом и недостаток слияния
поэтому предпочитаю работу со стороны ексель - можно корректировать таблицу данных - программно заполняя закладки и не зависеть от каталога размещения , его можно задавать относительно каталога екселя конечно , если в ворде произвольный документ(не шаблон), то не знаю, что и посоветовать
0
|
малоболт
1315 / 499 / 211
Регистрация: 30.01.2020
Сообщений: 1,219
|
|
20.01.2022, 11:54 | 17 |
Просто файл при открытии захватывается тем пользователем, кто его открыл. Если кто-то из пользователей вносит изменения в файл - они не будут видны другим, пока он не сохранит данный файл. Если предполагается многопользовательский доступ к данным. с возможностью изменения данных в то же время, как другие их используют, есть следующие варианты действий:
Правильный: Перейти к работе с базой данных. Там все эти действия уже прописаны разработчиками на уровне движка, и конечному программеру остаётся лишь задавать правильную структуру собственной базы в соответствии с четырьмя нормальными формами и затем просто прописывать интерефейсы доступа. Геморройный-геморройный: создать отдельный excel файл для хранения данных (ЭФХД), который пользователи не будут открывать сами. Создать excel-файл для заполнения ЭФХД, пререхватывая в нём события изменения значений в ячейках и при изменении нужных - из этих макросов перехвата быстро открывать, изменять и тут же сохранять ЭФХД, перед этим проверяя - не захвачен ли он другим таким же пользователем. Если ЭФХД долго не освобождается - выдавать сообщения данному пользователю. также нужно повесить макрос на таймер, чтобы периодически проверять - не изменил ли кто другой ту информацию в ЭФХД, с которой работает и видит даннный пользователь в своём файлике Excel. Ну и соответственно в вордовом файле надо вкрячить макросы, которые будут заполнять таблицы на основании ЭФХД при его открытии, а также по таймеру, и ещё перед выводом на печать, и перед сохранением, да и в остальных случаях, которых наверняка ещё поднаберётся, с соответствующими предупреждениями пользователю. Выбор: делать работу , для которой специально придуманы базы данных в базе данных, либо изобретать велосипед и зарабатывать геморрой на поддержке решения с набором обычных файлов, пусть и позволяющих частичную автоматизацию за счёт VBA - это уже ваша преррогатива.
0
|
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
|
|
22.01.2022, 23:45 [ТС] | 18 |
Ну, в данном случае с файлами excel и word работает единственный пользователь
Предполагаю, что проблема в старой версии офиса. Мне кажется, что в 2019м работало корректно.
0
|
22.01.2022, 23:45 | |
22.01.2022, 23:45 | |
Помогаю со студенческими работами здесь
18
Заполнение полей в документе word данными из документа excel Функция слияния двух текстовых файлов Написать функцию слияния двух текстовых файлов Форматирование числовых полей и полей дата-время Разработать программу слияния двух текстовых файлов в один Разработать программу слияния двух текстовых файлов в один Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |