Изменить стиль абзаца с рисунком - PullRequest
0 голосов
/ 01 февраля 2020

Я борюсь со следующей проблемой. В документе у меня много встроенных картинок, а также несколько плавающих картинок. Я хотел бы написать код, который меняет стиль абзаца, в который включена картинка . Давайте назовем этот стиль "картина". Единственная проблема - параграфы с плавающими картинками , т. Е. Те, у которых есть картинка с текстом вокруг. В этом случае я бы хотел оставить стиль без изменений.

Вот пример того, как он выглядит в Word.

enter image description here

Я уже написал такой код:

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

Как я объяснял ранее, такой код будет работать для всех изображений.

Можно ли переписать этот код, чтобы он работал для встроенные картинки, но пропускает плавающие картинки одновременно?

1 Ответ

1 голос
/ 01 февраля 2020

Плавающее изображение - это изображение, которое не имеет стиля переноса «Inline with Text». Все картинки на скриншоте являются встроенными картинками. Таким образом, чтобы применить различное форматирование к этим изображениям, вам необходимо определить, содержит ли абзац только изображение или изображение с текстом.

Это можно сделать с помощью функции 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
...