Мои тесты были безрезультатными. Некоторые объекты получили границы; с другими границы были применены к ячейке.
Однако во всех последних случаях, если я поместил пробел после объекта (в конце ячейки), граница была применена правильно.
Поэтому я подозреваю, что это как-то связано с меткой скрытого абзаца в конце ячейки, которая иногда каким-то образом попадает в объект InlineShape
.
В следующем примере кода добавляется пробел после каждого InlineShape
, если количество символов в ячейке меньше или равно двум (содержит только InlineShape
и маркер конца ячейки).
Вставка пробела сворачивает выделение , Поэтому таблица и выбранный столбец отмечаются в начале, и этот столбец повторно выбирается после этого действия. Если для вас проблема с пробелом, добавьте проходящий код и удалите его после создания границ.
Sub BorderInlineShapes()
Dim sel As Word.Selection
Dim ils As Word.InlineShape
Dim rng As Word.Range
Dim colNr As Long
Dim tbl As Word.Table
Set sel = Selection
If sel.Tables.Count = 1 Then
Set tbl = sel.Tables(1)
colNr = sel.Information(wdEndOfRangeColumnNumber)
For Each ils In sel.InlineShapes
If Not ils.Borders.Enable Then ils.Borders.Enable = True
If ils.Range.Cells.Count > 0 Then
Set rng = ils.Range
If rng.Cells(1).Range.Characters.Count <= 2 Then
rng.InsertAfter " "
tbl.Columns(colNr).Select
End If
End If
ils.Borders.OutsideColor = wdColorRed
ils.Borders.OutsideLineWidth = wdLineWidth075pt
Next
End If
End Sub