VBA для word, сравнение столбов

Автор Посетитель 25.08.2024, 25 августа 2024, 19:00

Посетитель 25.08.2024

Макрос
Sub CompareColumns()
    Dim tbl As Table ' Объявляем переменную для таблицы
    Dim rowIndex As Integer
    Dim col3Text As String
    Dim col4Text As String
    Dim maxLength As Integer
    Dim i As Integer
    Dim charRange As Range
   
    ' Убедимся, что в документе есть хотя бы одна таблица
    If ActiveDocument.Tables.Count = 0 Then
        MsgBox "В документе нет таблиц."
        Exit Sub
    End If
   
    ' Установим ссылку на первую таблицу в документе
    Set tbl = ActiveDocument.Tables(1)
   
    ' Перебираем строки начиная со второй (исключаем заголовок)
    For rowIndex = 2 To tbl.Rows.Count
        col3Text = tbl.Cell(rowIndex, 3).Range.Text
        col4Text = tbl.Cell(rowIndex, 4).Range.Text
       
        ' Удаляем символы конца ячейки (например, символ окончания абзаца)
        col3Text = Left(col3Text, Len(col3Text) - 2)
        col4Text = Left(col4Text, Len(col4Text) - 2)
       
        ' Определяем максимальную длину для сравнения
        maxLength = Application.Max(Len(col3Text), Len(col4Text))
       
        ' Сравниваем тексты посимвольно
        For i = 1 To maxLength
            If Mid(col3Text, i, 1) <> Mid(col4Text, i, 1) Then
                ' Если символы разные, выделяем их в столбце 3
                If i <= Len(col3Text) Then
                    Set charRange = tbl.Cell(rowIndex, 3).Range
                    charRange.Start = charRange.Start + i - 1
                    charRange.End = charRange.Start + 1
                    charRange.Font.HighlightColorIndex = wdYellow ' Выделяем текст желтым цветом
                End If
               
                ' Если символы разные, выделяем их в столбце 4
                If i <= Len(col4Text) Then
                    Set charRange = tbl.Cell(rowIndex, 4).Range
                    charRange.Start = charRange.Start + i - 1
                    charRange.End = charRange.Start + 1
                    charRange.Font.HighlightColorIndex = wdYellow ' Выделяем текст желтым цветом
                End If
            End If
        Next i
    Next rowIndex
   
    MsgBox "Сравнение завершено!"
End Sub
[свернуть]
постоянно ругается Method or data member not found

Администратор

Написал вам два письма на почту с заголовком "Письмо с Форума по VBA и MS Office". Написал именно на почту, а не на форум.

В Ворде, у объекта Application нет инструмента Max.
Запустите внутри вашего макроса Эксель и используйте функцию Max, которая находится в Экселе.