在 Word 2007 中使用 VBA 与图形交互

在 Word 2007 中使用 VBA 与图形交互

我有一个很长的 MS Word 2007 文档,偶尔需要替换其中所有嵌入的图表。

这些变化足够简单且有规律,我可以编写一个 VBA 宏来帮我进行这些更新。

但是,我遇到了一个非常基本的问题:我甚至不知道如何在 VBA 中选择嵌入的图表。出于某种原因,Word 中的“记录宏”功能不会记录对图表的更改,并且所有在线教程都涉及在 Excel 中与图表的交互。

有人可以发布一些简短的示例代码(或解释链接)来展示与 Word 中嵌入图表的一些基本交互吗?

答案1

请查看 MSDN 博客中的这篇文章:PowerPoint 和 Word 中的 Office 图表对象模型

它需要 Office 2007 SP2。

答案2

这应该适用于嵌入图像(jpg 等)或嵌入图表:

'Kill 'em all: pictures, OLE object, hyperlinks, ActiveX controls, etc.
Sub DeleteAllShapes()
    Dim shp As InlineShape

    For Each shp In ActiveDocument.InlineShapes
        shp.Delete
    Next shp
End Sub

还有一个“Shape”对象(和 Shapes 集合),它更通用地引用所有形状 - 无论它们是否是内联的。形状可以是很多东西 - 使用 Type 属性返回内联形状的类型:图片、链接图片、嵌入的 OLE 对象、链接的 OLE 对象、ActiveX 控件等。如果您有许多不同的类型并且需要区分它们,您可以使用类似以下内容包围您的删除:

If shp.Type = wdInlineShapeEmbeddedOLEObject Then
    shp.Delete
End If

添加新图片的一种方法:

' Insert a picture at the current insertion point.
Sub InsertPicture(ByVal FileName As String)

    Selection.InlineShapes.AddPicture _
                             FileName:=FileName, _
                             SaveWithDocument:=True
End Sub

相关内容