【问题标题】:Apply a picture style to all pictures in a word document对word文档中的所有图片应用图片样式
【发布时间】:2020-07-03 14:03:33
【问题描述】:

是否有一种简单的方法可以主动或追溯地将“图片样式”应用于存储在 word 文档中的所有图像?

我想将“中心阴影矩形”图片样式应用于我添加到文档中的所有图像,而不是一一更改它们。

【问题讨论】:

  • 您当然可以遍历它们并对每个应用相同的代码(尽管对于内联和文本环绕的形状可能会有所不同)。

标签: vba ms-word ms-office


【解决方案1】:

图片风格的概念只存在于 UI 层面。要将其应用于图像,您必须检查 UI 中样式的属性并使用 VBA 将它们一一应用:

Sub FormatPictures()

    Dim oInlineShape As inlineShape
    For Each oInlineShape In ActiveDocument.InlineShapes
        ApplyPictureStyleToInlineShape oInlineShape
    Next

    Dim oShape As Shape
    For Each oShape In ActiveDocument.Shapes
        ApplyPictureStyleToShape oShape
    Next


End Sub

Sub ApplyPictureStyleToInlineShape(shape As inlineShape)

    ' borders
    shape.Borders.Enable = False

    ' fill
    shape.Fill.Visible = msoFalse

    ' line
    shape.Line.Visible = msoFalse

    ' shadow
    shape.Shadow.Style = msoShadowStyleOuterShadow
    shape.Shadow.Type = msoShadow21
    shape.Shadow.ForeColor = WdColor.wdColorBlack

    shape.Shadow.Transparency = 0.3
    shape.Shadow.Size = 100
    shape.Shadow.Blur = 15
    shape.Shadow.OffsetX = 0
    shape.Shadow.OffsetY = 0

    ' reflection
    shape.Reflection.Type = msoReflectionTypeNone

    ' glow
    shape.Glow.Radius = 0
    shape.SoftEdge.Radius = 0

End Sub

Sub ApplyPictureStyleToShape(shape As shape)

    ' fill
    shape.Fill.Visible = msoFalse

    ' line
    shape.Line.Visible = msoFalse

    ' shadow
    shape.Shadow.Style = msoShadowStyleOuterShadow
    shape.Shadow.Type = msoShadow21
    shape.Shadow.ForeColor = WdColor.wdColorBlack

    shape.Shadow.Transparency = 0.3
    shape.Shadow.Size = 100
    shape.Shadow.Blur = 15
    shape.Shadow.OffsetX = 0
    shape.Shadow.OffsetY = 0

    ' reflection
    shape.Reflection.Type = msoReflectionTypeNone

    ' glow
    shape.Glow.Radius = 0
    shape.SoftEdge.Radius = 0

End Sub

【讨论】:

  • 不错!这将起作用,除非 FormatPictures() 中存在轻微的错误/错字。这一行“对于 ActiveDocument.Shapes 中的每个形状”应更改为“对于 ActiveDocument.Shapes 中的每个 oShape”(前面有一个 'o' = oShape)
【解决方案2】:

刚刚受到你们(和其他人,所以谢谢大家!)的启发,并制作了我自己的宏来格式化带有单个边框(0.75 pt 宽度)和简单阴影偏移 3 pts 的选定粘贴图片...

我将该宏分配给一个图标,瞧!

一旦我粘贴了我的图像(其中大部分是系统程序和文档的屏幕截图)。

在 Word 2010 中运行良好。 我没有测试其他版本...


Sub FormatPictureWithLineAndShadow()
Dim oInlineShp As InlineShape
For Each oInlineShp In Selection.InlineShapes
    With oInlineShp
    'Line border
        With .Borders(wdBorderLeft)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth075pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderRight)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth075pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderTop)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth075pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderBottom)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth075pt
            .Color = wdColorAutomatic
        End With
        ' shadow
            .Shadow.Style = msoShadowStyleOuterShadow
            .Shadow.Type = msoShadow21
            .Shadow.ForeColor = WdColor.wdColorBlack
            .Shadow.Transparency = 0.6
            .Shadow.Size = 100
            .Shadow.Blur = 5
            .Shadow.OffsetX = 3
            .Shadow.OffsetY = 3
            ' reflection
            .Reflection.Type = msoReflectionTypeNone
            ' glow
            .Glow.Radius = 0
            .SoftEdge.Radius = 0
End With
    Next
End Sub

【讨论】:

  • 如果您预先选择了所有图像,这将非常有效。但是,如果文档中有图像,而您只想针对文档的所有图像而不是文本运行宏,该怎么办?是否可以调整宏以循环浏览文档中的所有图像并应用设置?
  • 添加更多信息:如果文档中有其他“类似图像”的对象,宏将失败,例如(在我的情况下)可能是水平规则(文档是一个 HTML 文档,其中包含
    内)。所以宏只需要对图像类型的对象起作用。就我而言,我删除了所有
    代码,并且宏运行良好。
猜你喜欢
  • 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
相关资源
最近更新 更多