简体   繁体   English

从Excel粘贴到PowerPoint中的VBA(和VB6)问题

[英]VBA (and VB6) issue in pasting from Excel to PowerPoint

I'm using this code for exporting Excel charts to PowerPoint 我正在使用此代码将Excel图表导出到PowerPoint

Sub ChartsToPresentation()

Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim PresentationFileName As Variant
Dim SlideCount As Long
Dim iCht As Integer

 Application.CutCopyMode = False
 Set PPApp = GetObject(, "Powerpoint.Application.16")
 Set PPSlide = PPApp.ActiveWindow.View.Slide
 nv = PPApp.ActiveWindow.Selection.SlideRange.SlideIndex

  ActiveChart.ChartArea.Select
  Selection.Copy

 ggg: Set shp =    PPApp.ActivePresentation.Slides(nv).Shapes.PasteSpecial(DataType:=0)
 If Err Then GoTo ggg
 Application.CutCopyMode = False
End Sub

As I'm invoking the sub for many different charts in a loop, I get often an error "Clipboard is empty or contains data which may not be pasted" . 当我在循环中为许多不同的图表调用sub时, 通常会收到错误消息“剪贴板为空或包含可能无法粘贴的数据” It looks as delay problem between the Copy and the paste. 它看起来像是复制和粘贴之间的延迟问题。

I'm using Win10 office 2016 64b 我正在使用Win10 Office 2016 64b

Is there a workaround? 有解决方法吗?

I've tried to do it with VB6 but looks the same problem 我试图用VB6做到这一点,但看起来还是一样的问题

Use ppPasteEnhancedMetafile = 2 or ppPasteShape = 11 or ppPasteJPG = 5 使用ppPasteEnhancedMetafile = 2ppPasteShape = 11ppPasteJPG = 5
as DataType for charts! 作为图表的数据类型!

Cleaned and improved code : 清理和改进的代码:

Sub ChartsToPresentation()
Dim PPApp As PowerPoint.Application
Dim PPSlide As PowerPoint.Slide

Application.CutCopyMode = False
Set PPApp = GetObject(, "Powerpoint.Application")
Set PPSlide = PPApp.ActiveWindow.View.Slide

ActiveChart.ChartArea.Copy
DoEvents
PPSlide.Shapes.PasteSpecial DataType:=ppPasteShape
Application.CutCopyMode = False
End Sub

Or take a pick : 或选择:

PpPasteDataType的成员

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM