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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2013, 15:47   #1
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию Отобрать слова, начинающиеся с заглавных букв

Для изготовления индексов (именных и пр.), которые помещают в конце бумажных книжек, нужен макрос, который бы выбирал все слова длиннее одной буквы (для отсева предлогов и союзов), начинающиеся с заглавных букв (кириллицей и латиницей) и соединял их в список, а потом удалял дубликаты и выстраивал по алфавиту.
Чтобы на выходе получалось так:
Амстердам
Петров
Петрову
Скорость
Широкий

и т.д.

Кроме того пригодилась бы в макросе опция отсева слов из заданного списка: "Мы, Однако, Где" и т.п. Хотя это не обязательно, можно и ручками почистить такое.
caute вне форума Ответить с цитированием
Старый 23.03.2013, 16:51   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Цитата:
caute: Кроме того пригодилась бы в макросе опция отсева слов из заданного списка: "Мы, Однако, Где" и т.п.
у вас много таких слов, которые надо отсеять: десятки, сотни, тысячи?
Скрипт вне форума Ответить с цитированием
Старый 23.03.2013, 17:33   #3
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

нет, сотня - максимум две.
но вполне устроит, если просто выкинуть два десятка самых ходовых местоимений и предлогов

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

Последний раз редактировалось caute; 23.03.2013 в 17:38.
caute вне форума Ответить с цитированием
Старый 23.03.2013, 17:36   #4
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

caute, значит эти слова должны где-то храниться. Ведь в сам код не станешь же записывать 100 слов.

Слова можно поместить в книгу "Excel". Мне кажется, что это самый удобный способ.

Другие варианты: в текстовый файл (расширение txt), в Word-документ.

Как вы хотите?
Скрипт вне форума Ответить с цитированием
Старый 23.03.2013, 18:09   #5
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

годится любой вариант, но лично мне приятнее файлик doc
чтоб его можно было обрабатывать другими макросами Word (мало ли, вдруг понадобится)
caute вне форума Ответить с цитированием
Старый 23.03.2013, 18:11   #6
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

а можно и в код записать, но не в тело макроса, а таким связанным макространицем (не знаю, как это правильно назвать, но видел такое в "Методичке")
caute вне форума Ответить с цитированием
Старый 23.03.2013, 19:20   #7
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Пункт 1

Цитата:
caute: годится любой вариант, но лично мне приятнее файлик doc
программа "Word" содержит много всяких элементов: поля, закладки, непечатаемые символы и т.п., поэтому Word-документ в качестве базы данных не подходит для программирования, т.к. нужно учитывать очень много деталей.
А в Excel-книге всё навиду: вот таблица, заноси в неё данные и всё готово. Нюансы, конечно тоже свои есть - знания и опыт работы в Excel нужен, чтобы учесть какие-нибудь детали, но по идее должно всё гладко пройти.


Пункт 2

caute, хорошую идею подали (мне такое в голову не приходило): использовать стандартные модули, как текстовые файлы (имеются ввиду текстовые файлы с расширением "txt"). Ведь стандартный модуль, по идее, - это ведь обычный текстовый файл, который содержит код, который компьютер читает и делает действия. В выложенном документе я использовал предложенный вами вариант.


Пункт 3
  1. Для работы кода нужно подключить библиотеку (в комментариях к коду написано. Комментарии в коде зелёным цветом).
  2. В выложенном документе нужно запускать процедуру "Макрос1" из модуля "Module_1_Main".
  3. Результат выводится в новый Word-документ.
Вложения
Тип файла: zip Макрос.zip (26.4 Кб, 21 просмотров)
Скрипт вне форума Ответить с цитированием
Старый 23.03.2013, 20:17   #8
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

исключаемые слова писать в Module_2_list на место "СловоОдин" да?
а что за слова в самом документе: WordOnewordTwo и т.д.?
caute вне форума Ответить с цитированием
Старый 23.03.2013, 20:25   #9
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Пункт 1

Цитата:
caute: исключаемые слова писать в Module_2_list на место "СловоОдин" да?
исключаемые слова нужно писать сюда "Module_2_list". Только не "на место", а добавлять для каждого слова строку кода:
Код:
    myDictionary_1.Add Key:="СловоОдин", Item:=""
В "Key" пишите слово, которое нужно исключить.
Параметр "Item" в нашем случае никакого смысла не имеет - это просто необходимость, чтобы сделать команду "myDictionary_1.Add". В коде я указал букву "A", а сейчас попробовал и оказывается вообще можно ничего не указывать.


Пункт 2

Слова в документе, который я выложил, я использовал для тестирования кода. Не обращайте внимание на эти слова.
Скрипт вне форума Ответить с цитированием
Старый 23.03.2013, 21:16   #10
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

Открыл макрос, скопировал его содержимое в normal.dot, при запуске выдает ошибку.
Compile error: Variable not defined
вот тут подсвечивает: Call ModuleList.Procedure_1(myDictionary _1)
видимо, что-то сделал не так
caute вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать последовательность заглавных букв Anka1101 Помощь студентам 24 14.02.2013 17:34
вывести слова начинающиеся с латинских букв alex(21) Общие вопросы C/C++ 5 08.03.2012 19:11
Поиск заглавных букв sergei64_89 SQL, базы данных 1 08.10.2011 09:25
Сортировка заглавных и строчных букв Ronk Общие вопросы C/C++ 6 03.03.2010 19:44
процедура, которая выводит все слова, начинающиеся с согласных букв латинского алфавита. sergeyfsd Паскаль, Turbo Pascal, PascalABC.NET 6 21.02.2008 22:29