【发布时间】:2016-08-05 02:55:08
【问题描述】:
我正在尝试将 Excel 图表复制到 Word。我在 Excel 中有以下脚本,它适用于 PC 版 Office 2003 和 Office Mac 2011。在更高版本的 Office (2016) 中,图表在粘贴时不会调整大小,并且它搜索的标记不会被图表替换为它在早期版本中。这是有效但不适用于更高版本的 Office 的脚本。任何帮助将不胜感激。
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Set wrd = CreateObject("Word.Application")
wrd.Documents(DocumentName).Activate
wrd.Selection.Find.ClearFormatting
With wrd.Selection.Find
.Text = "insert" & ChartName 'This is the token it is looking for in the Word document and is where the chart should be inserted.
.Replacement.Text = ""
.Forward = True
.Wrap = 1 'wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
If .Found = True Then
wrd.Selection.PasteAndFormat Type:=13 'wdChartPicture
End If
在早期版本的 Office 中,此脚本通过查找标记并将其粘贴来获取活动图表并将其复制并粘贴到 Word 中。标记被图表替换并且图表被调整大小。在较新的版本中,标记保留在图表的底部,并且图表没有调整大小。
如果无法弄清楚为什么它不起作用,是否可以编写代码以强制它在所有版本的 Office 中工作?我试图确保所有偏好都相同,但我可能错过了一些可能导致问题的偏好。任何想法都将不胜感激,因为这对我来说是一个相当大的问题。
【问题讨论】:
-
单步执行此代码时,是否满足
.Found = True条件? -
如果是这样,我会查看
ExecuteMSO方法(here 是一个类似的问题,将单元格范围从 Excel 复制到 Word),这里是 a few more,主要是从 Excel 到 PowerPoint,但是大体思路是一样的,你只需要确定调用哪个动词,那应该是最可靠的。 -
.found 条件确实为真。我尝试用 wrd.CommandBars.ExecuteMso “PasteasPicture” 替换行 wrd.selection.pasteandformat Type:=13 并收到一条错误消息,提示“对象不支持此属性或方法”
-
注意,我正在使用 Office 2011 在我的 Mac 上对此进行测试。一旦我知道我的更改在此版本上有效,我将在较新的版本上进行测试。
-
我知道这应该适用于 Excel 2010+,但我不了解 Mac。如果 ExecuteMso 不起作用,我会感到惊讶,再说一遍,它是 Mac,它们不必要地限制了 vba 中的一些东西......
标签: excel vba charts ms-word copy-paste