1 | |
Поиск в Word участков текста с заданным шрифтом22.01.2013, 08:45. Показов 7968. Ответов 12
Метки document, find, find.execute, microsoft word, ms word, ole, range, ворд, диапазон, документ, поиск в диапазоне, поиск в документе, поиск по типу шрифта (Все метки)
Можно ли написать процедуру для поиска в Word текста с указанным шрифтом, например, Arial? В Word такой поиск есть, и макрос записал, но внутри макроса ничего такого (с Arial) нет...
0
|
22.01.2013, 08:45 | |
Ответы с готовыми решениями:
12
Вывод графических элементов: строки текста заданным цветом и шрифтом Delphi 7 ClienSocket.Socket.SendText(Edt2), отправка текста на сервер с заданным шрифтом Поиск нужной таблицы и выделение текста по заданным условиям Поиск и замена текста в word |
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
||||||
22.01.2013, 10:04 | 2 | |||||
Поиск частей текста с заданными параметрами шрифта. В данном случае - поиск частей текста с заданным именем шрифта. Найденные части помечаются жирным красным шрифтом.
1
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
||||||
22.01.2013, 18:15 | 4 | |||||
Такие участки можно методом исключения искать. Т. е., у нас есть исходный диапазон, ищем в нём текст со шрифтом Times New Roman. Предположим, нашли такой участок. Тогда первый участок (диапазон) со шрифтом, отличным от Times New Roman, будет расположен от начала исходного диапазона до начала найденного диапазона. Потом продолжаем поиск участков со шрифтом Times New Roman. Если опять нашли такой участок, то его диапазон расположен от конца диапазона со шрифтом Times New Roman, который мы нашли на предыдущей итерации и до начала диапазона, который мы нашли на текущей итерации.
И в конце, когда при очередном поиске мы не нашли участок со шрифтом Times New Roman, то значит, последний участок со шрифтом, отличным от Times New Roman, будет расположен от конца найденного диапазона на предыдущей итерации и до конца исходного диапазона (в котором мы выполняем поиск). Вот таким образом можно отыскать все участки, на которых шрифт отличен от заданного (отличен от Times New Roman, в данном случае). --- Вот как это можно сделать. Только здесь я взял шрифт "Arial", а не "Times New Roman".
1
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
||||||
22.01.2013, 21:01 | 6 | |||||
Да, верно - ошибка в случаях, когда участок с заданным шрифтом расположен в самом начале или (и) в самом конце искомого диапазона. Тогда надо добавить проверку на пустой диапазон. Т. е., если позиция начала и конца совпадают, то такой диапазон не учитывать.
Исправленный код:
0
|
23.01.2013, 10:46 [ТС] | 7 |
Ок, работает! =)
Добавлено через 13 часов 38 минут Еще есть проблемка, часто попадается и в других случаях. Не может перепрыгнуть автоматическое оглавление, застревает в нем... Как его пропустить?
0
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
|
23.01.2013, 13:41 | 8 |
Наверное там какая-то особенность есть. А можешь здесь опубликовать пример файла, где застревает поиск?
0
|
23.01.2013, 15:09 [ТС] | 9 |
А нет, все работает... Это мои поиски глючные, наверно потому, что я их делал с помощью Selection по Корнякову... Переделаю по твоему... голова правда распухла, спрошу в другой теме если не получится =)
0
|
24.01.2013, 16:50 [ТС] | 10 | |||||
Все таки вроде поиск поглюкивает... Вот немножечко исправил, ищу текст, отличный от Times New Roman. Результат в richedit.
Курсовик.doc Хотя текст вроде полностью 'Times New Roman'
0
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
|||||||||||
26.01.2013, 08:10 | 11 | ||||||||||
На этом файле проверил - в самом деле, почему-то два участка определяются как со шрифтом, отличным от Times New Roman, хотя для всего текста в документе установлен Times New Roman. Исключая объекты с формулами. Я сегодня вечером поразбираюсь с этим.
Добавлено через 20 часов 46 минут Сейчас разбирался с поиском по имени шрифта. Добавил обработку следующих особенностей: - Оказалось, что если во всём диапазоне поиска установлен искомый шрифт, то весь этот текст не обнаруживается. - В диапазонах, пропущенных системой поиска, шрифт может не только отличаться от искомого, но и может оказаться равным искомому или неопределённым. По крайней мере, такие вещи происходят в обсуждаемом документе. В результате, для исследования документа получился такой VBA код:
В Delphi подобный код будет выглядеть так:
Код
------------------------------ Дипазон поиска: 0 - 6217 Заданный шрифт: Times New Roman (+) Times New Roman: 0 - 1 (+) Times New Roman: 1 - 2 (+) Times New Roman: 2 - 3 (+) Times New Roman: 3 - 4 (+) Times New Roman: 4 - 5 (+) Times New Roman: 5 - 14 (+) Times New Roman: 14 - 686 (+) Times New Roman: 686 - 1306 (+) Times New Roman: 1306 - 1513 (+) Times New Roman: 1513 - 1626 (+) Times New Roman: 1626 - 1655 (+) Times New Roman: 1655 - 1772 (+) Times New Roman: 1772 - 2032 (+) Times New Roman: 2032 - 2127 (+) Times New Roman: 2127 - 2141 (+) Times New Roman: 2141 - 2176 (+) Times New Roman: 2176 - 2192 (+) Times New Roman: 2192 - 2209 (+) Times New Roman: 2209 - 2239 (+) Times New Roman: 2239 - 2281 (+) Times New Roman: 2281 - 2333 (+) Times New Roman: 2333 - 2376 (+) Times New Roman: 2376 - 2433 (+) Times New Roman: 2433 - 2667 (+) Times New Roman: 2667 - 2768 (+) Times New Roman: 2768 - 2779 (+) Times New Roman: 2779 - 2787 (+) Times New Roman: 2787 - 2813 (+) Times New Roman: 2813 - 2852 (+) Times New Roman: 2852 - 2974 (+) Times New Roman: 2974 - 3113 (+) Times New Roman: 3113 - 3311 (+) Times New Roman: 3311 - 3338 (+) Times New Roman: 3338 - 3470 (+) Times New Roman: 3470 - 3471 (+) Times New Roman: 3471 - 3717 (+) Times New Roman: 3717 - 3742 (+) Times New Roman: 3742 - 3800 (+) Times New Roman: 3800 - 3955 (+) Times New Roman: 3955 - 3959 (+) Times New Roman: 3959 - 3960 (+) Times New Roman: 3960 - 3961 (+) Times New Roman: 3961 - 3962 (+) Times New Roman: 3962 - 3963 (+) Times New Roman: 3963 - 3964 (+) Times New Roman: 3964 - 3965 (+) Times New Roman: 3965 - 3966 (+) Times New Roman: 3966 - 3967 (+) Times New Roman: 3967 - 3968 (+) Times New Roman: 3968 - 3969 (+) Times New Roman: 3969 - 3970 (+) Times New Roman: 3970 - 3971 (+) Times New Roman: 3971 - 3972 (+) Times New Roman: 3972 - 3973 (+) Times New Roman: 3973 - 3974 (+) Times New Roman: 3974 - 3975 (+) Times New Roman: 3975 - 3976 (+) Times New Roman: 3976 - 3977 (+) Times New Roman: 3977 - 3978 (+) Times New Roman: 3978 - 3979 (+) Times New Roman: 3979 - 3980 (+) Times New Roman: 3980 - 3981 (+) Times New Roman: 3981 - 3982 (+) Times New Roman: 3982 - 3983 (+) Times New Roman: 3983 - 4010 (+) Times New Roman: 4010 - 4035 (+) Times New Roman: 4035 - 4036 (+) Times New Roman: 4036 - 4317 (+) Times New Roman: 4317 - 4375 (+) Times New Roman: 4375 - 4442 (+) Times New Roman: 4442 - 4452 (+) Times New Roman: 4452 - 4485 (+) Times New Roman: 4485 - 4787 (+) Times New Roman: 4787 - 4905 (+) Times New Roman: 4905 - 4939 (+) Times New Roman: 4939 - 5073 (+) Times New Roman: 5073 - 5074 (+) Times New Roman: 5074 - 5111 (+) Times New Roman: 5111 - 5112 (+) Times New Roman: 5112 - 5452 (+) Times New Roman: 5452 - 5569 (+) Times New Roman: 5569 - 5598 (+) Times New Roman: 5598 - 5607 (+) Times New Roman: 5607 - 5632 (+) Times New Roman: 5632 - 5692 (+) Times New Roman: 5692 - 5950 (+) Times New Roman: 5950 - 5971 (+) Times New Roman: 5971 - 6068 (+) Times New Roman: 6068 - 6217 Код
------------------------------ Дипазон поиска: 0 - 6217 Заданный шрифт: Times New Roman (!) ?: 0 - 6217 Если поизучать документ, то обнаруживается следующее: - При выделении всего содержимого документа через CTRL+a, шрифт оказывается неопределённым - это видно в элементе, который показывает имя шрифта на панели инструментов. - Если начать выделять содержимое документа сверху, то не доходя до конца 3-ей страницы, шрифт становится неопределённым. - Если начать выделение снизу, то шрифт оказывается неопределённым тоже на 3-ей странице, но выше - ближе к её началу. - На том месте, где записана формула под номером 28. --- За разъяснениями можно попробовать обратиться в разделы: VBA и MS Office Word. Может там кто-то знает природу всех этих явлений.
1
|
27.01.2013, 12:25 [ТС] | 12 | ||||||||||
Долго разбирался, поскольку вылезла еще проблема. На некоторых файлах поиск зацикливается, то есть постоянно происходит шаг вперед потом шаг назад. Открыл файл, поискал вручную, такое же зацикливание.
Пришлось перескакивать такие участки и код модифицировать.
1
|
21.04.2013, 13:50 [ТС] | 13 |
В общем, я поменял все. Так как для трех и более шрифтов код не годится.
В итоге 1. сначала получаю список всех шрифтов (для этого просто просматриваю все символы текста и узнаю их шрифт). 2. делаю поиск по шрифтам из списка, отличных от Times New Roman. Все. Зато код линеен и более понятен. Единственная проблема - на просмотр всех символов уходит значительное время. Немного оптимизировал, просматриваю только каждый 5 символ, и скорость более-менее. Может есть более быстрый способ получения списка используемых именно в данном документе шрифтов?
0
|
21.04.2013, 13:50 | |
21.04.2013, 13:50 | |
Помогаю со студенческими работами здесь
13
Поиск и замена текста в Word Поиск текста в Word-документе Поиск текста в Word документе Поиск текста в документах Word Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |