温馨提示:本文翻译自stackoverflow.com,查看原文请点击:vba - Change a style of a paragraph with picture
image ms-word vba

vba - 使用图片更改段落样式

发布于 2020-04-08 12:38:56

我正在努力解决以下问题。在文档中,我有许多嵌入式图片以及一些浮动图片。我想编写一个代码,以更改其中包含图片的段落的样式我们将此样式称为“图片”。唯一的问题是段落浮动图片,即那些图片周围带有文字的段落在这种情况下,我希望保持样式不变。

这是在Word中的外观示例。

在此处输入图片说明

到目前为止,我已经编写了这样的代码:

Sub ApplyPictureStyle()
Application.ScreenUpdating = False
Dim iShp As InlineShape
For Each iShp In ActiveDocument.InlineShapes
  With iShp
    If .Type = wdInlineShapePicture Then .Range.Style = "Picture"
  End With
Next
Application.ScreenUpdating = True
End Sub

正如我之前解释的那样,这样的代码将适用于所有图片。

是否可以重写此代码,使其适用于嵌入式图片,但同时省略浮动图片

查看更多

提问者
John Snow
被浏览
40
Timothy Rylatt 2020-02-02 01:29

浮动图片是不具有“与文本内联”的换行样式的图片。屏幕快照中的所有图片都是嵌入式图片。因此,要将不同的格式应用于这些图片,您需要确定该段落是仅包含图片还是图片加文字。

您可以通过使用该Len功能对段落文本中的字符进行计数来实现。即使图片包含替代文字,仅包含图片的段落也只能包含2个字符。

Sub ApplyPictureStyle()
  Application.ScreenUpdating = False
  Dim iShp As InlineShape
  For Each iShp In ActiveDocument.InlineShapes
    With iShp
      If .Type = wdInlineShapePicture Then
        If Len(.Range.Paragraphs(1).Range.Text) = 2 Then
          'paragraph only contains a picture
          .Range.style = "Picture"
        End If
      End If
    End With
  Next
  Application.ScreenUpdating = True
End Sub