Top.Mail.Ru
Ответы

Макрос в ворде

Задача разработать макросы, которые производят
Поиск суммы всех слов в документе, являющихся числами
Модификацию всех слов, содержащих "у" - сделать их зелёными, начертание полужирным

По дате
По Рейтингу
Аватар пользователя
Профи
2мес

1. Макрос для поиска суммы всех числовых слов

Sub SumAllNumberWords()
Dim doc As Document
Dim rng As Range
Dim word As Variant
Dim totalSum As Double
Dim isNumber As Boolean
Dim i As Integer

Set doc = ActiveDocument
totalSum = 0

For Each rng In doc.Words
' Убираем лишние символы (пробелы, знаки пунктуации)
word = Trim(rng.Text)
word = Replace(word, Chr(13), "") ' удаляем символы возврата каретки
word = Replace(word, Chr(7), "") ' удаляем символы табуляции
word = Replace(word, ",", ".") ' заменяем запятые на точки для десятичных чисел

' Проверяем, является ли слово числом
isNumber = False
If Len(word) > 0 Then
isNumber = True
For i = 1 To Len(word)
If Not (Mid(word, i, 1) Like "[0-9]") And Not (Mid(word, i, 1) = ".") Then
isNumber = False
Exit For
End If
Next i

' Если это число, добавляем к сумме
If isNumber Then
On Error Resume Next ' на случай ошибок преобразования
totalSum = totalSum + CDbl(word)
On Error GoTo 0
End If
End If
Next rng

' Выводим результат
MsgBox "Сумма всех чисел в документе: " & totalSum, vbInformation, "Результат"
End Sub

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

2. Макрос для модификации слов, содержащих "у" или "У"

Sub FormatWordsWithU()
Dim doc As Document
Dim rng As Range
Dim word As Variant
Dim containsU As Boolean
Dim i As Integer

Set doc = ActiveDocument

For Each rng In doc.Words
' Проверяем, содержит ли слово букву "у" или "У"
containsU = False
word = rng.Text

For i = 1 To Len(word)
If Mid(word, i, 1) = "у" Or Mid(word, i, 1) = "У" Then
containsU = True
Exit For
End If
Next i

' Если содержит, применяем форматирование
If containsU Then
With rng.Font
.Color = RGB(0, 128, 0) ' Зеленый цвет
.Bold = True ' Полужирный
End With
End If
Next rng

MsgBox "Форматирование слов с буквой 'у' завершено!", vbInformation, "Готово"
End Sub

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\