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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2013, 20:24   #11
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

попробуйте макрос в документе
Вложения
Тип файла: zip de2.zip (22.0 Кб, 8 просмотров)
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 30.05.2013, 20:35   #12
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

caute, какой у вас сейчас вопрос?
Скрипт вне форума Ответить с цитированием
Старый 30.05.2013, 20:38   #13
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

shanemac51, выделяет всё, что в кавычках или просто шевелится
иногда добавляет курсив без спросу

Скрипт
чем заменить
Options.DefaultHighlightColorIndex = wdBlue
чтоб красился синим шрифт, без подсветки фона (хайлайта)?

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

caute, а код из сообщения #9 что делает не так?

Вот внёс изменения в двух местах:
Код:
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.Font.ColorIndex = wdBlue
            
            'Перемещаем закладку в конец найденного фрагмента,
                'чтобы продолжить дальше поиск по документу.
            myBookmark.Collapse Direction:=wdCollapseEnd
            
        Loop
        
    Next i


'-----------------------------------------------------------------------------------------------------
    '6. ПОИСК НЕМЕЦКИХ СЛОВ ПО АРТИКЛЯМ.
    
    '6.1. Устанавливаем закладку в начало документа.
    myBookmark.SetRange Start:=0, End:=0
    
    
    '6.2. Делаем настройки в объекте "Find".
    '6.2.1. Буду использовать подстановочные знаки.
    myFind.MatchWildcards = True
    
    '6.2.2. Заменять на немецкий язык будем с помощью команды "Find".
    myFind.Replacement.LanguageID = wdGerman
    
    '6.2.3. Выделять цветом будем с помощью команды "Find".
    myFind.Replacement.Font.ColorIndex = wdBlue
    
    
    'В цикле с "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 в 21:04.
Скрипт вне форума Ответить с цитированием
Старый 30.05.2013, 21:47   #15
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

теперь всё как надо! спасибо, супер
добавил в код еще артиклей и пр.
по комментам в вашем коде так, глядишь, и на программиста выучусь
caute вне форума Ответить с цитированием
Старый 30.05.2013, 21:48   #16
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

с курсивом перестаралась
Код:
Sub a__de_en_130530_2119()
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find.Replacement.Font
  ''.Italic = True
  .Color = wdColorRed
 End With
 With Selection.Find
  .Text = "\" & ChrW(8220) & "*\" & ChrW(8221)
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindContinue
  .Format = True
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = True
 End With
 Selection.Find.Execute Replace:=wdReplaceAll
''''''''''''''''''''''''''
'
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find.Replacement.Font
  ''.Italic = True
  .Color = wdColorRed
 End With
 With Selection.Find
  .Text = "\(*\)"
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindContinue
  .Format = True
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = True
 End With
 Selection.Find.Execute Replace:=wdReplaceAll
 ActiveWindow.ActivePane.VerticalPercentScrolled = 67
End Sub
Вложения
Тип файла: zip de3.zip (14.8 Кб, 6 просмотров)
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 30.05.2013, 21:59   #17
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

shanemac51, штука в том, что по тексту много английских цитат в кавычках, а их красить не надо, да и нем. язык ваш макрос не задает покрашенным словам.
По сути, макрос Скрипта решает задачу с максимально возможным эффектом. Дальнейшая автоматизация, насколько я вижу, может идти только по линии добавления предлогов и пр. ходовых немецких слов, отсутствующих в английском языке. Это я осилил.
caute вне форума Ответить с цитированием
Старый 30.05.2013, 22:06   #18
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

чисто немецкая фраза
“die tätige Seite abstrakt im Gegensatz zu dem Materialismus von dem Idealismus”
Скриптом не выделяется

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

просмотрела я текст по-внимательнее

невозможно надедно опираться ни на кавычки, ни на скобки , ни на умлауты
-------------
полная смесь


если только выделить по кавычкам-скобкам
--найти в выделении умлаут
--при нахождении --закрасить

попытаюсь найти умлаут вне кавычек-скобок
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 30.05.2013, 22:37   #20
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

не мучьтесь, милая shanemac51, я уже перекрасил все файлы, завтра закончу дело
когда еще такая работа в таком объеме свалится
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