VBA PowerPoint复制/粘贴不一致

时间:2013-03-25 13:09:27

标签: vba clipboard copy-paste powerpoint-vba

我编写了一个VBA脚本,通过一个PowerPoint(PRS_data)搜索标题匹配,然后将幻灯片复制到新的PowerPoint(PRS)。源上的幻灯片只是标题和图像。当复制一些幻灯片时,图像不会被转移,或者我得到一个带有红色X的盒子。

我正在使用PowerPoint 2007 SP3,因此红色X修补程序不是问题。

我也尝试过添加DoEvents和Sleep,但没有成功。

如果我在用户的屏幕上最大化目标窗口,它似乎可以工作,但如果它被最小化,我会得到零星的空白幻灯片。结果不一致。此外,我可以确认幻灯片 do 被复制,因为目标是一个空的演示文稿,并且它上面填充了只有正确标题的幻灯片。虽然结果不一致。

之前有人遇到过这个问题吗?

以下是代码:

For Each Sld In PRS_data.Slides
    If Sld.SlideIndex > 1 Then          
        If (Sld.Shapes.Title.TextFrame.TextRange.Text Like "*" & iDiv & " Division*") Then
            PRS_data.Slides.Range(Sld.SlideIndex).Cut
            PRS.Windows(1).Activate
            PRS.Slides.Paste
            DoEvents
        End If
    End If
Next

1 个答案:

答案 0 :(得分:2)

剪切或复制后,您无法立即执行粘贴。系统上的其他程序正在对剪切作出反应,因此剪贴板尚未可用。多年以前,你可能会从PowerPoint中获得“无法打开剪贴板”的错误,但不是它显然只是默默地失败了。

请注意,如果这是最终用户应用程序,并且他们有其他可运行剪贴板的应用程序,或者正在使用远程桌面,那么这些用户将讨厌您的程序。提供剪贴板是为了方便用户,而不是开发人员。

也就是说,你可以通过在CUT / COPY命令之后立即添加2秒的睡眠来完成这项工作。