Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Срочно нужна помощь по Word - подстановка определённого символа в определённое место

266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Задача следующая - сеть шаблон документа. Например, это анкета. Нужно написать код (можно макрос в Word'е - потом переиначу), который определённые символы (ответы на вопросы) подставлял бы в нужные места. Я пытался создать в Word'е поля и подставлять в них значения, пытался делать таблички из 1 ячейки. Всё хорошо. но не получается записать вразумительный макрос. Вот что мне Word сгенерил, когда я "пробежался" по нескольким "табличкам" и забил в них символы:

Selection.TypeText Text:="цукцукцу"
Selection.MoveLeft Unit:=wdCharacter, Count:=19
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveUp Unit:=wdLine, Count:=2
Selection.TypeText Text:="вцфывфыв"
Selection.MoveDown Unit:=wdLine, Count:=5
Selection.TypeText Text:="вфывфывфы"

как видите, нет никаких упоминаний о позиции символа, либо ячейке таблицы. Что делать? Как быть? Гибну!!! На этот вопрос, к сожалению, точно в ближайшее время не смогу сам найти ответа - нет литературы. Работа с Excel нежелательна.:{
267
20 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Я тебе советую так:
В тексте анкеты сделаешь такие вставки:
$$ответ_на_вопрос_1$$
А дальше обычным Ctrl+H будешь менять их на реальные ответы.

Как запихнуть Ctrl+H в макрос, посмотришь в автозаписи макросов.
266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Cutty Sark
Я тебе советую так:
В тексте анкеты сделаешь такие вставки:
$$ответ_на_вопрос_1$$
А дальше обычным Ctrl+H будешь менять их на реальные ответы.

Как запихнуть Ctrl+H в макрос, посмотришь в автозаписи макросов.



Так я уже делал когда-то, но это-криво немного. К тому же, этим шаблоном могут воспользоваться кто-нибудь, а потом сохранить его покоцанным (так уже было).:{ Потом, естественно, пойдёт кракозябры всякие. Хотя, думаю, если сделаю сам шаблон Read-only и включу его, как пришаренный, в проект, может что-то и выйдет... При "поиск-замена" проблема с защитой, сами понимаете... Юзеры же обладают длинными ручками...:{

Беда ещё в следующем: одна из анкет будет печататься с подложкой. Машины у пользователей слабенькие. Поэтому, если каждый раз перезагружать шаблон, пользователи повесятся. Хочу один раз загрузить шаблон в память, а потом только менять значения в полях... Тут "поиск-замену" сделать уже проблематично будет:{

267
20 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
А как ты собираешься определять "нужные места"?

Вставить нужный текст на нужное место легко, если точно знать где это самое "нужное место".
266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Cutty Sark
А как ты собираешься определять "нужные места"?

Вставить нужный текст на нужное место легко, если точно знать где это самое "нужное место".



Я хочу в этих "нужных местах" создать либо поля, либо таблички Word'а, либо текстовые поля из графических объектов. А потом передавать туда текст. А вто как передать туда текст - не знаю. Макрос вразумительный ни по тому, ни по другому записать не удалось:{

459
20 ноября 2003 года
gacol
273 / / 12.02.2003
как видите, нет никаких упоминаний о позиции символа, либо ячейке таблицы. Что делать? Как быть?



я VBA использую в Excel, но когда-то собирал информацию из таблиц по файлам txt и doc.
Пользовался примерно таким методом

ActiveDocument.Tables(1).Cell(i, 1)

может тебе пригодится?
266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by gacol
как видите, нет никаких упоминаний о позиции символа, либо ячейке таблицы. Что делать? Как быть?



я VBA использую в Excel, но когда-то собирал информацию из таблиц по файлам txt и doc.
Пользовался примерно таким методом

ActiveDocument.Tables(1).Cell(i, 1)

может тебе пригодится?



Да с Excel проблем-то нет. Меня интересует именно Word

258
20 ноября 2003 года
SergeySV
1.5K / / 19.03.2003
судя по тому что я читал (сам не использовал) тебя спасет шаблон в формате XML.
266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV
судя по тому что я читал (сам не использовал) тебя спасет шаблон в формате XML.



XML не подойдёт - тяжёлый формат, а у пользователей слабые машины. Были бы мощьнее, я бы замену-вставку реализовал бы с перезагрузкой шаблона. Сейчас, вроде как, удалось накопать код позиционирования курсора в поле типа "Текст" из набора графики Word'а. Правда, пока не писал к этому ничего. Пока мучаюсь:{

267
20 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by mhaturov


XML не подойдёт - тяжёлый формат, а у пользователей слабые машины. Были бы мощьнее, я бы замену-вставку реализовал бы с перезагрузкой шаблона. Сейчас, вроде как, удалось накопать код позиционирования курсора в поле типа "Текст" из набора графики Word'а. Правда, пока не писал к этому ничего. Пока мучаюсь:{



Зачем тебе тогда заморачиваться с графикой Ворда, раз у юзеров машины слабые?

267
20 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Я вот в свое время делал так:
Документ делал в виде:

Фамилия: /family
Имя: /name

А дальше, зная порядковое расположение абзацев, заменял это на нужное:

Dim R1 As Range, R2 As Range

Set R1 = Doc.Paragraphs(1).Range
Pos = R1.Start + InStr(1, R1.Text, "/")
Set R2 = Doc.Range(Start:=Pos - 1, End:=R1.End - 1)
R2.Delete
R2.InsertAfter (NewText)
266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Cutty Sark


Зачем тебе тогда заморачиваться с графикой Ворда, раз у юзеров машины слабые?



А в чем же тогда делать? Нужно, чтобы анкеты были с подложкой, причём определённые подложки печатать, скорее всего, отдельно никто не станет. Нужно, чтобы прямо с ними печаталось. Cristal я использовать не могу, так как во-первых, время упущено, а, во-вторых, его просто у меня нет:{

267
20 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by mhaturov


А в чем же тогда делать? Нужно, чтобы анкеты были с подложкой, причём определённые подложки печатать, скорее всего, отдельно никто не станет. Нужно, чтобы прямо с ними печаталось. Cristal я использовать не могу, так как во-первых, время упущено, а, во-вторых, его просто у меня нет:{



Ну и сделай шаблон с подложкой. Подложка и заполнение анкеты - вещи не связанные...
Умеешь в Ворде подложку делать?

266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Cutty Sark


Ну и сделай шаблон с подложкой. Подложка и заполнение анкеты - вещи не связанные...
Умеешь в Ворде подложку делать?



В Ворде подложку? Я пока кладу на страницу рисунок, а на него кладу текстовые поля. Но, кстати, подложка всех проблем не решит - текст анкеты может быть написан на массе кракозябринских языков, поэтому он тоже, как подложка идёт, так как поддежка этих языков может не стоять у юзера. А заполняется анкета по-англицки и по-русски - с этим проблем нет. А как в Вроде сделать подложку? В экселе знаю, как, а в Ворде ещё не сталкивался с этим, поэтому не знаю.:{

267
20 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by mhaturov


В Ворде подложку? Я пока кладу на страницу рисунок, а на него кладу текстовые поля. Но, кстати, подложка всех проблем не решит - текст анкеты может быть написан на массе кракозябринских языков, поэтому он тоже, как подложка идёт, так как поддежка этих языков может не стоять у юзера. А заполняется анкета по-англицки и по-русски - с этим проблем нет. А как в Вроде сделать подложку? В экселе знаю, как, а в Ворде ещё не сталкивался с этим, поэтому не знаю.:{



1. Заходишь в колонтитулы: Меню/Вид/Колонтитулы
2. Вставляешь в верхний или нижний колонтитул нужную картинку.
3. Делаешь у картинки Обтекание=нет.
4. Закрываешь колонтитул.

266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Cutty Sark


1. Заходишь в колонтитулы: Меню/Вид/Колонтитулы
2. Вставляешь в верхний или нижний колонтитул нужную картинку.
3. Делаешь у картинки Обтекание=нет.
4. Закрываешь колонтитул.



А если 2 картинки - на 2 стороны листа?

267
20 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by mhaturov


А если 2 картинки - на 2 стороны листа?



Тогда без колонтитулов. Колонтитулы нужны только для того, чтобы на каждой странице повторяться.

А так просто берёшь рисунок, устанавливаешь у него Обтекание=Нет и Цвет Изображения = Подложка.
И все. Печатай посверху сколько душе угодно...

266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Cutty Sark


Тогда без колонтитулов. Колонтитулы нужны только для того, чтобы на каждой странице повторяться.

А так просто берёшь рисунок, устанавливаешь у него Обтекание=Нет и Цвет Изображения = Подложка.
И все. Печатай посверху сколько душе угодно...



Ну, в принципе, как вариант, можно сделать лист длинной 2 А4 и туда сунуть подложку. Но тут опять встаёт вопрос, как же в нужные места на листе нарисовать символы?

267
20 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by mhaturov


Ну, в принципе, как вариант, можно сделать лист длинной 2 А4 и туда сунуть подложку. Но тут опять встаёт вопрос, как же в нужные места на листе нарисовать символы?



Опять встает вопрос, что такое нужные места?
Варианты как найти нужное место:
1. Известны номер абзаца и номер символа.
2. Известно что-то уникальное, что там напечатано (типа $$ответ_на_вопрос_1$$)

Или какие-то комбинации этих двух способов (например в моем случае (приведен десятком постов выше), я знал номер абзаца и уникальный в этом абзаце символ "/".

267
20 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
И не надо делать длинный лист. Просто на первой странице один рисунок, а на второй - другой.
266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Cutty Sark


Опять встает вопрос, что такое нужные места?
Варианты как найти нужное место:
1. Известны номер абзаца и номер символа.
2. Известно что-то уникальное, что там напечатано (типа $$ответ_на_вопрос_1$$)

Или какие-то комбинации этих двух способов (например в моем случае (приведен десятком постов выше), я знал номер абзаца и уникальный в этом абзаце символ "/".



Нужные места, это поля типа Текстовое поле (из панели рисования), либо ячейка таблицы Word, либо поле из меню "вставка поля" - с чем удобнее работать. Я планирую в местах ответов на вопросы "выложить" эти объекты и в них из программы писать ответы. Беда в том, что не знаю, как их проинициализировать.:{

2.2K
21 ноября 2003 года
USA-Lesh
50 / / 02.04.2003
Может поможет.
459
21 ноября 2003 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by mhaturov


Да с Excel проблем-то нет. Меня интересует именно Word



Так ActiveDocument.Tables(1).Cell(i, 1)
это из VBA Word'а.

В принципе то, что в Excel Лист..!.Cell(i, 1)
в Word'е Tables(..).Cell(i, 1)

266
21 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by gacol


Так ActiveDocument.Tables(1).Cell(i, 1)
это из VBA Word'а.

В принципе то, что в Excel Лист..!.Cell(i, 1)
в Word'е Tables(..).Cell(i, 1)



Спасибо ОГРОМНОЕ всем!!! ЛЮДИ!!! Я ВАС ЛЮБЛЮ!!!:D :D :D

6.2K
05 декабря 2003 года
Semen
1 / / 05.12.2003
Цитата:
Originally posted by mhaturov


Спасибо ОГРОМНОЕ всем!!! ЛЮДИ!!! Я ВАС ЛЮБЛЮ!!!:D :D :D



На днях я озадачился этой-же проблемой вставки текста в ворд-файл в определенные места. Много искал в инете и натолкнулся на легкое и изящное решение этой задачи. Если есть у тебя MSDN, то вот индексы статей, все на забугорном языке написано, но статьи интуитивно понятные:
Q124862 - Word 95
Q131583 - Word 97
Q210271 - Word 2000
Хотя я принципиальных различий в статьях не нашел, но все-же...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог