Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2009, 14:58   #1
krendel34rus
 
Регистрация: 27.11.2009
Сообщений: 5
Вопрос Указатель для однокоренных слов

Как сделать такой указатель, чтобы он указывал слово в именительном падеже, а ссылался на все однокоренные слова. Я так понимаю проблема в том, как отметить эти разные слова одной командой. Ну, допустим, мне не лень отметить каждое слово. Но как их потом объединить в указателе, с тем же условием отсутствия повторений номеров страниц?
krendel34rus вне форума Ответить с цитированием
Старый 27.11.2009, 16:54   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

{XE "слово:слова:слову:слово:словом :на слове"}
Но, к сожалению в список войдут все формы, а не только те, которые есть в документе
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 27.11.2009, 22:23   #3
krendel34rus
 
Регистрация: 27.11.2009
Сообщений: 5
По умолчанию

А как пометить ВСЕ?
krendel34rus вне форума Ответить с цитированием
Старый 28.11.2009, 07:17   #4
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Лиха беда...

krendel34rus! Вам viter.alex это и предложил, пожалев лишь об излишествах данного способа.

Я и сам мечтаю научиться — всю ночь (раз в 4-й) перечитывал книжку; многое понял. Опять.

Начните, пожалуй, с нажатия альт-шифт-икс (Alt+Shift+X).

(Я заполнил диалоговое окно от балды, а в книге Word 2000 всё это разжёвано на 9 страницах + ещё сборка на 1 страницу.)
Цитата:
Сообщение от krendel34rus Посмотреть сообщение
Sasha_Smirnov, а почему в диапазоне указывается закладка?
Это на случай, когда нужен в указателе диапазон страниц. Выделяешь его, «закладываешь» (по Ctrl-Shift-F5) и вводишь имя.
Впоследствии не только Word, но и его пользователь может это место найти также по Ctrl-G. Если вспомнит имя.
Изображения
Тип файла: png Prodigy.png (11.7 Кб, 268 просмотров)

Последний раз редактировалось Sasha_Smirnov; 29.11.2009 в 04:12.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 28.11.2009, 17:29   #5
krendel34rus
 
Регистрация: 27.11.2009
Сообщений: 5
По умолчанию

Sasha_Smirnov, а почему в диапазоне указывается закладка? Эту закладку, а точнее закладки нужно сначала "заложить". А закладки делаются по одной, "поштучно".

Так это, трактат не нужно Вообще интересно, цитата: "Я и сам мечтаю научиться", получилось?
krendel34rus вне форума Ответить с цитированием
Старый 28.11.2009, 19:55   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Закладку указывать не обязательно, оставьте параметр «текущая страница»
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 29.11.2009, 17:05   #7
krendel34rus
 
Регистрация: 27.11.2009
Сообщений: 5
По умолчанию

Похоже, что лишь инструментом Указатель, добиться поставленной задачи довольно трудоемко.
http://www.cyberforum.ru/ms-word/thr...tml#post380732
Однако, есть простой способ решения этой проблемы с помощью макроса.
http://www.cyberforum.ru/vba/thread6...tml#post383064
krendel34rus вне форума Ответить с цитированием
Старый 29.11.2009, 17:28   #8
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Что ж, согласен. Решение неплохое, но не оптимальное. Перебирать каждое слово в тексте, это очень и очень напряжная работа. Думаю, что поиском будет проще:
Код:
Sub MarkSameCoreIndexes()
  Dim sCore As String
  Dim sIndex As String
  Dim oFootnote As Footnote
  
  sCore = InputBox("Введите корень", "Производим пометку")
  If sCore = Empty Then Exit Sub
  sIndex = InputBox("Введите слово, которое должно быть в Указателе", "Производим пометку")
  If sIndex <> Empty Then Exit Sub
  
  Application.ScreenUpdating = False
  ActiveWindow.ActivePane.View.ShowAll = False
  With ActiveDocument.Range.Find
    .Text = sCore
    While .Execute
      ActiveDocument.Indexes.MarkEntry .Parent.Words(1), sIndex
    Wend
  End With
  For Each oFootnote In ActiveDocument.Footnotes
    With oFootnote.Range.Find
        .Text = sCore
      While .Execute
        ActiveDocument.Indexes.MarkEntry .Parent.Words(1), sIndex
      Wend
    End With
    DoEvents
  Next oFootnote
  Application.ScreenUpdating = True
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 30.11.2009, 02:08   #9
krendel34rus
 
Регистрация: 27.11.2009
Сообщений: 5
По умолчанию

Действительно, такой метод работает намного быстрее. Это особенно заметно, когда большой документ. Мало того, такой метод регистра не зависим, в отличие от предыдущего варианта.
krendel34rus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
по вводу слов в массив и подсчёт введённых слов -ushёl- Общие вопросы C/C++ 4 16.11.2009 00:45
Macros для нахождения и удаления слов конгер Microsoft Office Word 1 13.10.2009 18:14
Код для расшировки двоичных слов slon_slon_slon Общие вопросы C/C++ 0 11.10.2009 17:42
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19
Создание проги для фильтрации списка слов за разными критериями Makoto-kun Помощь студентам 1 10.01.2009 04:37