我有一个很长的 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