Помощь - Поиск - Пользователи - Календарь
Полная версия: Макрос выделения 1-го слова (MS Word 2003)
ProDTP > Графика и препресс > Скриптинг
gasyoun
Необходимо выделить первое слово в каждом новом абзаце - 4500 строк в словаре, а форматы разные - придумать условия макроса не смог, цифр там нет, но длина слов разная - отделяется от значения слова 1 пробелом. Имели ли дело?

  М.
Evgen
Готового решения сейчас не имею, но думаю, что можно решить задачу следующим образом (сейчас имею под рукой только 2000).
Известно, что, записав макрос, потом можно редактировать его (или промсотреть код). Это основная мысль.
Пишем макрос: начало записи, делаем необходимые действия ("Ctrl+стрелка вниз"). Отсюда имеем код перехода на следующий параграф. Соответственно, "Ctrl+Shift+стрелка вправо" даёт нам код выделения слова. Конец записи макроса.
Ну и, разумеется, не нужно при этом перерисовывать экран (вроде это контролировалось).
Думаю, что в итоге таким образом можно собрать программный код для первых слов во всех абзацах.

Это сообщение было отредактировано:  Evgen, 15 Янв, 2005 г. - 23:41
gasyoun
Как тогда отметить, что там по середине слово или это не надо?
1) знак нового параграфа
2) слова разной длины
3) конец слова и пробел
Пока не получается, вручную пока еще не стану...
типа http://web.ticino.com/multilingual/macro_f..._phrase.htm

Это сообщение было отредактировано:  gasyoun, 16 Янв, 2005 г. - 01:16
Janyzak
Открываете Ворд.
Открываете текст с абзацами.
В ворде включаете "непечатные знаки" (в "инструментах" знак абзаца).
В Вашем тексте теперь каждый абзац обозначен своим знаком.

Открываете "Сервис ->Макрос ->Запись макроса...
Пишете название макроса, хоткей этому макросу.

Теперь идет запись макроса.

Открываете диалог "поиск" (ctrl+F).

В строке "поиск" пишете - ^p (это поиск знака абзаца)

Нажимаете на OK.

Знак абзаца найден. Вы выходите на текст и нажимаете на стрелку "вправо".

Курсор станет в начале первого слова следующего абзаца.

Теперь нажимаете на  shift+ctrl+"стрелка вправо" - будет выделено искомое слово.
Нажимаете на ctrl+B - это слово станет  жирным.

Затем нажимаете на стрелку "вправо" - это для того, чтобы выделение "потухло".

Нажимаете на "стоп" в макрозаписи.

Закрываете Ворд с тем, чтобы только что сделанный Вами макрос запомнился-записался в Normal.dot.

Снова загружаете Ворд, свой файл, где Вам следует в начале текста сделать пустой абзац.

Затем нажимаете на хоткей того макроса, что Вы создали.

Наслаждайтесь, как говорится.

С уважением,
Жанызак.
Evgen
Не понял, с чем связаны встречные вопросы...
Что это значит:  "Как тогда отметить, что там по середине слово или это не надо?"

Было что: "Необходимо выделить первое слово в каждом новом абзаце - 4500 строк в словаре, а форматы разные - придумать условия макроса не смог, цифр там нет, но длина слов разная - отделяется от значения слова 1 пробелом."

1) "Необходимо выделить первое слово в каждом новом абзаце" — так это вроде как возможно сделать.
2) "Форматы разные" я понял как "форматирование текста может оказаться любым, главное — кодировка символов". Это верно?
3) "цифр там нет" — да и фиг-то с ними, цмфры — те же символы.
4) "длина слов разная" — а какая разница при выделении слова через быстрые клавиши?
5) "отделяется от значения слова 1 пробелом" — здесь я переспрошу: а что значит "значение слова"?
6) единственное, что я сейчас не проверил, так это работу с буфером обмена через макрос. Предположил, что ЭТО должно быть.

Это сообщение было отредактировано:  Evgen, 16 Янв, 2005 г. - 01:30
Shlyapa
А вёртска данной конкретной работы в Word-е — непременное условие?

Ведь в InD CS (InCopy CS) выделение первого слова каким угодно образом (хоть цветом, хоть начертанием, хоть как) делается просто через параметры стиля абзаца, с помощью Nested Styles.
gasyoun
Цитата
А вёртска данной конкретной работы в Word-е — непременное условие?


Нет, но так удобнее, так как остальные проги просто не справляются с азиатскими языками пока... Loop корявый...
Shlyapa
Цитата
остальные проги просто не справляются с азиатскими языками пока... Loop корявый...
Да ну?!
Адобовский софт последних версий прекрасно понимает любые языки. По-китайски и по-японски я не напрягаясь верстал в InD и частично в AI, когда нужны были «строчки» вертикально справа налево.
Kassian
gasyoun
Цитата
Я еще не поуму как весь цикл присвить, так как ВБ выдает баг, а он уже про то, что можно цвет пристроить - да какая разница что - главное что-то отличительное от всего остального текста вот и все.

Если ты внимательно прочитаешь мои посты, то увидишь, что ВБ тебе не нужен будет вообще!
Достаточно сделать N-ное количество глобальных замен. При желании можно при этом включить запись макроса...
gasyoun
ВБ, дело в том, что на тех форумах, где я читаю твои посты, не сразу и не всегда могу понять конкретние советы к действию. Глобальные замены, должно быть имеют какой то алгоритм их запуска о котором, увы, в применении к таким требованиям, я и не слышал. Извини, если можно еще конкретики, буду только благодарен за твои в остальном весьма дельные и практические советы.
Evgen
2 gasyoun
Цитата
Глобальные замены, должно быть имеют какой то алгоритм их запуска о котором, увы, в применении к таким требованиям, я и не слышал.

Это простая замена текста (точнее говоря, поиск+замена). А глобальная — да потому что запускается (при желании) по всему тексту.
Производится в Ворде штатными средствами. Довольно гибкий инструмент.
В диалоге "Найти и заменить" под кнопкой "Специальный" находятся именно специальные (служебные) символы/знаки/объекты, как то: знак абзаца, разрыв раздела и т.д. Оперируя поиском и заменой с использованием вышеупомянутых объектов, можно решить многие задачи по приведению текста к нужному виду.
Evgen
Цитата
А куда именно ставить While Not... не пойму, все обратно выдает... застрял.

Не настаиваю на программном решении, просто уточню про While.
——————————————————————————————————
1) Syntax:

While condition
[statements]

Wend
——————————————————————————————————
2) Syntax

Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]

Loop

Или же:

Do
[statements]
[Exit Do]
[statements]

Loop [{While | Until} condition]
——————————————————————————————————
Т.е., попутал я немного. Идею про While привел по памяти из Си. sad.gif
Выше приведено оформление циклов из справки по Visual Basic 6.3
gasyoun
Евген - рад твоему совету.
Еще скажи есть ли "справки по Visual Basic 6.3" в одном пдф или .chm где-нить? Так или иначе - спасибо - оказывается я знал, но не знал что это называется глобальной заменой, а также про цпец. символы знал, но ни мог их скомбинировать, чтобы слово целое выделить, теперь могу. Dankeschon!
Evgen
Цитата
есть ли \"справки по Visual Basic 6.3\" в одном пдф или .chm где-нить?

Выслал  *.chm на hotbox, который указан в пропертях.
Обращаю внимание на то, что версия 6.3 идет с Офисом ХР, а какая версия в твоём (2003), я не знаю.
Стич
Код
For Each myPara In ActiveDocument.Paragraphs
    'делаем все, что нужно c абзацем
Next 'переходим к следующему
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2012 Invision Power Services, Inc.

Реклама

   Rambler's Top100    Яндекс цитирования