Тема: Снова удаление пробелов в таблицах
Здравствуйте!
Пытался слепить макрос из того, что смог найти на форуме (отсюда названия переменных и прочее), но не выходит.
Нужно удалить пробелы в начале и конце каждой ячейки каждой таблицы, вроде начинается нормально, а когда переходит на вторую таблицу, выдаёт ошибку "Запрашиваемый номер семейства не существует".
Вот текст, сильно не бейте, последний раз программировал на паскале в прошлом веке, синтаксиса ворд-бейсика практически не знаю
Предполагается, что перед этим был выполнен другой макрос, который удаляет пробелы до и после символа конца абзаца, так что пробелы остаются только в начале и конце ячеек таблицы.
Sub TrimCellText()
'Удаление пробелов до и после текста в ячейке таблицы
Dim opar As Paragraph
Set opar = ActiveDocument.Paragraphs.First 'надеюсь использовать это, чтобы определить конец документа
Dim oTbl As Table 'Таблица, в которой будем перебирать ячейки
With Selection
.WholeStory
.HomeKey Unit:=wdStory
Selection.HomeKey Unit:=wdStory
a = 0
Do Until opar Is Nothing 'надеюсь использовать это, чтобы определить конец документа и завершить выполнение,
'пока не проверял даже, может, достаточно будет завершить, когда счетчик а будет равен числу таблиц в документе
If Selection.Information(wdWithInTable) Then
a = a + 1
Dim xCell As Cell 'для перебора ячеек и выхода из таблицы
Set oTbl = ActiveDocument.Tables(a)
Set xCell = oTbl.Range.Cells(a)
Dim oCell As Cell
Set oCell = oTbl.Range.Cells(a)
'на следующей строчке выдаётся ошибка, когда начинается обработка второй таблицы
'с первой таблицей всё проходит на ура
For Each oCell In Selection.Tables(a).Range.Cells
oCell.Range.Text = Trim(Left(oCell.Range.Text, Len(oCell.Range.Text) - 2))
Next
Do Until xCell Is Nothing
Set xCell = xCell.Next 'Попытка вылезти из таблицы перебором ячеек
'уродство, знаю, а что делать? работает - не трогаю
If Not xCell Is Nothing Then Selection.MoveRight Unit:=wdCell, Count:=1, Extend:=wdMove Else: .MoveRight Unit:=wdWord, Count:=3
Loop
Else: .MoveRight Unit:=wdWord
End If
Set opar = opar.Next
Loop
End With
Selection.HomeKey Unit:=wdStory 'поехали в начало, нам ещё документ редактировать
End Sub