【问题标题】:VBA (and VB6) issue in pasting from Excel to PowerPoint从 Excel 粘贴到 PowerPoint 时出现 VBA(和 VB6)问题
【发布时间】:2017-07-07 00:33:04
【问题描述】:

我正在使用此代码将 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

当我在一个循环中为许多不同的图表调用 sub 时,我经常收到一个错误 “剪贴板为空或包含可能无法粘贴的数据” .它看起来是复制和粘贴之间的延迟问题。

我用的是Win10 office 2016 64b

有解决办法吗?

我试过用 VB6 做,但看起来同样的问题

【问题讨论】:

    标签: vba excel vb6 powerpoint


    【解决方案1】:

    使用ppPasteEnhancedMetafile = 2ppPasteShape = 11ppPasteJPG = 5
    作为图表的数据类型!

    清理和改进的代码:

    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
    

    或者选择一个:

    【讨论】:

    • @user3387046 :我进行了编辑以包含其他可能性。
    • 仍然很不稳定。可能是Office的64B造成的?
    • @user3387046:不稳定怎么办?不,Office的版本应该没有问题。
    • PowerPoint 在使用 datatype:=0 粘贴时随机崩溃
    • @user3387046 :试试ppPasteShape = 11
    猜你喜欢
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多