VBA将msoChart粘贴到Powerpoint 2010中

时间:2015-04-21 08:45:55

标签: excel vba excel-vba powerpoint powerpoint-vba

嗨,我是第一次发布海报,

我正在尝试使用VBA将带有嵌入数据的msoChart对象粘贴到PowerPoint 2010中。 (在Excel 2010中创建的图表)。

我能找到的唯一示例涉及将图表链接到Excel文件或创建msoEmbeddedOLEObject。

如果我在PowerPoint 2010中手动粘贴,我会获得“嵌入工作簿”的粘贴选项。但是,在“特殊粘贴”手册中无法使用它。

所以看起来除了粘贴图表之外还需要一些东西。但我不确定那是什么或如何去做。

我试过的是

Sub PasteExample()
Dim Sld As Slide
Dim Shp As ShapeRange

    Set Sld = ActiveWindow.View.Slide

    '# This pastes clipboard content as a linked chart
    Set Shp = Sld.Shapes.Paste
End Sub

Sub PasteExample2()
Dim Sld As Slide
Dim Shp As ShapeRange

    Set Sld = ActiveWindow.View.Slide

    '# This option does not work, object is still linked
    'Set Shp = Sld.Shapes.PasteSpecial(DataType:=ppPasteDefault, Link:=msoFalse)

    '# This option does not work, object is still linked
    'Set Shp = Sld.Shapes.PasteSpecial(DataType:=ppPasteShape, Link:=msoFalse)

    '# I'm not after OLEObjects
    'Set Shp = Sld.Shapes.PasteSpecial(DataType:=ppPasteOLEObject, Link:=msoFalse)
End Sub

非常感谢你能否解释一下。

2 个答案:

答案 0 :(得分:0)

我们看不到你在复制什么以及怎么样,如果问题没有解决,请加入代码

以下是PpPasteDataType的成员,您可以在PowerPoint中使用PasteSpecial:

members of PpPasteDataType 通常,我使用该代码作为基础,它应该可以帮助您:

Sub Export_to_Ppt()
'
Dim Ppt As PowerPoint.Application, _
    Pres As PowerPoint.Presentation

Set Ppt = CreateObject("PowerPoint.Application")
Set Pres = Ppt.Presentations.Open("I:\Template DTC.potx")

Ppt.Visible = True

Sheets("Graph1").ActiveChart.ChartArea.Copy

Pres.Slides.Add Index:=Pres.Slides.Count + 1, Layout:=ppLayoutTitleOnly
'Pres.Slides(Pres.Slides.Count).Shapes.Paste
Pres.Slides(Pres.Slides.Count).Shapes.PasteSpecial DataType:=ppPasteEnhancedMetafile, Link:=False

Pres.Slides(Pres.Slides.Count).Shapes.Title.TextFrame.TextRange.Text = "Chart Title"


Pres.SaveAs _
    Filename:="I:\TestNaz.ppt", _
    FileFormat:=ppSaveAsOpenXMLPresentation

Set Ppt = Nothing
Set Pres = Nothing

End Sub

答案 1 :(得分:0)

我确实在另一种形式上找到了解决方案。 一旦图表在剪贴板中。

在PowerPoint 2010中执行以下行

    Application.CommandBars.ExecuteMso "PasteExcelChartDestinationTheme"

它给了我正在追求的东西。