![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Приветствую всех!
Передо мной стоит задача: настроить подстановку данных из Excel в сложные шаблоны Word, в частности, добиться автоматического (без макросов в шаблоне Word) разбиение текста по клеткам таблицы Excel. В шаблоне Excel это делается просто (при помощи формул), и это я уже реализовал: http://excelvba.ru/programmes/FillDo...eparateLetters ![]() ![]() Вот теперь хочется сделать что-то аналогичное для Word (например, чтобы при помощи полей Word, или как-то иначе, подставленные моей программой в документ Word данные автоматически разносились побуквенно по заданным ячейкам) Скажите, такое вообще возможно? Чтобы подставить значение из Excel в какую-то закладку или в DocVariables, а Word потом при помощи полей (или как-то иначе) вывел отдельные буквы в клеточки таблиц. (чтобы не прописывать в отдельные ячейки коды полей типа {ФИО-буква1} {ФИО-буква4}, и потом не делать программную замену для каждого такого поля) ------------------------------------ И ещё вопрос (поскольку буду делать макрос для Word, подставляющий в выделенные ячейки таблиц в Word какие-то поля или коды) Я выделил вручную ячейки в Word примерно так: ![]() Задача - в цикле пройтись по всем выделенным ячейкам, и проставить в них что-то (например, порядковый номер ячейки): ![]() Делаю так: Код:
![]() Что я неправильно написал в коде?
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 22.02.2013 в 12:24. |
![]() |
![]() |
![]() |
#2 | ||
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
![]()
Пункт 1
Все виды полей, какие есть в программе "Word", можно посмотреть здесь (Word 2010): вкладка Вставка - группа Текст - Экспресс-блоки - Поле... В программе "Word" нет поля, аналогичного Excel-функции "ПСТР". Может быть и можно решить вашу задачу с помощью полей, но нужно сделать сложную манипуляцию. Пункт 2 Цитата:
Чтобы VBA обработал все выделенные ячейки, нужно выделять ячейки без клавиши "Ctrl". Если необходимо выделить с помощью клавиши "Ctrl", например, если нужно выделить несмежные ячейки, то тогда нужно что-то сделать, например, выделить текст в ячейках какой-нибудь редкой заливкой или использовать анимацию, а затем обработать выделенные таким способом ячейки. Редкую заливку и анимацию нужно использовать, т.к. в документе может быть уже использована какая-нибудь заливка или выделение цветом, а макросу нужно точно указать, текст с какой заливкой нас интересует. После работы макроса заливку или анимацию убираете. При выделении ячеек в таблице, нужно ещё учитывать такую деталь, что если вы выделили заливкой символ "Конец ячейки" или "Конец строки" (точно не помню), то потом с помощью VBA-Word не всегда получается убрать эту заливку. Хоть визуально и не будет видно заливки, но макрос будет находить заливку. Что-то в этом роде, точно не помню. Пункт 3 Цитата:
Только нужно учитывать, что есть два вида закладок: в виде вертикальной черты и в виде двух квадратных скобок. И эти закладки ведут себя по-разному после вставки в закладки данных. Можно вообще ничего не использовать, а вставлять данные прямо в ячейку Word-таблицы, т.к. каждая ячейка имеет адрес - номер строки и номер столбца. Последний раз редактировалось Скрипт; 22.02.2013 в 13:40. |
||
![]() |
![]() |
![]() |
#3 | |||
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
![]() Цитата:
Цитата:
Цитата:
Код:
Тишина – самый громкий звук
Последний раз редактировалось nerv; 22.02.2013 в 13:05. |
|||
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
![]()
Если связывание отпадает, можно заполнить документ из Excel макросом типа "имена Excel в закладки Word". Раз уж в Excel все данные готовы, незачем грузить шаблон Word полями и др. Писал было такое.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
|
![]() |
![]() |
![]() |
#5 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Скрипт, спасибо огромное.
Узнал много нового. При том, что VBA в Word реализовано куда лучше, не думал, что такая простая манипуляция, как пройтись в цикле по выделенным несмежным ячейкам, требует хитрых манипуляций с установкой\снятием доп.форматирования. Цитата:
Жаль, конечно. Придется искать другие варианты (или, как раньше, рекомендовать заказчикам переводить эти шаблоны в Excel. nerv, увы, вариант «попробуй че-н-ть такое» не подходит Надо не во все ячейки таблицы проставить цифры, а только в выделенные (возможно, несмежные) Цитата:
Про Areas из Excel - это была первая мысль. И про Intersect( selection, ...) Увы, такого в ворде не нашел. Вождь, закладки — это, конечно, хорошо. Но это ж сколько пользователю понадобится времени, чтобы вручную проставить закладку для каждой отдельной буквы в сотни полей-клеточек... Да и программно подставлять текст в такие закладки - это ж увеличит время работы программы (заранее ведь неизвестно, какие поля\закладки прописал пользователь в шаблоне) Главное, я теперь знаю, в каком направлении двигаться дальше. Всем спасибо. |
||
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
![]() Цитата:
![]() А нужна ли вам в документе Word таблица? Обычный текст можно оформить так, чтобы буквы были каждая в своей клетке, как у вас на рисунке. Тогда и со вставкой все намного проще.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
|
|
![]() |
![]() |
![]() |
#7 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
http://excelvba.ru/programmes/FillDocuments Цитата:
Это вы можете сделать, и я смогу сделать (если очень постараюсь) А пользователи моей программы с этим не справятся (они хотят нажать кнопку, и получить результат) Поэтому я ищу простое и универсальное решение, которое можно в двух словах объяснить человеку, плохо знающему Word |
||
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
![]()
Как я понимаю, если шаблон Word размечен под вашу надстройку, то использовать его по-другому (просто как шаблон для ручного ввода) не планируется, да и проблематично. Тогда зачем эти сложности с полями и закладками? Ничего проще и удобнее текстовых меток нет. Как для вас, так и для пользователя. Получается что-то типа htm/xml разметки. Вот и пришли к xml-схеме документа
![]()
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
|
![]() |
![]() |
![]() |
#10 | |||
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
![]() Цитата:
Цитата:
Цитата:
Тишина – самый громкий звук
|
|||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как разделить данные из одной ячейки и разнести их в разные, через обычные формулы | Vasilev | Microsoft Office Excel | 15 | 24.09.2014 10:49 |
Из ячейки таблицы Microsoft Word в RichEdit | OlegVE | Общие вопросы Delphi | 3 | 24.11.2010 13:54 |
Передвинуть текст внутри ячейки таблицы | RamireZ | HTML и CSS | 4 | 14.09.2009 15:19 |
Помогите разнести текст ячейки по столбцам | Vlad-S | Microsoft Office Excel | 4 | 14.08.2009 21:16 |
Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD | prikolist | Microsoft Office Word | 6 | 21.11.2008 13:17 |