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

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

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

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

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

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

Имеется англо-немецкий текст, требуется пометить как немецкие + выделить синим цветом (стандартным вордовским: RGB 0,0,255) все слова, в которых встречаются буквы "ö, ü, ä, ß", а также артикли "die, das, ein, eine"
(остальное потом выделю и размечу-покрашу вручную, ориентируясь на синий цвет)
Макрорекордером не сумел. Почему-то он выделение цветом у меня не записывает (Word 2003)
caute вне форума Ответить с цитированием
Старый 30.05.2013, 11:26   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

caute, может быть у вас в документах есть другой признак, по которому можно отличить немецкое слово от английского, например, немецкий текст идёт после знака "дефис" или "тире"?
Скрипт вне форума Ответить с цитированием
Старый 30.05.2013, 11:56   #3
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

Из четких признаков - только кавычки вокруг большинства немецких слов, но там и английских слов в кавычках хватает. Ничего, там ручной работы не так много останется, если хотя бы выделить синим места, в которых немецкие фразы (они практически все с артиклями и диакритикой).
caute вне форума Ответить с цитированием
Старый 30.05.2013, 12:52   #4
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Код:
Sub Procedure_1()
    
    Dim myCharecters(1 To 4) As Long
    Dim myArticles(1 To 3) As String
    Dim myBookmark As Word.Range
    Dim myFind As Word.Find
    Dim myWord As Word.Range
    Dim i As Long
    
    
    '1. Помещаем в массив "myCharecters" юникод-коды
        'символов. Помещаем в массив, чтобы можно
        'было использовать в коде цикл. С циклом код меньше получится.
    myCharecters(1) = 223
    myCharecters(2) = 228
    myCharecters(3) = 246
    myCharecters(4) = 252
    
    
    '2. Помещаем в массив "myArticles" артикли.
    myArticles(1) = "das"
    myArticles(2) = "die"
    myArticles(3) = "ein"
    
    
    '3. Создаём виртуальную закладку с помощью которой
        'будем перемещаться по документу. Даём этой закладке
        'VBA-имя "myBookmark".
    'Вставляем закладку в начало документа.
    Set myBookmark = ActiveDocument.Range(Start:=0, End:=0)
    
    
    '4. Создаём объект, который будет искать.
        'Даём этому объекту VBA-имя "myFind".
    Set myFind = myBookmark.Find
    
    
'-----------------------------------------------------------------------------------------------------
    '5. ПОИСК НЕМЕЦКИХ СЛОВ ПО СПЕЦИАЛЬНЫМ СИМВОЛАМ.
    
    'В цикле с "i" просматриваем все символы в массиве.
    For i = 1 To UBound(myCharecters) Step 1
    
        'Ставим закладку в начало документа.
        myBookmark.SetRange Start:=0, End:=0
        
        'Указываем, какой текст искать.
        'Переводим число в символ, т.к. команда "Find" с символами работает,
            'а не с кодами символов.
        myFind.Text = ChrW(myCharecters(i))
        
        'Продолжаем поиск, пока находится искомый текст.
        Do While myFind.Execute = True
        
            'Если будет найдено, то закладка окружит найденный текст.
            'По этой закладке получаем доступ к слову.
            Set myWord = myBookmark.Words(1)
            
            'Программа "Word" включает в слово и пробел, который
                'идёт за словом, поэтому, если справа есть пробел,
                'то убираем его из слова.
            'Count:=wdBackward - двигаем конец слова в начало документа.
            myWord.MoveEndWhile Cset:=" ", Count:=wdBackward
            
            'Делаем у слова нужный язык.
            myWord.LanguageID = wdGerman
            
            'Делаем у слова нужный цвет.
            myWord.HighlightColorIndex = wdBlue
            
            'Перемещаем закладку в конец найденного фрагмента,
                'чтобы продолжить дальше поиск по документу.
            myBookmark.Collapse Direction:=wdCollapseEnd
            
        Loop
        
    Next i


'-----------------------------------------------------------------------------------------------------
    '6. ПОИСК НЕМЕЦКИХ СЛОВ ПО АРТИКЛЯМ.
    
    '6.1. Устанавливаем закладку в начало документа.
    myBookmark.SetRange Start:=0, End:=0
    
    '6.2. Устанавливаем цвет для выделения цветом.
    Options.DefaultHighlightColorIndex = wdBlue
    
    
    '6.3. Делаем настройки в объекте "Find".
    '6.3.1. Буду использовать подстановочные знаки.
    myFind.MatchWildcards = True
    
    '6.3.2. Заменять на немецкий язык будем с помощью команды "Find".
    myFind.Replacement.LanguageID = wdGerman
    
    '6.3.3. Выделять цветом будем с помощью команды "Find".
    myFind.Replacement.Highlight = True
    
    
    'В цикле с "i" просматриваем артикли в массиве "myArticles".
    For i = 1 To UBound(myArticles) Step 1
        
        'Ищем в начале слова артикль, затем пробел, затем
            'любое количество символов до конца слова.
        myFind.Text = "<" & myArticles(i) & " *>"
        
        myFind.Execute Replace:=wdReplaceAll
        
    Next i

'-----------------------------------------------------------------------------------------------------


End Sub
Скрипт вне форума Ответить с цитированием
Старый 30.05.2013, 13:49   #5
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

ради интереса , хотелось вы посмотреть кусочек файла


лично раскрашивала словари
--португало-русские
--англо-русские

конечно это легче
--окрасила все в базовый цвет
--выделила кириллицу --раскрасила
--выбрала курсив --перекрасила
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 30.05.2013, 16:10   #6
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

нашла кусок нем-анг словаря
раскрасила
Вложения
Тип файла: zip DE-en.zip (400.3 Кб, 9 просмотров)
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 30.05.2013, 18:21   #7
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

спасибо, shanemac51 и Скрипт
фрагмент текста прикрепляю
макрос еще не успел попробовать, только вернулся
Вложения
Тип файла: doc Reality as Activity.doc (42.0 Кб, 10 просмотров)
caute вне форума Ответить с цитированием
Старый 30.05.2013, 19:15   #8
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

ув. Скрипт, подскажите, плиз, команду аналогичную
Код:
Options.DefaultHighlightColorIndex = wdBlue
которая бы красила в синий только шрифт, без highlighting
(для myWord.HighlightColorIndex = wdBlue я нашел такую замену: myWord.Font.ColorIndex = wdBlue)
caute вне форума Ответить с цитированием
Старый 30.05.2013, 19:22   #9
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Код:
myWord.Font.ColorIndex = wdBlue
Скрипт вне форума Ответить с цитированием
Старый 30.05.2013, 20:23   #10
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

может, я и лопух, но не настолько же
Run-time error '9':
Subscript out of range
caute вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделить цветом СерегаЯ PHP 3 29.04.2013 16:34
выделить диапазон цветом по найденному слову DAN1L Microsoft Office Excel 2 09.12.2012 22:23
выделить цветом в мемо iliili Общие вопросы Delphi 3 01.10.2010 16:57
Выделить цветом записи в ленточной форме Swatch Microsoft Office Access 2 06.09.2010 14:43
выделить все строки цветом по заданому условию mars56 Microsoft Office Excel 2 15.02.2010 07:55