Excel 删除已添加书签的图表对象

Excel 删除已添加书签的图表对象,excel,vba,ms-word,excel-2010,Excel,Vba,Ms Word,Excel 2010,初学者在VBA上做了大量工作后,终于可以将图表从excel复制到Word中的某个位置,并在Word中添加书签。 但是,如果我想在刷新代码时替换同一位置的新图表,word中的旧图表不会被删除,因此该图表将添加到旧图表的顶部 VBA代码中是否有任何功能可以帮助我删除旧图表并在相同的书签位置添加新图表 下面是我在excel中编写的代码,用于将图表从excel复制到word Sub Bookmarkchart() Application.ScreenUpdating = False Set objWor

初学者在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文件中删除图表并替换新图表。

粘贴到word后,您可以命名图片:

Selection.Name = "MyPic"
在代码的开头,您应该先删除最新版本,然后再粘贴新版本:

WordDoc.Shapes("MyPic").Delete
编辑:下面是完整代码的样子。我还没有测试过,所以可能有一两个bug需要解决

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

+1.不确定Word是否允许重复形状名称(PowerPoint允许,Excel我认为不在工作表范围内,但在工作簿范围内允许)。如果是这样,并且您正在处理大量项目,那么最好生成一个大的十六进制字符串作为唯一ID。Word允许重复形状名称,事实上,它不在乎您如何命名它们。重要的是形状的ID。。。请看我的发现。嗨,Patrick,david和Aardvark感谢大家对我的帖子发表评论,因为我对VBA有一点了解,有谁能建议我在上面的代码中进行修改,以删除旧形状(即图表)并在文档中添加新图表,@Aardvark-我理解你代码的流程,但我无法将代码放入上述代码中..请帮助我添加code@aardvark123当我使用f8键执行时,光标停在下面的代码行WordDoc.Bookmarks(“test”).Range.PasteSpecial链接:=False,u数据类型:=wdPasteMetafilePicture,位置:=wdFloatOverText,_uDisplayAsicon:=False并引发错误“运行时错误'5342'-指定的数据类型不可用”。请让我知道这是由于位置:=wdfloatovertest问题,它应该更改为wdInline吗?我复制了lifeinvba的脚本,并以相同的错误5342结束。我想知道这是否可能是剪贴板的问题,在尝试将图片粘贴到Word之前没有时间获取图片?脚本复制图片“图表2”,但似乎根本无法粘贴它(wdPasteMetafilePicture)。