Я использую следующий макрос для итерации через Word Documents и удаления цвета из всех таблиц в них, за исключением первой таблицы.Word Macro для удаления цвета только из определенных ячеек таблицы
У нас есть документы, которые абсолютно не будут работать с полями формы из-за проблем защиты формы с приложением, которое автоматически заполняет эти документы полями слияния. Итак, следующая лучшая вещь - просто отметить, что еще нужно заполнить затенением, а затем удалить затенение перед печатью документа. Когда этот код выполняет итерацию через документ, он удаляет некоторые границы для определенных таблиц.
Я определенно не хочу этого, я просто хочу удалить затенение. Я понятия не имею, почему это делается, поэтому, если у кого-то есть понимание, это было бы очень полезно. Если нет, если бы я мог настроить этот макрос только для изменения ячеек с не-белым цветом фона, это тоже сработает.
Я пробовал несколько вариантов вложенного цикла, но не мог заставить его работать таким образом.
Sub decolordocument()
Dim tbl As Table
Dim first As Boolean
first = True
For Each tbl In ActiveDocument.Tables
If first Then
first = False
Else
tbl.Shading.BackgroundPatternColor = wdColorWhite
End If
Next
MsgBox "Shaded cells in tables have been updated."
End Sub
Я также попробовал этот код и получил тот же эффект границ удаляется:
Sub decolordocument()
Dim tbl As Table
Dim tblCount As Long
Dim i As Long
Dim first As Boolean
tblCount = ActiveDocument.Tables.Count
For i = 2 To tblCount
With ActiveDocument.Tables(i).Shading
.BackgroundPatternColor = wdColorWhite
End With
Next
MsgBox "Shaded cells in tables have been updated."
End Sub
EDIT: В то время как я все еще не могу увидеть, что конкретно делает эти таблицы теряют свои границы, я мы обнаружили, что разделение таблиц определенным образом заставляет их НЕ потерять свои границы. Я изо всех сил старался изолировать это без везения, поскольку кажется, что только некоторая комбинация вещей вызывает потерю границ. Однако, по крайней мере, у меня есть что-то, что работает. Если кто-либо может предоставить макрос, который будет выполнять итерацию через отдельные ячейки, как первоначально запрошено, вероятно, это не будет плохой вариант в заднем кармане.
Я думаю, что вы забудете «Закончить, если» перед «Следующим». пожалуйста, исправьте свой код – Saju
Нет, есть инструкция End If. –
ваша ошибка была исправлена @Siddharth Rout, пожалуйста, нажмите на ссылку после '' edit', чтобы увидеть изменения :) – Saju