0

作为一个初学者,经过这么多的VBA工作,终于可以将图表从excel复制到Word到一个用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 文件中删除图表并替换新图表。

4

1 回答 1

1

您可以在word中粘贴后为图片命名:

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
于 2013-09-18T12:48:07.610 回答