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

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

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

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

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

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

В наличии документ на четырех языках: русский, немецкий, английский, латинский (помечен как "без проверки орфографии"). Требуется раскрасить (покрасить только цвета шрифта, без подсветки фона - только font color, не highlight) последних трех языков разными цветами - скажем, синий, красный и (для латинских слов, помеченных как "без проверки") бирюзовый.
Раскраска нужна для всех частей текста, включая постраничные и концевые сноски. Подопытный кусочек документа прилагается.
Пособите, пожалуйста. Более сложный макрос на эту тему недавно написал ув. Скрипт тут:
http://www.programmersforum.ru/showthread.php?t=237703
Вложения
Тип файла: doc Ratio.doc (31.5 Кб, 10 просмотров)
caute вне форума Ответить с цитированием
Старый 09.06.2013, 23:29   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

caute, если один раз надо применить, то воспользуйтесь "Найти и заменить". Поставьте в поле "Найти" курсор и с помощью кнопки "Формат" выберите искомый язык. Затем поставьте курсор в поле "Заменить" и выберите нужный цвет шрифта. Затем нажмите "Заменить все".
Скрипт вне форума Ответить с цитированием
Старый 10.06.2013, 00:15   #3
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

поковырялся с макросами для пакетной замены, завтра продолжу, в крайнем случае, вы правы, не так уж много там дел для очумелых ручек
caute вне форума Ответить с цитированием
Старый 10.06.2013, 07:07   #4
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

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

Макросы нужны для частого применения.
Скрипт вне форума Ответить с цитированием
Старый 10.06.2013, 09:27   #5
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

на самом деле, документов около 20-ти, но это главы одной книги
пригодится ли такой именно макрос в будущем, трудно сказать, но его можно было бы модифицировать, меняя цвета и языки, для других подобных текстов.
Мне подумалось, что это может быть всего пара строк кода. Достаточно большой макрос, конечно, не стоит писать в данном случае
caute вне форума Ответить с цитированием
Старый 10.06.2013, 09:45   #6
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Макрос для немецкого языка. Обрабатывает основную часть документа и сноски.
Код:
Sub Макрос1()
    
    '1. Выделение цветом основной части документа.
    With ActiveDocument.Range.Find
        'Код получил с помощью макрорекордера.
        .LanguageID = wdGerman
        .Replacement.Font.Color = 6299648
        .Execute Replace:=wdReplaceAll
    End With
    
    '2. Выделение цветом сносок, которые находятся в конце страницы.
    'Сначала смотрим, существуют ли сноски, чтобы не возникло ошибки.
    If ActiveDocument.Footnotes.Count > 0 Then
        With ActiveDocument.StoryRanges(wdFootnotesStory).Find
            .LanguageID = wdGerman
            .Replacement.Font.Color = 6299648
            .Execute Replace:=wdReplaceAll
        End With
    End If
    
    '3. Выделение цветом концевых сносок.
    If ActiveDocument.Endnotes.Count > 0 Then
        With ActiveDocument.StoryRanges(wdEndnotesStory).Find
            .LanguageID = wdGerman
            .Replacement.Font.Color = 6299648
            .Execute Replace:=wdReplaceAll
        End With
    End If
    
End Sub

Последний раз редактировалось Скрипт; 10.06.2013 в 09:52.
Скрипт вне форума Ответить с цитированием
Старый 10.06.2013, 09:58   #7
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Вот так можно изменить код, когда нужно делать одно и то же действие несколько раз. Нужно запускать процедуру "Main". Из процедуры "Main" будет запускаться процедура "Procedure_1".
Код:
Sub Main()

    '1. Выделение цветом основной части документа.
    Call Procedure_1(ActiveDocument.Range)
    
    '2. Выделение цветом сносок, которые находятся в конце страницы.
    'Сначала смотрим, существуют ли сноски, чтобы не возникло ошибки.
    If ActiveDocument.Footnotes.Count > 0 Then
        Call Procedure_1(ActiveDocument.StoryRanges(wdFootnotesStory))
    End If
    
    '3. Выделение цветом концевых сносок.
    If ActiveDocument.Endnotes.Count > 0 Then
        Call Procedure_1(ActiveDocument.StoryRanges(wdEndnotesStory))
    End If
    
End Sub

Sub Procedure_1(myRange As Word.Range)
    
    With myRange.Find
        'Код получил с помощью макрорекорда.
        .LanguageID = wdGerman
        .Replacement.Font.Color = 6299648
        .Execute Replace:=wdReplaceAll
    End With
    
End Sub
Скрипт вне форума Ответить с цитированием
Старый 10.06.2013, 09:58   #8
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

спасибо, попробую!
а для раскраски "без проверки орфографии" куда Selection.Find.NoProofing вставить?
caute вне форума Ответить с цитированием
Старый 10.06.2013, 10:00   #9
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

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

все латинские слова в тексте помечены как "без проверки орфографии", чтобы Word их не подчеркивал как ошибочно написанные
там моем в тексте - scientia intuitiva, intuitiva cognitio, например
caute вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
раскраска DBCtrlGrid Lui C++ Builder 0 31.08.2012 02:41
раскраска графа PianeR Помощь студентам 0 11.11.2010 23:15
Раскраска диаграммы dayfuaim Microsoft Office Excel 8 22.08.2010 15:44
Раскраска эллипса rubik Мультимедиа в Delphi 1 02.05.2010 05:21
раскраска матрицы jeyjoe Помощь студентам 0 12.11.2009 18:49