Word 2010 VBA粘贴Excel图表对象

时间:2012-11-10 19:44:33

标签: vba charts ms-word word-vba

我有一些在Word 2003中开发的第三方代码,但它在Word 2010中不起作用。 代码应粘贴Excel.Chart对象并将其转换为内联形状。

Sub PasteChartAsInteractive(chart As Excel.chart)
Dim myShape As Shape

chart.ChartArea.Copy
Selection.Style = ActiveDocument.Styles("Normal")
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Selection.PasteAndFormat (wdChart)

Set myShape = Selection.Paragraphs(1).range.InlineShapes(1).ConvertToShape
myShape.ConvertToInlineShape
...

首先,PasteAndFormat行引发了一条空错误消息。

然后我尝试用

替换该行
Selection.PasteSpecial Link:=False, DataType:=wdPasteOLEObject, Placement _
    :=wdInLine, DisplayAsIcon:=False

它引发了另一个错误,说System Error &H80004005 (-2147467259). Unspecified error。但在这种情况下,图表实际上粘贴到Word中。

有人知道导致问题的原因以及应该如何解决问题吗?

TIA

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。 首先,我用PasteSpecial替换了PasteAndFormat。然后,由于错误没有意义,我试图忽略它。它奏效了!这是代码:

Sub PasteChartAsInteractive(chart As Excel.chart)
Dim myShape As Shape

chart.ChartArea.Copy
Selection.Style = ActiveDocument.Styles("Normal")
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
' Selection.PasteAndFormat (wdChart)
On Error Resume Next
Selection.PasteSpecial Link:=False, DataType:=wdPasteOLEObject, Placement _
    :=wdInLine, DisplayAsIcon:=False
Set myShape = Selection.Paragraphs(1).range.InlineShapes(1).ConvertToShape
myShape.ConvertToInlineShape
...