使用VBA删除用文字标记为书签的图表对象

问题描述 投票:0回答:1

作为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文件中删除图表并替换新图表。

vba excel-vba ms-word excel-2010 word-vba
1个回答
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

0
投票

我复制了lifeinvba的脚本,并出现了相同的错误5342。我想知道剪贴板是否有问题,在尝试将其粘贴到Word中之前没有时间获取图片?该脚本复制了图片“图表2”,但似乎根本无法粘贴它(wdPasteMetafilePicture)。

© www.soinside.com 2019 - 2024. All rights reserved.