1

Тема: Помогите с убрать незначащие пробелы

Столкнулся с задачей: нужно убрать пробелы в начале и в конце абзаца, а также в таблице, в каждой ячейке (если ячейка содержит пробел, то его тоже удалить). За одно нужно удалить двойные и более пробелы (это я уже у вас нашел, но хотелось бы чтобы и то и другое за один проход по тексту). Для удаления пробелов в начале и в конце абзацев текста (пока без таблиц):

Sub DelSpaceHomeEnd()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To ActiveDocument.Paragraphs.Count
If ActiveDocument.Paragraphs(i).Range = Chr(13) Then GoTo 100
If Not ActiveDocument.Paragraphs(i).Range.Information(wdWithInTable) Then
ActiveDocument.Paragraphs(i).Range = Trim(ActiveDocument.Paragraphs(i).Range)
End If
100
Next i
Application.ScreenUpdating = True
End Sub

Вроде бы работает, но при подходе к таблице строку перед таблицей добавляет в 1 ячейку таблицы. Подскажите, пожалуйста, где ошибка, а если не трудно, то и все решение данной задачи.
PS Извините за "к таблице...таблицей...в таблицу".)

Отредактировано EletsAdm (26.11.2010 08:53:53)

2

Re: Помогите с убрать незначащие пробелы

странно есть GoTo 100
а 100 без 100:
Вам вроде и таблица нужна, но нет прохода по ячейкам таблицы???
Эту строку
If ActiveDocument.Paragraphs(i).Range = Chr(13) Then
Написали бы так
If ActiveDocument.Paragraphs(i).Range <> Chr(13) Then
И Гото не понадобилось бы

Отредактировано Ципихович Эндрю (28.11.2010 13:11:10)

3

Re: Помогите с убрать незначащие пробелы

Если уж использовать Trim то вот:

Dim P As Paragraph
    
    For Each P In ActiveDocument.Paragraphs
        With P.Range
            If .Start < .End - 1 Then
                .MoveEnd wdCharacter, -1
                .Text = Trim(.Text)
            End If
        End With
    Next P

Учтите, что метод с Trim только для обычного текста. Например картинки будут повреждены.

Макросы под заказ и готовый пакет - mtdmacro.ru

4

Re: Помогите с убрать незначащие пробелы

Картинок в тексте не будет.

Огромное спасибо, Вождь!