Подтвердить что ты не робот

Word VBA - Ликвидация плавающих таблиц объектов

У меня есть тонна документов Word с несколько "поврежденными" таблицами. Я смог автоматизировать большую часть процесса ремонта, но одна проблема по-прежнему находится вне меня.

Многие из таблиц являются плавающими объектами - когда я показываю скрытые метки форматирования, я вижу привязку к таблице. Я не могу оставить документы таким образом, мне нужно сделать все в порядке.

У меня есть сегмент кода, который "исправляет" это, но я не думаю, что это хорошее решение. Изменив перенос текста с "Нет" (по умолчанию - что я хочу, чтобы он был) на "Вокруг" и обратно на "Нет", это фиксируется. Код:

Selection.Tables(1).Rows.WrapAroundText = True
Selection.Tables(1).Rows.WrapAroundText = False

Я уверен, что есть лучший способ сделать это. Кто-нибудь знает что-то, что будет работать? Спасибо!

4b9b3361

Ответ 1

Я понятия не имею, почему flapping флаг WrapAroundText решает вашу проблему, VBA имеет много таких причуд.

Автоматизация этого метода ко всем таблицам в документе довольно проста:

Dim i as Integer
For i=1 to Len(ActiveDocument.Tables)
  ActiveDocument.Tables(i).Rows.WrapAroundText = True
  ActiveDocument.Tables(i).Rows.WrapAroundText = False
Next i

Ответ 2

Можете ли вы опубликовать образец документа для загрузки, который поврежден? Услышав, что вы нашли якорь, символ новой строки в Word, я бы это лучший способ сделать это.

Кажется, что ваш код смотрит на каждую таблицу, когда вы ее выбираете, или как ваш код выбирает ее (?).

Добавьте это в свой код, чтобы исправить любую потенциальную проблему.

For Each Table In Selection.Tables
    If Table.Rows.WrapAroundText = True Then
        Table.Rows.WrapAroundText = True
        Table.Rows.WrapAroundText = False
    End If
Next