【问题标题】:Change a style of a paragraph with picture用图片改变段落的样式
【发布时间】:2020-05-17 17:13:29
【问题描述】:

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

这是 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

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

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

【问题讨论】:

  • 从问题中的图像不清楚代码在什么情况下会影响错误的段落。我们看不到内联形状与形状的位置。我们是否假设某些段落既有内联形状又有形状的锚点?
  • 查看您问题中的屏幕截图,我怀疑所有图片都是内联形状。内联形状是一种格式化为内联环绕类型的形状。您的代码仅适用于该类型的形状。我怀疑您实际上想要做的是将样式应用于仅包含内联图片而没有文本的段落。对吗?
  • @CindyMeister 你能告诉我内联形状和形状锚点有什么区别吗?所有图片都是简单插入: - 第一张只是段落中的图片。 - 第二个是段落中的文字中的图片。您如何区分 VBA 中的这两种情况?
  • 我同意蒂莫西的观点,这些看起来像是内联的。当图片与文本内联时,它们的位置受段落格式的影响,段落中的图片本身没有区别特征,使其与周围有文本的图片不同。所以你的代码必须找到每张图片,然后测试之前或之后是否有文本,然后应用任何段落格式。
  • 如果你有浮动图片,那么它们将锚定到一个段落,但段落格式只会间接影响图片(即如果它相对于段落定位,它会在段落时移动确实)。

标签: vba image ms-word


【解决方案1】:

浮动图片是没有“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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多