Автор Тема: Word VBA: Как подсчитать статистику в фрагменах, выделенных цветом?  (Прочитано 1000 раз)

jfd

  • Гость
Добрый день,
Подскажите пожалуйста, в какую сторону копать? Некоторые фрагменты текста выделены цветом (выделение стандартное - Selection.HighlightColorIndex = wdTurquoise). Надо получить статистику (кол-во знаков с пробелами) в выделенных фрагментах. Все фрагменты выделены одним цветом.

[вложение удалено администратором]

Оффлайн Администратор

  • Administrator
  • Сообщений: 1939
Макрос работает во всём файле (а не в выделенном фрагменте). Этот макрос не учитывает конкретный цвет, а работает со всеми цветами. Макрос считает символы и пробелы.

Макрос
Sub Main()

    Dim rng As Range, fnd As Find, lngStatistic As Long, lngPrevPos As Long
   
   
    '1. Создание объектов, которые будут искать цветовое выделение.
    Set rng = ActiveDocument.Range(0, 0)
    Set fnd = rng.Find
   
    '2. Настройка поиска.
    fnd.Highlight = True
   
    '3. Подготовка переменной к работе. Запись в неё отрицательного числа.
        ' Искомый фрагмент может быть в начале файла, поэтому на ноль нельзя ориентироваться.
    lngPrevPos = -1
   
    '4. Поиск и подсчёт.
    Do
        ' Поиск.
        If fnd.Execute = False Then
            Exit Do
        End If
        ' Проверка, что этот фрагмент ещё не был найден: если в некоторых таблицах (не во всех) есть выделение цветом,
            ' то происходит зацикливание.
        If rng.Start = lngPrevPos Then
            Exit Do
        End If
        ' Запоминаем, где найдено.
        lngPrevPos = rng.Start
        ' Подсчёт статистики.
        lngStatistic = lngStatistic + rng.Characters.Count
    Loop
   
    '5. Сообщение.
    MsgBox "Статистика: " & lngStatistic, vbInformation

End Sub

jfd

  • Гость