嗨,我是第一次发布海报,
我正在尝试使用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
非常感谢你能否解释一下。
答案 0 :(得分:0)
我们看不到你在复制什么以及怎么样,如果问题没有解决,请加入代码
以下是PpPasteDataType的成员,您可以在PowerPoint中使用PasteSpecial:
通常,我使用该代码作为基础,它应该可以帮助您:
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"
它给了我正在追求的东西。