Vba 将边框应用于InlineShape将应用于它所在的表,而不是图像

Vba 将边框应用于InlineShape将应用于它所在的表,而不是图像,vba,ms-word,border,Vba,Ms Word,Border,所以我有一些InlineShapes,它们驻留在WORD中的表中。我试图获取表格第三列中的所有InlineShapes,并在其周围应用边框。不幸的是,在我的一生中,我不知道如何将它应用于图片而不是表格的单元格 这是我的密码: ActiveDocument.Tables(1).Columns(3).Select For Each iPicture In Selection.InlineShapes With iPicture .Borders.Enable = True

所以我有一些InlineShapes,它们驻留在WORD中的表中。我试图获取表格第三列中的所有InlineShapes,并在其周围应用边框。不幸的是,在我的一生中,我不知道如何将它应用于图片而不是表格的单元格

这是我的密码:

ActiveDocument.Tables(1).Columns(3).Select

For Each iPicture In Selection.InlineShapes
    With iPicture
        .Borders.Enable = True
        .Borders.OutsideColor = wdColorRed
        .Borders.OutsideLineWidth = wdLineWidth150pt
        .Borders.OutsideLineStyle = wdLineStyleSingle
    End With
Next
我还尝试使用iPicture将以下代码放入
中,但似乎没有什么不同,仍然在单元格周围绘制边框,而不是图片

With .Borders(wdBorderLeft)
    .LineStyle = wdLineStyleSingle
    .LineWidth = wdLineWidth150pt
    .Color = wdColorRed
End With

With .Borders(wdBorderRight)
    .LineStyle = wdLineStyleSingle
    .LineWidth = wdLineWidth150pt
    .Color = wdColorRed
End With

With .Borders(wdBorderTop)
    .LineStyle = wdLineStyleSingle
    .LineWidth = wdLineWidth150pt
    .Color = wdColorRed
End With

With .Borders(wdBorderBottom)
    .LineStyle = wdLineStyleSingle
    .LineWidth = wdLineWidth150pt
    .Color = wdColorRed
End With

我的测试没有结果。有些物体有边界;在其他情况下,边界应用于单元格

但是,在所有后一种情况下,如果我在对象后放置了一个空格(在单元格的末尾),则边界应用正确

因此,我怀疑它与单元格末尾的隐藏段落标记有关,该标记有时会被
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
Sub-BorderInlineShapes()
模糊选择作为单词。选择
将ils设置为Word.InlineShape
作为单词范围的Dim rng
淡色如长
作为Word.Table的Dim tbl
设置sel=选择
如果sel.Tables.Count=1,则
设置tbl=选择表(1)
colNr=选择信息(wdEndOfRangeColumnNumber)
对于每个ils,选择线性形状
如果不是ils.Borders.Enable,则ils.Borders.Enable=True
如果ils.Range.Cells.Count>0,则
设置rng=ils.范围

If rng.Cells(1).Range.Characters.Count感谢Cindy的所有测试。我尝试了您的解决方案,在图片之前或之后添加了一个空格,它开始在图片周围放置边框,而不是按预期放置单元格。