2012-11-10 99 views
1

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

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

+0

可能是Word和Excel'选择'类型越来越搞砸了。尝试定义一个'Word.Selection'对象,并在当前设置'Selection'时设置它的变量。 –

+0

没有运气。相同的错误消息,对于两个粘贴代码。 – Milan

+0

嗯。你根本没有在你的代码中有[UserForm](http://support.microsoft.com/kb/230888),是吗?并且没有原始错误消息的信息 - 根本没有代码或文本? –

回答

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 
...