Форум программистов, компьютерный форум, киберфорум
MS Office Word
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
1

Форматирование текстовых полей слияния (EXCEL->WORD)

13.01.2022, 10:57. Показов 3357. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Друзья, есть простая задача - реализовать документ WORD с включёнными полями слияния из EXCEL.
Проблема в том, что текстовое поле, импортируемое из EXCEL, нужно разбить на ячейки. Например, фамилию нужно расписать по буквам, чтобы каждая буква была в клеточке, как в анкетах, и т.п. Было бы здорово, если можно было бы при импорте полей слияния дополнительно использовать функции работы с текстом, например, использовать самую левую букву. Затем вторую, и т.п.
Вторая сложность - мне нужно вставлять в документ дату, но не из таблицы, а текущую плюс 45 дней. Можно ли это реализовать в рамках Word и Excel?

Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2022, 10:57
Ответы с готовыми решениями:

MS Word 2007 и форматирование полей - внутри
Всем привет, хочу попросить совета или помощи. Есть документ, есть определенные требования по...

Заполнение листов в Excel по типу слияния в Word
Здравствуйте. Подскажите, можно ли в эксель сделать такое же как в Ворде - Слияние. Есть источник...

VBA Word изменение текстовых полей в шаблоне (колонтитулах)
Уважаемые профессионалы, нужна ваша помощь. Перечитал соседние ветки, перепробовал множество...

Форматирование файла Word при переносе из Excel
Добрый день! Прошу помощи, так как ответа сам не нашел. Существует макрос переноса листа из excel...

Помогите с сортировкой текстовых строк (Word или Excel)
Есть список (не нумерованный, не маркированный), текстовые строки отсортированы по алфавиту....

17
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
13.01.2022, 11:23 2
Цитата Сообщение от Song774 Посмотреть сообщение
Например, фамилию нужно расписать по буквам, чтобы каждая буква была в клеточке, как в анкетах,
Распишите в экселе - можно фамилию вбивать в ячейку, а на символы разбить формулами. Каждый символ вставить в ячейку своим отдельным полем.
Либо поищите шрифт, в котором каждая буква будет в квадратике, это даст визуальный эффект.

Цитата Сообщение от Song774 Посмотреть сообщение
но не из таблицы, а текущую плюс 45 дней
Что вы называете текущей датой - на момент вставки? В Excel будет формула =СЕГОДНЯ()+45
0
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
13.01.2022, 11:34  [ТС] 3
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
Распишите в экселе - можно фамилию вбивать в ячейку, а на символы разбить формулами. Каждый символ вставить в ячейку своим отдельным полем.
Не совсем понял, что Вы имеете в виду. Я бы хотел использовать исходное текстовое поле Excel, обрабатывая его формулой на этапе слияния, но как это сделать, ума не приложу. Править файл Excel нельзя, и мне кажется методологически неверным.

Цитата Сообщение от Dinoxromniy Посмотреть сообщение
Что вы называете текущей датой - на момент вставки? В Excel будет формула =СЕГОДНЯ()+45
Да в экселе понятно, но как это реализовать при вставке в Word. Т.е. это уже не будет "слияние" с Эксель, но всё равно не понимаю, как вставить в Word текущую дату+45 дней.
0
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
13.01.2022, 11:52 4
Цитата Сообщение от Song774 Посмотреть сообщение
Править файл Excel нельзя
Спорить не стану, мы файла не видели, как впрочем и вордовского документа.
Цитата Сообщение от Song774 Посмотреть сообщение
обрабатывая его формулой на этапе слияния, но как это сделать, ума не приложу.
Опишите, как на ваш взгляд должна работать такая формула. Т.е. она должна взять поле, и вернуть из текста определенный символ. Как на ваш взгляд этот символ задаваться? Как формула должна понять, что в фамилии "Ким" нет четвертого символа?
Такое проще на VBA сделать, без особенных в общем-то проблем.
Цитата Сообщение от Song774 Посмотреть сообщение
мне кажется методологически неверным.
Смысл слияния - взять значение ячейки целиком и вставить в Word. Если в Word нужно, чтобы каждая буква слова "Пупкин" была в своей клеточке, либо используйте шрифт который даст визуальный эффект, либо разбейте это слово в Экселе - в первой ячейке "П", ячейка правее -"у", в ячейке еще правее - "п" и так далее, в зависимости от того, сколько клеточек вы предусматриваете в документе Word. Либо пишите на VBA код, который померяет длину фамилии и вставит в нужное место таблицу нужной длины.
Цитата Сообщение от Song774 Посмотреть сообщение
как вставить в Word текущую дату+45 дней.
Как сделать автоматический вывод периода в Word, который автоматически подставляет нужные даты при открытии
0
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
13.01.2022, 12:21  [ТС] 5
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
Спорить не стану, мы файла не видели, как впрочем и вордовского документа.
Да нечего там смотреть, я могу сделать пример, но смысл - есть поле "Фамилия" и значение "Иванов". Есть таблица в WORDе, куда нужно вставить фамилию побуквенно.
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
Опишите, как на ваш взгляд должна работать такая формула. Т.е. она должна взять поле, и вернуть из текста определенный символ. Как на ваш взгляд этот символ задаваться?
В первую ячейку - первый символ, во вторую - второй, и так далее. Контролировать длину в данном случае необязательно, по крайней мере, в первом приближении, пока не определились с общей концепцией, возможно ли это в принципе.

Цитата Сообщение от Dinoxromniy Посмотреть сообщение
Смысл слияния - взять значение ячейки целиком и вставить в Word.
Ну почему же, определённые возможности форматирования чисел и дат при слиянии предусмотрены.
0
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
13.01.2022, 12:36 6
Цитата Сообщение от Song774 Посмотреть сообщение
Да нечего там смотреть, я могу сделать пример, но смысл
Смысл очень простой:1) если все так просто - и сделать недолго.
2). если Excel менять нельзя - покажите. Если вы его можете подстроить под себя как нужно - подстройте.
3). У вас Имя будет в той же ячейке, что и фамилия, или в другой. Если в разных - куда они попадают в Ворд - в одну строку, или в разные.

Цитата Сообщение от Song774 Посмотреть сообщение
В первую ячейку - первый символ, во вторую - второй, и так далее.
Как формула должна узнать, что она вставляется в первую ячейку, а не в 10? Если по номеру вхождения - как быть с четвертой ячейкой в фамилии "Ким" - на четвертой ячейке по идее будет ошибка. Вопрос - что должно быть в пятой ячейке - ничего, или должно начаться имя - вот почему нужно видеть пример.
Цитата Сообщение от Song774 Посмотреть сообщение
Ну почему же, определённые возможности форматирования чисел и дат при слиянии предусмотрены.
Потому что не чисел и не дат, а форматирование значений ячеек, при условии что они числа и даты.

Короче, может быть полями и можно, но я бы делал на VBA.
0
Модератор
Эксперт MS Access
12080 / 4940 / 791
Регистрация: 07.08.2010
Сообщений: 14,492
Записей в блоге: 4
13.01.2022, 13:07 7
Цитата Сообщение от Song774 Посмотреть сообщение
Например, фамилию нужно расписать по буквам
хотелось бы увидеть вордовский шаблон, чтобы понять насколько он сложен
и вряд ли реализация будет основана на слиянии, хотя все возможно
- в екселе сформировать все клеточки в строке,16000+ допустимо
- но устанете подключать слияние в каждую клеточку в ворде
- возможно и ограничении 255 полей не даст завести все клеточки, ведь слияние - это встроенный запрос
0
малоболт
1315 / 499 / 211
Регистрация: 30.01.2020
Сообщений: 1,219
13.01.2022, 13:11 8
Цитата Сообщение от Song774 Посмотреть сообщение
Можно ли это реализовать в рамках Word и Excel?
Можно ещё не на VBA, а на VBS. Тот же бэйсик, только встроен во все Windows, начиная с XP, позволяет обращаться к функционалу Word и Excel на уровне простейших объектов, не требует встраивания ни в один из файлов Word и/или Excel, и много чего ещё. И с лёгкостью написал бы примерчик кода для вашего случая - там строк-то десятка полтора-два потребуется, но реально влом при этом тратить время и силы на создание исходника данных в Excel, и шаблона для заполнения в Word. Будут файлы от вас - набросаем код.
P.S. Вот пример на VBS похожей задачи наоборот: вставки таблицы из Word в Excel. Повернуть движение в обратную сторону, разбить строку по буквам и вставить дату - наверное даже ребёнок справится.
1
Модератор
Эксперт MS Access
12080 / 4940 / 791
Регистрация: 07.08.2010
Сообщений: 14,492
Записей в блоге: 4
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, а на VBS. Тот же бэйсик, только встроен во все Windows, начиная с XP, позволяет обращаться к функционалу Word и Excel на уровне простейших объектов, не требует встраивания ни в один из файлов Word и/или Excel
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 ряд 25 ячеек.
Song774, если под рядом подразумевается 1 строка, то можно воспользоваться кодом ниже.
В первую ячейку внесите ФИО, оставьте курсор внутри таблицы (например - в первой ячейке), и запустите код. Текст из первой ячейки будет распределен побуквенно по таблице.
Если в первой ячейке будет поле, то его нужно программно превратить в текст, а затем выполнить тот же код.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub txt2rows()
Dim tblObj As Table, i As Integer
 
If Selection.Tables.Count = 1 Then
    Set tblObj = Selection.Tables.Item(1)
    If tblObj.Columns.Count >= Len(tblObj.Cell(1, 1).Range.Text) Then
        For i = Len(tblObj.Cell(1, 1).Range.Text) To 1 Step -1
            tblObj.Cell(1, i).Range.Text = Mid(tblObj.Cell(1, 1).Range.Text, i, 1)
        Next i
    Else: MsgBox "Добавьте столбцы!"
        
    End If
End If
Set tblObj = Nothing
End Sub
1
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
14.01.2022, 12:32  [ТС] 14
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
если под рядом подразумевается 1 строка, то можно воспользоваться кодом ниже.
Спасибо, пригодится
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
Модератор
Эксперт MS Access
12080 / 4940 / 791
Регистрация: 07.08.2010
Сообщений: 14,492
Записей в блоге: 4
20.01.2022, 10:24 16
Цитата Сообщение от Song774 Посмотреть сообщение
при открытом документе Word невозможно внести и сохранить изменения в Excel.
в этом и недостаток слияния

поэтому предпочитаю работу со стороны ексель
- можно корректировать таблицу данных
- программно заполняя закладки и не зависеть от каталога размещения , его можно задавать относительно каталога екселя

конечно , если в ворде произвольный документ(не шаблон), то не знаю, что и посоветовать
0
малоболт
1315 / 499 / 211
Регистрация: 30.01.2020
Сообщений: 1,219
20.01.2022, 11:54 17
Цитата Сообщение от Song774 Посмотреть сообщение
Можно ли как-то настроить Word+Excel 2007, чтобы пользователь мог оперативно корректировать файл Excel и сразу распечатывать документ с обновлёнными полями в соответствии с внесёнными изменениями?
Просто файл при открытии захватывается тем пользователем, кто его открыл. Если кто-то из пользователей вносит изменения в файл - они не будут видны другим, пока он не сохранит данный файл. Если предполагается многопользовательский доступ к данным. с возможностью изменения данных в то же время, как другие их используют, есть следующие варианты действий:
Правильный: Перейти к работе с базой данных. Там все эти действия уже прописаны разработчиками на уровне движка, и конечному программеру остаётся лишь задавать правильную структуру собственной базы в соответствии с четырьмя нормальными формами и затем просто прописывать интерефейсы доступа.
Геморройный-геморройный: создать отдельный excel файл для хранения данных (ЭФХД), который пользователи не будут открывать сами. Создать excel-файл для заполнения ЭФХД, пререхватывая в нём события изменения значений в ячейках и при изменении нужных - из этих макросов перехвата быстро открывать, изменять и тут же сохранять ЭФХД, перед этим проверяя - не захвачен ли он другим таким же пользователем. Если ЭФХД долго не освобождается - выдавать сообщения данному пользователю. также нужно повесить макрос на таймер, чтобы периодически проверять - не изменил ли кто другой ту информацию в ЭФХД, с которой работает и видит даннный пользователь в своём файлике Excel. Ну и соответственно в вордовом файле надо вкрячить макросы, которые будут заполнять таблицы на основании ЭФХД при его открытии, а также по таймеру, и ещё перед выводом на печать, и перед сохранением, да и в остальных случаях, которых наверняка ещё поднаберётся, с соответствующими предупреждениями пользователю.
Выбор: делать работу , для которой специально придуманы базы данных в базе данных, либо изобретать велосипед и зарабатывать геморрой на поддержке решения с набором обычных файлов, пусть и позволяющих частичную автоматизацию за счёт VBA - это уже ваша преррогатива.
0
1 / 1 / 0
Регистрация: 13.01.2022
Сообщений: 11
22.01.2022, 23:45  [ТС] 18
Цитата Сообщение от Punkt5 Посмотреть сообщение
Просто файл при открытии захватывается тем пользователем, кто его открыл.
Ну, в данном случае с файлами excel и word работает единственный пользователь
Предполагаю, что проблема в старой версии офиса. Мне кажется, что в 2019м работало корректно.
0
22.01.2022, 23:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2022, 23:45
Помогаю со студенческими работами здесь

Заполнение полей в документе word данными из документа excel
Имеется типовой документ word, назовем его АКТ, в котором вся информация остается неизменной, за...

Функция слияния двух текстовых файлов
Здравствуйте. Прошу помощи, потому как даже не представляю как можно это реализовать. Задание:...

Написать функцию слияния двух текстовых файлов
Написать функцию слияния двух текстовых файлов X и Y так, чтобы строки файлов перемежались, т.е....

Форматирование числовых полей и полей дата-время
Есть ли что-нибудь попроще, чтобы получить результат в формате 'dd.mm.yyyy hh:mi'? SELECT ...

Разработать программу слияния двух текстовых файлов в один
ааа, помогите, пожалуйста!:wall: Разработать программу слияния двух текстовых файлов в один файл...

Разработать программу слияния двух текстовых файлов в один
Привет просьба помочь вот с какой задачей. Разработать программу слияния двух текстовых файлов в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru