删除使用VBA在word中添加书签的图表对象

时间:2013-09-18 11:12:56

标签: vba excel-vba ms-word excel-2010 word-vba

在作为初学者的VBA上做了这么多工作后,最终可以将图表从excel复制到Word到一个用word书签的位置。 但是,如果我想在刷新代码时替换相同位置的新图表,则不会删除单词中的旧图表,因此图表将添加到旧图表的顶部。

VBA代码中是否有任何功能可以帮助我删除旧图表并在相同的书签位置添加新图表?

下面是我在excel中编写的代码,用于将图表从excel复制到word。

Sub Bookmarkchart()
Application.ScreenUpdating = False
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set WordDoc = objWord.Documents.Open("F:\charts.doc")
Sheets("ToFilm").Activate
ActiveSheet.ChartObjects("Chart 2").Chart.CopyPicture _
Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
WordDoc.Bookmarks("testbookmark").Range.PasteSpecial Link:=False, _
DataType:=wdPasteMetafilePicture, Placement:=wdFloatOverText, _
DisplayAsIcon:=False
WordDoc.Close
Set WordDoc = Nothing
Set objWord = Nothing
Application.ScreenUpdating = True
End Sub

如何从word文件中删除图表并替换新图表。

1 个答案:

答案 0 :(得分:1)

您可以在粘贴单词后命名图片:

Selection.Name = "MyPic"

在代码的开头,您应该在粘贴新版本之前删除最新版本:

WordDoc.Shapes("MyPic").Delete

编辑:这是完整代码应该是什么样子。我没有对它进行测试,因此可能会有一两个错误需要解决。

Sub Bookmarkchart()
Application.ScreenUpdating = False
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set WordDoc = objWord.Documents.Open("F:\charts.doc")
On Error Resume Next
WordDoc.Shapes("MyPic").Delete
On Error Goto 0
Sheets("ToFilm").Activate
ActiveSheet.ChartObjects("Chart 2").Chart.CopyPicture _
Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
WordDoc.Bookmarks("testbookmark").Range.PasteSpecial Link:=False, _
DataType:=wdPasteMetafilePicture, Placement:=wdFloatOverText, _
DisplayAsIcon:=False
Selection.Name = "MyPic"
WordDoc.Close
Set WordDoc = Nothing
Set objWord = Nothing
Application.ScreenUpdating = True
End Sub