Word宏 遍历所有图片的下一个内容如果没有标点符号,修改为无间隔样式
时间: 2024-03-13 15:46:47 浏览: 25
您可以使用下面的宏来遍历文档中的所有图片,并将图片下面的内容的样式更改为无间隔样式。
```
Sub ChangeImageCaptionStyle()
Dim pic As InlineShape
Dim para As Paragraph
For Each pic In ActiveDocument.InlineShapes
If pic.Type = wdInlineShapePicture Then
Set para = pic.Range.Paragraphs(1).Next()
Do While Not para Is Nothing And para.Range.Characters.Count > 1
If Not IsPunctuation(para.Range.Characters(1)) Then
para.Range.Style = "No Spacing"
End If
Set para = para.Next()
Loop
End If
Next pic
End Sub
Function IsPunctuation(ch As Variant) As Boolean
If ch Like "[,.;:!?]" Or Asc(ch) = 8212 Then
IsPunctuation = True
Else
IsPunctuation = False
End If
End Function
```
该宏首先遍历文档中的所有内联形状,如果形状是图片,则找到该图片下面的第一个段落,并逐个遍历它们,如果第一个字符不是标点符号,则将该段落的样式更改为无间隔样式。
请注意,该宏假定标点符号是逗号、句号、分号、冒号、感叹号和问号,以及短划线。如果您需要考虑其他标点符号,请相应地修改 `IsPunctuation` 函数。